Skip to content

Releases: multiversx/mx-sdk-rs

sc 0.62.0, chain 0.19.0, sdk 0.12.0

24 Sep 12:24
v0.62.0
1ba9c2d

Choose a tag to compare

  • BLS signing support in tests.
  • Gas simulations available in the interactor:
    • Simulation only;
    • Auto-simulate to find gas estimation.
  • sc-meta post-build validation improvements:
    • Fixed opcode checker to support call_indirect.
    • Opcode versioning in sc-config.toml and opcodde checker.
    • Post-build VM hook signature validation.
  • 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

04 Sep 21:06
v0.61.0
ee29670

Choose a tag to compare

  • BLS crypto function support in the Rust VM. Functionality is guarded by the bls feature 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

08 Aug 18:57
v0.60.0
2a2c589

Choose a tag to compare

  • 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.
  • Cleanup after Barnard:
    • Removed the barnard feature. 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.
  • sc-meta install mx-scenario-go retries several times in case of connection issues.

sc 0.59.1, codec 0.23.1, chain 0.16.1, sdk 0.11.1

24 Jul 08:53
v0.59.1
9aa8d44

Choose a tag to compare

  • 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

03 Jul 21:00
421b2e7

Choose a tag to compare

  • Support for Barnard features
    • barnard feature for smart contracts, can be enabled in the contract's Cargo.toml or sc-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.
      • 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).
    • 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 and ReturnsBackTransfersReset, which work with this payment list;
    • ReturnsBackTransfersEGLD now supports multi-transfer;
    • Old implementations renamed to *Legacy.
  • 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;
    • BLSKey and BLSSignature types, to help the interaction with the delegation contract.
  • sc-meta:
    • Support for building contracts with std library;
    • test-gen support for #[should_panic] annotation.
  • 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

26 May 22:55
v0.58.0
25da28b

Choose a tag to compare

  • 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 replace run-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 of wasm32-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.
  • sc-meta new test 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

04 Apr 14:11
v0.57.1
2d0f3d4

Choose a tag to compare

  • Retrieve token properties using get_token_properties;
  • Fixed URIs for esdt_metadata_recreate and esdt_metadata_update;
  • sc-meta:
    • Fixed test --chain-simulator used for running chain-simulator interactor tests;
    • Added extra checks for argument validity.
  • Interactor:
    • Fixed setStateOverwrite;
    • Fixed ReturnsTxHash result handler.
  • 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

11 Mar 09:15
v0.57.0
69b1b9b

Choose a tag to compare

  • 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.
  • 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

06 Feb 21:33
v0.56.1
98e4390

Choose a tag to compare

  • 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

23 Jan 00:49
v0.56.0
12f9169

Choose a tag to compare

  • Rust VM support for readonly sync calls.
  • ManagedMapEncoded, a map type that can use any key or value types that are serializable.
  • ManagedDecimal implements ManagedVecItem.
  • 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.