Releases: multiversx/mx-sdk-rs
Releases · multiversx/mx-sdk-rs
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
barnard
feature for smart contracts, can be enabled in the contract'sCargo.toml
orsc-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_data
provides the token type supplied by the protocol;EsdtTokenType
updated 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
BackTransfer
structure contains back-transfers as a multi-transfer list; - It contains methods to filter and extract EGLD or single ESDT values;
- New implementation of
ReturnsBackTransfers
andReturnsBackTransfersReset
, which work with this payment list; ReturnsBackTransfersEGLD
now 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
std
feature; - Support for custom HRP;
- Deduplicated and moved to the core crate, guarded by a
BLSKey
andBLSSignature
types, to help the interaction with the delegation contract.
- Bech32Address:
sc-meta
:- Support for building contracts with
std
library; test-gen
support 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
scQuery
properly. - 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-tests
to 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-none
instead 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-meta
newtest
argument:-w
or--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_recreate
andesdt_metadata_update
; sc-meta
:- Fixed
test --chain-simulator
used for running chain-simulator interactor tests; - Added extra checks for argument validity.
- Fixed
- Interactor:
- Fixed
setStateOverwrite
; - Fixed
ReturnsTxHash
result handler.
- Fixed
- Enhanced
checkState
to 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-array
instead 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_role
method 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;
Wallet
get_shard
method.
- 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.ManagedDecimal
implementsManagedVecItem
.- 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.
sc 0.55.0, codec 0.21.2, chain 0.12.0, sdk 0.8.0
- Integrating Spica changes into the framework:
- EGLD+ESDT multi-transfers are now possible:
- changed the handling of call values: EGLD is treated almost the same as an ESDT in
all_transfers
andmulti_egld_or_esdt
, old ESDT methods are given some protection against unexpected scenarios - changed the tx unified syntax for sending EGLD+ESDT from contracts, interactors and tests;
- support in the Rust VM.
- changed the handling of call values: EGLD is treated almost the same as an ESDT in
- New built-in functions in the
ESDTSystemSCProxy
:ESDTModifyRoyalties
,SDTSetNewURIs
,ESDTModifyCreator
,ESDTMetaDataRecreate
,ESDTMetaDataUpdate
.
- EGLD+ESDT multi-transfers are now possible:
- Interactor support for "set state" on the chain simulator.
- Fixed ownership for ManagedVec iterators, specifically reference iterators only produce references to the items.
- Syntax cleanup:
#[payable]
now allowed instead of#[payable("*")]
;register_promise
allows callback, without calling a function on destination.
- Refactoring and optimizations:
- Simplified the callback selector;
- Performance improvements in ManagedVec iterators;
- Removed some unnecessary bound checks in
multi_esdt
.
sc 0.54.5
ManagedVec
- deprecatedsort
and guarded it by thealloc
feature, since it uses the allocator.sc-meta
- versioning fix;
- interactor generator fix.
- Interactors - fixed code metadata on deploy.
sc 0.54.4
sc-meta
install debugger
CLI that prepares VSCode extension for debugging;- fixed a crash involving templates and installers.
- Deprecated
#[derive(TypeAbi)]
and added an additional warning in the macro.