Releases: multiversx/mx-sdk-rs
Releases · multiversx/mx-sdk-rs
sc 0.62.0, chain 0.19.0, sdk 0.12.0
- BLS signing support in tests.
- Gas simulations available in the interactor:
- Simulation only;
- Auto-simulate to find gas estimation.
sc-metapost-build validation improvements:- Fixed opcode checker to support
call_indirect. - Opcode versioning in
sc-config.tomland opcodde checker. - Post-build VM hook signature validation.
- Fixed opcode checker to support
- Proxy generator fix for enums with explicit discriminants.
- Removed legacy typed mandos scenario and interactor syntax.
sc 0.61.0, chain 0.18.0, sdk 0.11.3
- BLS crypto function support in the Rust VM. Functionality is guarded by the
blsfeature flag. - Managed buffer slices out of bounds handled in the framework.
- Interactor - fixed log management.
sc 0.60.0, chain 0.17.0, sdk 0.11.2
- Block info hooks:
- Rust VM support for the new block/round info hooks:
getBlockTimestampMs,getPrevBlockTimestampMs,getBlockRoundTimeMs,epochStartBlockTimestampMs,epochStartBlockNonce,epochStartBlockRound; - Blackbox test syntax for setting all block info.
- Rust VM support for the new block/round info hooks:
- Cleanup after Barnard:
- Removed the
barnardfeature. All functionality is routed to the new Barnard hooks, where appropriate. - Reverted routing non-fallible transfer execute through the fallible vm hook. This preserves pre-Barnard behavior for most cases.
- Removed the
sc-meta install mx-scenario-goretries several times in case of connection issues.
sc 0.59.1, codec 0.23.1, chain 0.16.1, sdk 0.11.1
- Governance proxy improvements.
- Codec: added support for using u128.
- SDK/interactors:
- Added logging for http requests and responses;
- Fixed an issue with retrieving results from transactions with multi-transfer ESDT.
- Fixed a VM query error handling issue.
sc 0.59.0, codec 0.23.0, chain 0.16.0, sdk 0.11.0
- Support for Barnard features
barnardfeature for smart contracts, can be enabled in the contract'sCargo.tomlorsc-config.toml;- Blockchain API new features:
- Code hash API;
- Block info:
- Timstamps in milliseconds:
get_block_timestamp_ms,get_prev_block_timestamp_ms,epoch_start_block_timestamp_ms; - Block round time:
get_block_round_time_ms; - Epoch start info:
epoch_start_block_timestamp_ms,epoch_start_block_nonce,epoch_start_block_round.
- Timstamps in milliseconds:
- ESDT info:
- Token type API supplied by the protocol (
get_esdt_token_type); get_esdt_token_dataprovides the token type supplied by the protocol;EsdtTokenTypeupdated with new ESDT types (meta & dynamic tokens).
- Token type API supplied by the protocol (
- New transaction mechanisms:
- Fallible synchronous call;
- Fallible transfer-execute;
- Both are integrated in the unified syntax;
- Simplified several scenarios by routing all through the fallible tx VM hooks.
- Optimisations:
- Multi-transfer call value including the direct EGLD is now provided by the VM directly.
- Direct conversion between ManagedBuffer and i64 (small integer) now provided directly by the VM.
- Back transfers now support multi-transfers with EGLD properly
- New
BackTransferstructure contains back-transfers as a multi-transfer list; - It contains methods to filter and extract EGLD or single ESDT values;
- New implementation of
ReturnsBackTransfersandReturnsBackTransfersReset, which work with this payment list; ReturnsBackTransfersEGLDnow supports multi-transfer;- Old implementations renamed to
*Legacy.
- New
- New proxies for system smart contracts:
- Governance system SC;
- Delegation system SC.
- Core crate updates:
- Bech32Address:
- Deduplicated and moved to the core crate, guarded by a
stdfeature; - Support for custom HRP;
- Deduplicated and moved to the core crate, guarded by a
BLSKeyandBLSSignaturetypes, to help the interaction with the delegation contract.
- Bech32Address:
sc-meta:- Support for building contracts with
stdlibrary; test-gensupport for#[should_panic]annotation.
- Support for building contracts with
- Validator processing in the SDK, including parsing from pem.
- Event log name can now be empty or missing in declaration, the method name will be used in this case.
- Fixed a bug in mandos-rs, it was not handling a failing
scQueryproperly. - Codec: improved multi-value length handling.
sc 0.58.0, codec 0.22.1, chain 0.15.0, sdk 0.10.0
- Rust VM and debugger redesign:
- VM major refactoring: runtime, execution, debugger, VM hooks handler;
- Integration of the new executor interface: new instance, executor & VM hooks interfaces;
- Early exit mechanism for VM hooks;
- Integration of Wasmer 2.2 production code, via an adapter;
- Integration of Wasmer 6, as an experimental alternative, but more stable in tests;
- Mechanism for running blackbox and mandos-rs tests with compiled contracts (.wasm);
- Mechanism for running the same test via the debugger as part of the Rust test suite, and via Wasmer as part of the Wasm tests;
- Crude metering, as a proof-of-concept, will be refined in the future. Gas schedule can be configured.
- New feature
compiled-sc-teststo replacerun-go-tests.
- Build system:
- Opcode validator, as a post-build automated process. It detects and signals the usage of non-whitelisted WASM opcodes.
- WASM target:
- Default target is now
wasmv1-noneinstead ofwasm32-unknown-unknown. This is to allow upgrading to Rust 1.87, which uses LLVM 20 and normally emits bulk memory opcodes, which are currently unsupported on MultiversX. This change prevents these opcodes to be emitted. - A mechanism for overriding the default target, per contract, in
sc-config.toml. - Target will be autoinstalled upon build, if missing.
- Default target is now
sc-metanewtestargument:-wor--wasm, to run tests based on compiled smart contracts; replaces--go.- Improved interactor error handling.
- Back-transfer object cloneable.
- Fixed typos.
- Updated dependencies.
sc 0.57.1, sdk 0.9.1
- Retrieve token properties using
get_token_properties; - Fixed URIs for
esdt_metadata_recreateandesdt_metadata_update; sc-meta:- Fixed
test --chain-simulatorused for running chain-simulator interactor tests; - Added extra checks for argument validity.
- Fixed
- Interactor:
- Fixed
setStateOverwrite; - Fixed
ReturnsTxHashresult handler.
- Fixed
- Enhanced
checkStateto allow partial key verification.
sc 0.57.0, codec 0.22.0, chain 0.14.0, sdk 0.9.0, scenario-format 0.23.1
- Newer compiler support:
- Dropped support for Rust compiler versions older than 1.83.
- Support and optimizations for using Rust 1.85.
sc-meta:- Windows support.
- Removed the concept of a "main" contract configuration.
- Using
typenum/generic-arrayinstead of const generics/macros for:- ManagedVec payloads;
- ManagedDecimal const decimals.
- ManagedDecimal - more arithmetic operator implementations for combinations of const + var decimals.
- ManagedVecItem can now be derived for enums with fields.
- Codec and ABI support for bitflags.
- Storage mappers:
- New storage mapper:
TimelockMapper; - Renamed source type and object.
- New storage mapper:
ESDTTransferRole:- Reintroduced role after being accidentally dropped;
- Added a
token_has_transfer_rolemethod for checking if it is set on a token, as a workaround until Barnard release.
- Unified syntax - result handler for back transfers, which resets previous back transfers (
ReturnsBackTransfersReset). - SDK:
- Chain simulator - set state overwrite support;
Walletget_shardmethod.
- Debugger - improved mandos error messages.
- Dependencies upgraded.
sc 0.56.1, chain 0.13.1, sdk 0.8.2
- Allow setting gas for callback for direct transfers.
- NestedEncode for interaction types: TestAddress, TestScAddress and TestTokenIdentifier.
- Bugfix: pretty representation for ManagedAddress when debugging.
- Upgrade dependency: ruplacer.
sc 0.56.0, chain 0.13.0, sdk 0.8.1
- Rust VM support for readonly sync calls.
ManagedMapEncoded, a map type that can use any key or value types that are serializable.ManagedDecimalimplementsManagedVecItem.- Bugfixes, improvements:
- Fixed a bug regarding the ESDT roles VM hook;
- Pretty representation for ManagedBuffer and other string-like types when debugging;
- API fix of an issue that was preventing set state in chain simulator;
- Snippets generator fixes involving the crate path and the upgrade result handler.