Skip to content

Releases: FuelLabs/fuel-vm

v0.66.3

16 Apr 20:48
814c6fe

Choose a tag to compare

What's Changed

Full Changelog: v0.66.2...v0.66.3

v0.66.2

23 Mar 21:18
27b88ed

Choose a tag to compare

What's Changed

Full Changelog: v0.66.1...v0.66.2

v0.66.1

12 Mar 20:32
436ac89

Choose a tag to compare

What's Changed

Full Changelog: v0.66.0...v0.66.1

v0.66.0

12 Mar 00:14
173cc9c

Choose a tag to compare

Version v0.66.0

Breaking

  • 982: Adds immediate offset operand to SRW instruction. Binary backwards compatibility is retained, as the field was previously required to be zeroed.
    Reworked StorageRead to include the full size of the storage value when it succeeds, and a typed error when it fails due to a caller-handleble reason.
  • 992: Bumped rust version to 1.93.
  • 996: Removed bulk storage methods from InterpreterStorage. Changed remove range to not return the status.

Added

  • 976: Add a test case showing minted tokens can be transferred out using tro instruction
  • 982: New storage opcodes SCLR, SRDD, SRDI, SWRD, SWRI, SUPD, SUPI and SPLD that allow working with variably-sized storage slots.
  • 989: Dynamic storage opcodes now charge gas properly for new bytes written.
  • 988: New ID function exports to TypeScript WASM target.

Changed

  • 977: Use more accurate names for instruction constructor parameters in fuel-asm
  • 980: Use fuel-core storage implementations for memory storage
  • 982: SRW instruction now allows and offset argument. All existing storage operations are internally changed to function with variably sized slots, maintaining full backwards compatibility.
  • 990: Refactor: Use saturating_add instead of erroring in inc_pc
  • 994: Optimization: Leverage ggas >= cgas invariant in gas charging.
  • 995: Optimization: Delay opcode parsing until absolutely necessary
  • 996: Introduce a storage slot cache and split storage read costs into storage_read_cold (first access, fetches from backing storage) and storage_read_hot (cache hit). All storage opcodes now charge these semantic costs instead of per-opcode flat rates. The cache is keyed by (ContractId, slot), is write-through, and persists across contract calls.

What's Changed

New Contributors

Full Changelog: v0.65.0...v0.66.0

v0.65.0

17 Oct 08:23
5b32221

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.64.0...v0.65.0

v0.64.0

03 Oct 14:04
9c44bef

Choose a tag to compare

Version 0.64.0

Breaking

  • 971: All Vec<u8> fields in the transaction now use Bytes type. This type has truncated Debug string, and has optimized serialization and deserialization for postcard and binacode encodings. The new encoding is compatible(was tested) for serde_json, bincode, postcard.
    StateTransition and StateTransitionRef now contains Verifier generic from the VM.
  • 972: A new policy has been added to track the owner of the transaction. Serialization and deserialization should now support a new variant to decode a new policy.

Added

  • 971: Added a new into_transact method for the Interpreter to return StateTransition with receipts. It allows caller to avoid cloning of receipts which can be critical in some scenarios.
    Added benchmarks for Bytes type to show serialization and deserialization performance.
  • 972: Added a new Owner policy. The policy stores the index of the transaction input, which is nominated as the owner. In the case of multiple inputs with different owners, it helps to identify the owner of the transaction.
    Added a new GM::GetOwner opcode, which retrieves the owner of the transaction. If the Owner policy is set, the opcode returns a pointer to the owner from the policy. If policy is not set, but all inputs have the same owner, it returns the pointer to the owner. Otherwise, it panics with OwnerIsUnknown.

Fixed

  • 971: Increased performance of the postcard bytes serialization and deserialization in 40 times.
    Increased performance of the canonical bytes deserialization in 200 times.
    Contract::id method now a static function, instead of the method of the instance.
    Remove impl TryFrom<&Create> for Contract implementation for the Create transaction. Instead, use Create::bytecode to get the contract bytecode.
    Removed AsFieldFmt trait and its implementations. Bytes type truncates its Debug output by default.
    Optimized interactions with Create transaction to avoid unnecessary cloning of the bytecode.

What's Changed

Full Changelog: v0.63.0...v0.64.0

v0.63.0

27 Aug 11:41
c7e330c

Choose a tag to compare

What's Changed

Full Changelog: v0.62.0...v0.63.0

v0.62.0

21 May 18:02
bf3793b

Choose a tag to compare

What's Changed

Full Changelog: v0.61.0...v0.62.0

v0.61.1

07 May 19:33
0cfdc2d

Choose a tag to compare

Version 0.61.1

Added

  • 953: feat: Expose SubAssetId in fuel-tx

What's Changed

Full Changelog: v0.61.0...v0.61.1

v0.61.0

06 May 18:48
60e1228

Choose a tag to compare

Version 0.61.0

Breaking

  • 778: Add SubAssetId newtype that's used instead of Bytes32.
  • 933: Don't perform balance update if the change is zero
  • 934: Add input_index of the failed predicate to CheckError::PredicateVerificationFailed.
  • 935: Bump Rust version to 1.85.0.
  • 936: Update Rust edition to 2024.
  • 938: Rename update method to insert on sparse merkle tree, and allow inserting empty values.

Added

  • 899: Add a feature that propose u32 tx_pointer instead of u16 in fuel-tx and fuel-vm.
  • 939: Add new GetGasPrice GM opcode argument

Changed

  • 913: Change the way we are building the changelog to avoids conflicts.

Fixed

  • 940: Zero out heap memory when reallocating after reset.

What's Changed

Full Changelog: v0.60.0...v0.61.0