Releases: FuelLabs/fuel-vm
Releases · FuelLabs/fuel-vm
v0.66.3
v0.66.2
v0.66.1
What's Changed
- fix: migrate to warpbuild by @mchristopher in #999
- Release 0.66.1 by @xgreenx in #1000
Full Changelog: v0.66.0...v0.66.1
v0.66.0
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.
ReworkedStorageReadto 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,SUPIandSPLDthat 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:
SRWinstruction 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
- Improve instruction constructor parameter names by @Dentosal in #977
- Copy cleaner storage implementations from fuel-core by @Dentosal in #980
- Add a test for mint + tro by @Dentosal in #976
- Dynamic storage support by @Dentosal in #982
- feat: expose id method to wasm by @mchristopher in #988
- Use saturating_add instead of erroring in inc_pc by @Dentosal in #990
- Bump rust to 1.93 by @xgreenx in #992
- Fix CI codecov report crash by @Dentosal in #993
- optimization: Leverage ggas >= cgas invariant in gas charging by @Dentosal in #994
- optimization: Delay opcode parsing by @Dentosal in #995
- Storage hot/cold separation by @Dentosal in #996
- Fix WASM build by pinning wasm-bindgen version by @Dentosal in #998
- Release 0.66.0 by @Dentosal in #997
New Contributors
- @mchristopher made their first contribution in #988
Full Changelog: v0.65.0...v0.66.0
v0.65.0
v0.64.0
Version 0.64.0
Breaking
- 971: All
Vec<u8>fields in the transaction now useBytestype. This type has truncatedDebugstring, and has optimized serialization and deserialization forpostcardandbinacodeencodings. The new encoding is compatible(was tested) forserde_json,bincode,postcard.
StateTransitionandStateTransitionRefnow containsVerifiergeneric 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_transactmethod for theInterpreterto returnStateTransitionwithreceipts. It allows caller to avoid cloning of receipts which can be critical in some scenarios.
Added benchmarks forBytestype to show serialization and deserialization performance. - 972: Added a new
Ownerpolicy. 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 newGM::GetOwneropcode, which retrieves the owner of the transaction. If theOwnerpolicy 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 withOwnerIsUnknown.
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::idmethod now a static function, instead of the method of the instance.
Removeimpl TryFrom<&Create> for Contractimplementation for theCreatetransaction. Instead, useCreate::bytecodeto get the contract bytecode.
RemovedAsFieldFmttrait and its implementations.Bytestype truncates itsDebugoutput by default.
Optimized interactions withCreatetransaction to avoid unnecessary cloning of the bytecode.
What's Changed
- Optimized work with receipts by @xgreenx in #971
- Implementation of the owner policy by @xgreenx in #972
- Release v0.64.0 by @xgreenx in #973
Full Changelog: v0.63.0...v0.64.0
v0.63.0
v0.62.0
What's Changed
- feat: Expose SubAssetId in fuel-tx by @netrome in #953
- Narrow integer load/store operations by @Dentosal in #923
- Jump-and-link instruction by @Dentosal in #925
- feat: Add
Borrowtrait bounds to owned types inMappabletrait by @netrome in #959 - Narrow integer arithmetic instructions by @Dentosal in #922
- Prepare for 0.62.0 release by @Dentosal in #961
Full Changelog: v0.61.0...v0.62.0
v0.61.1
v0.61.0
Version 0.61.0
Breaking
- 778: Add
SubAssetIdnewtype that's used instead ofBytes32. - 933: Don't perform balance update if the change is zero
- 934: Add
input_indexof the failed predicate toCheckError::PredicateVerificationFailed. - 935: Bump Rust version to
1.85.0. - 936: Update Rust edition to 2024.
- 938: Rename
updatemethod toinserton sparse merkle tree, and allow inserting empty values.
Added
- 899: Add a feature that propose
u32tx_pointerinstead ofu16infuel-txandfuel-vm. - 939: Add new
GetGasPriceGMopcode 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
- Add new changelog unreleased section management by @AurelienFT in #913
- Add various fixes creation version github Action by @AurelienFT in #926
- Add a feature that propose
u32tx_pointerinfuel-txandfuel-vmby @AurelienFT in #899 - Ignore RUSTSEC-2024-0436 by @Dentosal in #931
- Don't update balance if change is zero by @Dentosal in #933
- Include input_index of the predicate that failed verification by @Dentosal in #934
- Make SubAssetId its own type instead of using Bytes32 by @Dentosal in #778
- Update Rust version to 1.85 by @AurelienFT in #935
- feat: Allow empty values in sparse merkle trees by @netrome in #938
- Update to 2024 rust edition by @AurelienFT in #936
- Clean the dirty part of the memory instance when we reallocate heap by @xgreenx in #940
- Gas price gm opcode by @MitchTurner in #939
- Fix title of the unreleased section in changelog. by @AurelienFT in #951
- Release v0.61.0 by @netrome in #950
- hotfix: Check changelog job should only run on PRs by @netrome in #952
Full Changelog: v0.60.0...v0.61.0