Releases: FuelLabs/fuel-vm
Releases · FuelLabs/fuel-vm
v0.59.0
Version 0.59.0
Added
- 871: Add
expiration
policy that prevent a transaction to be inserted after a given block height. - 870: Add 3 new ZK-related opcodes: eadd (ecAdd on EVM), emul (ecMul on EVM), epar (ecPairing on EVM)
- 875: Updated
wasm-bindgen
to0.2.97
Fixed
- 860: Fixed missing fuzzing coverage report in CI.
Breaking
- 863: Changed StorageRead::read to load a serialized value starting from a offset. The function returns an optional value equal to the number of bytes read when defined, or none if the offset specified in input is outside the boundaries of the serialized value read.
- 868: Fixed error message when having a nonexistent contract in inputs. Instead of saying "contract was in inputs, but doesn't exist", the message was just "contract not in inputs". Now there's a separate error for that.
- 837: Change
diff
function to get VM instance diff to arollback_to
that allow to fetch changes to make self -> previous state. However, this support the new memory management that allow memory to grow between instances instead of fixed memory size.
Changed
- 847: Changed
interpreter::blockchain::load_contract_code
andinterpreter::blockchain::code_copy
to use the new version ofStorageRead::read
where the contract is loaded into a buffer starting from an offset. The contract is copied directly into the portion of memory starting at the destination address, rather than having to be copied indirectly after being fetched from storage.
What's Changed
- Create SECURITY.md by @Voxelot in #858
- fix(fuzz_coverage): Don't specify compiler version to avoid raw profile version mismatch by @netrome in #860
- Update packages versions to remove dependency to proc-macro-error by @AurelienFT in #861
- Add the possibility to specify an offset for the read value in StorageRead::read by @acerone85 in #863
- Add new ZK opcodes by @AurelienFT in #870
- chore: bump wasm-bindgen from
0.2.88
to0.2.97
by @petertonysmith94 in #875 - Add expiration policy by @AurelienFT in #871
- Add a separate error for nonexistent contract input by @Dentosal in #868
- Optimize
interpreter::blockchain::{load_contract_code, code_copy}
to read contract starting from offset by @acerone85 in #847 - Rollback memory changes by @xgreenx in #837
- Release v0.59.0 by @AurelienFT in #877
New Contributors
- @AurelienFT made their first contribution in #861
- @petertonysmith94 made their first contribution in #875
Full Changelog: v0.58.2...v0.59.0
v0.58.2
v0.58.1
Version v0.58.1
Fixed
- #852: Fixed incorrect predicate estimation when max predicate gas is less than max tx gas.
What's Changed
- Fixed incorrect predicate estimation when max predicate gas is less than max tx gas by @xgreenx in #852
- Release v0.58.1 by @xgreenx in #853
Full Changelog: v0.58.0...v0.58.1
v0.58.0
Version v0.58.0
Added
- #849: Add a new mode
2
to the LDC that allows to use the memory as a source for code. - #848: Allow usage of the blob opcode
BSIZ
,BLDD
, andLDC
with mode1
in the predicates. - #838: Implemented
AsRef<[u8]>
andTryFrom<&[u8]>
for DA compression types: ScriptCode, PredicateCode, RegistryKey. - #820: Add fuzzing in CI with ClusterFuzzLite.
Removed
Breaking
- #848: All estimation and verification of predicate functionality is reworked and now requires the instance of the storage with predicates.
- #843: Remove
serde
feature from thefuel-tx
crate. It is default behaviour now if you enablealloc
feature. - #766: Use correct gas price when validating native signatures
Changed
Breaking
- #829: Updated
add_random_fee_input()
to accept anrng
for true randomization. Introducedadd_fee_input()
to retain the previous behavior ofadd_random_fee_input()
. - #845: Removed
Default
implementation ofSecretKey
. - #844:
WDCM
andWQCM
reset$of
and$err
.
What's Changed
- Add
fn add_fee_input()
and makefn add_random_fee_input()
truly random by @rafal-ch in #829 - Add
Display
andError
impls to custom error typeSettingBlockTransactionSizeLimitNotSupported
by @rafal-ch in #833 - Fixing WASM-NPM packaging and publishing by @arboleya in #835
- Implemented
AsRef<[u8]>
andTryFrom<&[u8]>
for DA compression types by @xgreenx in #838 - Update changelog to cover breaking changes around
add_random_fee_input()
by @rafal-ch in #836 - Remove
serde
feature from thefuel-tx
crate by @xgreenx in #843 - Cherry pick Release v0.57.1 (#840) by @xgreenx in #841
- fix(SecretKey): remove Default implementation by @rymnc in #845
- WDCM and WQCM: reset $of and $err by @acerone85 in #844
- Add ClusterFuzzLite in CI featuring PR fuzzing, batch fuzzing and fuzz coverage reports by @netrome in #820
- Correct the price to verify native signatures by @Voxelot in #766
- LDC support in predicates by @Voxelot in #848
- Add a new mode
2
to the LDC that allows to use the memory as a source for code by @xgreenx in #849 - Release v0.58.0 by @xgreenx in #850
- Update CODEOWNERS by @Voxelot in #851
New Contributors
Full Changelog: v0.57.0...v0.58.0
v0.57.1
v0.57.0
Version v0.57.0
Added
- #670: Add DA compression functionality to
Transaction
and any types within - #733: Add LibAFL based fuzzer and update
secp256k1
version to 0.29.1. - #825: Avoid leaking partially allocated memory when array deserialization fails
Changed
- #824: Use
self
instead of&self
during decompression. - #823: Returned the old behaviour of the json serialization for policies.
Breaking
- #826: Skip the panic reason from canonical serialization of the panic receipt.
- #821: Added
block_transaction_size_limit
toConsensusParameters
. It adds a newConensusParametersV2
as a variant of theConsensusParameters
. - #670: The
predicate
field offuel_tx::input::Coin
is now a wrapper structPredicateCode
.
Fixed
- #822: Return recipient as an owner for the message inputs.
What's Changed
- Rust 1.79.0 by @Dentosal in #806
- chore: Add initial CODEOWNERS file by @netrome in #817
- DA compression for fuel-tx types by @Dentosal in #670
- Add advanced fuzzer (#724) by @xgreenx in #733
- Deserialize arrays: avoid leaking partially allocated memory when failing by @acerone85 in #825
- Add
block_transaction_size_limit
toConsensusParameters
by @rafal-ch in #821 - Return recipient as an owner for the message inputs by @xgreenx in #822
- Skip the panic reason from canonical serialization by @xgreenx in #826
- Returned the old behaviour of the json serialization for policies by @xgreenx in #823
- Use
self
instead of&self
during decompression by @xgreenx in #824 - Release v0.57.0 by @xgreenx in #828
New Contributors
- @netrome made their first contribution in #817
- @acerone85 made their first contribution in #825
- @rafal-ch made their first contribution in #821
Full Changelog: v0.56.0...v0.57.0
v0.56.0
v0.55.0
Version v0.55.0
Added
- #781: Added
base_asset_id
to checked metadata.
Changed
- #784: Avoid storage lookups for side nodes in the SMT.
- #787: Fixed charge functions to profile cost before charging.
Breaking
- #783: Remove unnecessary look up for old values by adding new methods to the
StorageMutate
trait. The oldinsert
andremove
are nowreplace
andtake
. The newinsert
andremove
don't return a value. - #783: Renamed methods of
StorageWrite
trait fromwrite
,replace
,take
towrite_bytes
,replace_bytes
,take_bytes
. - #788: Fix truncating
sp
toMEM_SIZE
ingrow_stack
, and allow empty writes to zero-length ranges at$hp
.
Fixed
Breaking
- #789: Avoid conversion into
usize
type and useu32
oru64
instead. The change is breaking since could return other errors for 32-bit systems. - #786: Fixed the CCP opcode to charge for the length from the input arguments.
- #785: Require
ContractCreated
output in theCreate
transaction. TheTransactionBuilder<Create>
has aadd_contract_created
method to simplify the creation of theContractCreated
output for tests.
What's Changed
- Test ALU opcodes using only the external interface by @Dentosal in #754
- Store the base asset id in the metadata by @xgreenx in #781
- Use companies fork of the
publish-crates
action by @xgreenx in #782 - Refactor coin-based contract instruction tests by @Dentosal in #779
- Require
ContractCreated
output in theCreate
transaction by @xgreenx in #785 - Fixed the CCP opcode to charge for the length of the input by @xgreenx in #786
- Remove unnecessary look up for old values by @xgreenx in #783
- Fixed charge functions to profile cost before charging by @xgreenx in #787
- grow_stack and empty $hp range write fixes by @Dentosal in #788
- Optimized storage lookups for side nodes in the SMT by @xgreenx in #784
- Avoid conversion into
usize
type and useu32
oru64
instead by @xgreenx in #789 - Release v0.55.0 by @xgreenx in #790
Full Changelog: v0.54.1...v0.55.0
v0.54.1
v0.54.0
Version v0.54.0
Added
- #770: Cache contract inputs in the VM.
Changed
-
#768: Charge for LDC opcode before loading the contract into memory.
-
#771: Take into account spent gas during synchronous predicates estimation.
Breaking
- #769: Use
DependentCost
forCFE
andCFEI
opcodes. - #767: Fixed no zeroing malleable fields for
Create
transaction. - #765: Corrected the gas units for WDOP and WQOP.
Removed
- #772: Removed redundant
self.receipts.root()
call.
What's Changed
- use the correct gas units for wdop and wqop by @Voxelot in #765
- Fixed no zeroing malleable fields for
Create
transaction by @xgreenx in #767 - Removed redundant
self.receipts.root()
call by @xgreenx in #772 - Charge for LDC opcode before loading the contract into memory by @xgreenx in #768
- Use
DependentCost
forCFE
andCFEI
opcodes by @xgreenx in #769 - Cache contract inputs in the VM by @xgreenx in #770
- Take into account spent gas during synchronous predicates estimation by @xgreenx in #771
- Removed dead code from the codebase by @xgreenx in #774
- Release v0.54.0 by @xgreenx in #775
Full Changelog: v0.53.0...v0.54.0