sc 0.51.0, codec 0.20.0, vm 0.9.0, sdk 0.5.0, scenario-format 0.22.3
andrei-marinica
released this
06 Jul 14:46
·
672 commits
to master
since this release
- Major refactoring of
multiversx-sc-meta
- Crate
multiversx-sc-meta
split in 2:multiversx-sc-meta
remains the standalone tool. For backwards compatibility, it can still be used in contract meta crates, but a warning will be issued.multiversx-sc-meta-lib
is the contract-only library to contract meta crates.
- The refactoring came with few code changes, but dependencies were disentangled and cleaned up.
- Account retrieval tool was merged into
sc-meta
standalone. Previously little known feature, it enables downloading the full state of an account and formatting it as a mandos set state step. Very useful for generating tests and investigating state. multiversx-sdk
was also refactored, especially the gateway proxy.
- Crate
- A new code report is available in the
.mxsc.json
build output. The report analyzes the wasm code after build and always offers the following information:imports
: what VM hooks are used;eiCheck
: if the used imports comply with the environment interface (EI, allowed VM hooks);hasAllocator
: is it allocates on the heap;hasPanic
: whether it produces Rust panics and formats error messages using the standard Rust formatter (a source of code bloat).
ManagedDecimal
andManagedDecimalSigned
:- New types that encapulate a managed
BigUint
andBigInt
respectively, but treat them as base 10 fixed point rational numbers. - Two flavors are allowed: the number of decimals is known at compile time (e.g. EGLD always has 18 decimals), or only at runtime.
- Type
ConstDecimals
is able to resolve conversions at compile time, reducing code size and making encoding and decoding easier, since the number of decimals does not need to be encoded. - Regular
usize
number of decimals is resolved at runtime.
- Type
- All basic arithmetic operations are implemented for these types, just like for the big integers.
- New types that encapulate a managed
- Implemented logarithms:
- Natural logarithm
ln
forManagedDecimal
,BigFloat
, andBigInt
. - Base 2 logarithm
log2
forManagedDecimal
. - Precision is about 5 decimals, largely irrespective of input.
- The operation is cheap,
ln
costs 44980 gas for managed decimals and 153772 for big floats, largely irrespective of input.
- Natural logarithm
- Smart contract code on the front-end:
- Framework and contract code, together with the Rust VM as a backend, can now be compiled to WebAssembly for front-end, using
wasm-bindgen
. - A few incompatible Rust VM features needed to be made optional for this to work.
- Framework and contract code, together with the Rust VM as a backend, can now be compiled to WebAssembly for front-end, using
- Reverted changes in
sc 0.50.6
(diagnostic::on_unimplemented
& rustc 1.78 dependency). - Bugfix:
sync_call_readonly
can now be used with proxies.