Skip to content

25.0.0

Choose a tag to compare

@leighmcculloch leighmcculloch released this 23 Jan 11:36
· 49 commits to main since this release
a3cefc1

What's Changed

Breaking Changes

  • Simplified Contract Event Testing: New ContractEvents struct from env.events().all() with XDR conversion via to_contract_event and improved debug output showing actual values instead of object references. The change is backwards compatible for most contracts we observed because the new type is comparable with the old data format, but some contracts that do more than comparisons with the old data may see a compiler error and require updating. (#1638)

New Features

  • BN254 Cryptographic Support: Added BN254 elliptic curve operations (G1Affine, scalar field types) and exposed Poseidon/Poseidon2 hash functions via CryptoHazmat (gated by hazmat-crypto feature). (#1667)
  • Test Resource Limit Enforcement: Added resource limit enforcement during testing with mainnet limits enabled by default, helping detect heavy contracts early. Limits are customizable or can be disabled. (#1677)
  • MuxedAddress String Parsing: Added MuxedAddress::from_str and from_string methods to parse Stellar strkey addresses (G.../M.../C...) directly in contracts using no-alloc strkey parsing for Wasm compatibility. (#1678)

Improvements

  • Compact Ledger Snapshot Format: ~35% file size reduction and ~3x faster serialization for snapshot files. Backwards compatible with old format. (#1648)

Bug Fixes

  • Contract Event Field Order: Fixed contractevent with vec data format to preserve field declaration order. (#1680)
  • Qualified Trait Paths in contractimpl: Support full paths like crate::module::Trait in impl Trait for Contract blocks. (#1691)
  • Unit Type Spec Mapping: () now correctly maps to SC_SPEC_TYPE_VOID instead of empty tuple. (#1666)

All Changes

Full Changelog: v23.4.0...v25.0.0