Skip to content
by Unity Nodes
near-sdk (Rust)Stable

near-sdk (Rust) 5.0.0

near-sdk-v5.0.0github.com

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…

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:
  • 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
  • New host functions exposed:
  • Slimmed down the dependencies by default, most notably, you may still need to explicitly enable legacy feature for near_sdk::collections and unit-testing feature for near_sdk::testing_env and near_sdk::mock (#1149)
  • Updated nearcore crates from 0.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)
  • Self is now prohibited in non-init methods to prevent common footguns (#1073)
  • Require explicit Unlimited or Limited when specifying allowances to prevent 0 to be silently treated as unlimited allowance (#976)
  • Performance improvement to TreeMap.range (#964)
  • Deprecated near_sdk::store::UnorderedMap and near_sdk::store::UnorderedSet due 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!