near-sdk (Rust) 5.0.0
This release mostly maintains backwards compatibility with the previous version, but it also includes several breaking changes that improve developer experience and bring security and performance fixes. The most notable…
- The latest release in the 5.0 line.
- Newest near-sdk (Rust): near-sdk (Rust) 5.30.0
Highlights
This release mostly maintains backwards compatibility with the previous version, but it also includes several breaking changes that improve developer experience and bring security and performance fixes. The most notable changes are:
- Contract source metadata (NEP-330) is now implemented by default for all the contracts out of the box, which means that you can call
contract_source_metadata()function and receive{ version?: string, link?: string, standards?: { standard: string, version: string }[] }(#1106) - Type-safe NEAR balance, gas amounts, and account ids were implemented:
- Use
near_sdk::NearTokeninstead of u128/U128/Balance (#1104) - Use
near_sdk::Gasinstead of u64/Gas (#1082) - Use
near_sdk::AccountIdornear_sdk::AccountIdRefinstead of String aliases for account ids (#1108)
- Use
- Update borsh to 1.0.0 (#1075)
- You will have to be explicit about the borsh re-export with
#[borsh(crate = "near_sdk::borsh")], see the example in the README
- You will have to be explicit about the borsh re-export with
- New host functions exposed:
- Slimmed down the dependencies by default, most notably, you may still need to explicitly enable
legacyfeature fornear_sdk::collectionsandunit-testingfeature fornear_sdk::testing_envandnear_sdk::mock(#1149) - Updated
nearcorecrates from0.17->0.20, but contracts rarely use these directly so no breaking changes are expected (#1130) - Support Result types in
#[handle_result]regardless of how they're referred to (#1099) Selfis now prohibited in non-init methods to prevent common footguns (#1073)- Require explicit
UnlimitedorLimitedwhen specifying allowances to prevent0to be silently treated as unlimited allowance (#976) - Performance improvement to
TreeMap.range(#964) - Deprecated
near_sdk::store::UnorderedMapandnear_sdk::store::UnorderedSetdue to not meeting the original requirements (iteration over a collection of more than 2k elements runs out of gas) (#1139) - Deprecated
near_sdk::collections::LegacyTreeMap(#963)
The best way to develop NEAR contracts in Rust is by using cargo-near CLI.
It provides a convenient way to create, build, test, and deploy contracts!
Get your fully configured development environment in under 1 minute using GitHub CodeSpaces configured for NEAR!