Skip to content

2.13 release tracker — DevEx library PRs #54

Description

@r-near

Umbrella tracker for the nearcore 2.13 (protocol 86) rollout across the DevEx Rust stack. Gas-key design lives in #43.

Status — 2026-07-15: cascade complete, 1 crate left ✅

The full DevEx stable pass for nearcore 2.13.0 (protocol 86) is published to crates.io. Everything below is live except near-validator, which is code-complete and green but blocked on a co-maintainer approval (r-near lacks admin on that one repo).

Recap: nearcore 2.13.0 stable shipped 2026-07-09 (near/nearcore#15957) — the 0.37.0 nearcore crates went live. We then ran the stable pass across the stack in dependency order: flip every =0.37.0-rc.2 pin → 0.37.0, drop the -rc.N from each DevEx crate, default the sandbox binary to the stable 2.13.0, and republish bottom-up (jsonrpc → sandbox/socialdb → workspaces → cli → sdk/cargo-near → validator).

nearcore 2.13.0 final is protocol 86 (not 85 — a feature stabilized between rc.2 and final).

Prior phase (2026-07-02): the whole stack shipped as release candidates pinned to =0.37.0-rc.2 while nearcore held the final crates for mainnet. This stable pass supersedes those RCs.

Published — stable, live on crates.io (none yanked)

Crate Stable Was (RC) PR
near-jsonrpc-client 0.22.0 0.22.0-rc.1 near/near-jsonrpc-client-rs#192
near-socialdb-client 0.16.0 0.16.0-rc.1 near/near-socialdb-client-rs#51
near-sandbox 0.3.12 0.3.12-rc.1 near/near-sandbox-rs#80 — default sandbox() binary → 2.13.0
near-workspaces 0.23.0 0.23.0-rc.1 near/near-workspaces-rs#453 — near-sandbox pin → 0.3.12
near-cli-rs 0.28.0 0.28.0-rc.1 near/near-cli-rs#616
near-sdk (+ near-contract-standards, near-sdk-macros) 5.29.0 5.29.0-rc.2 near/near-sdk-rs#1586 (+ release-plz #1583)
near-sdk-core / near-global-contracts / near-sys 4.2.2 / 0.2.5 / 0.2.13 deps-only bumps ↑ same release
cargo-near 0.22.0 0.22.0-rc.1 near/cargo-near#445
cargo-near-build 0.11.5 0.11.4 ↑ same PR (picked up #442/#441 since rc.1)

Remaining

Follow-up

  • Release tracker: 2.13.3 nearcore#15957 — nearcore 2.13.0 stable on crates.io ✅
  • Flip =0.37.0-rc.20.37.0 and DevEx -rc.N → stable across the stack ✅ (except near-validator above)
  • Retire the explicit sandbox_with_version(...) pins to bare sandbox() now that the default is the stable 2.13.0 binary: near-sdk examples reverted in #1586; near-workspaces tests/account.rschore: retire RC sandbox pin, use default sandbox() near-workspaces-rs#454 (open); near-cli / cargo-near already clean.
  • Toolchain drift: repos on unpinned stable now hit Rust 1.97's useless_borrows_in_formatting clippy lint (fixed inline in near-cli#616 via clippy --fix + re-fmt); consider pinning CI toolchains or a repo sweep.
  • near-socialdb-client-rs: a pre-existing malformed duplicate # Changelog H1 breaks release-plz's release-notes extractor (the v0.16.0 GH release body was populated manually) — de-dupe in a cleanup PR.
  • near-api-rs — skipped for 2.13 (near-kit supersedes it). near-kit stays at 0.12.0-rc.1 (hand-rolls types, no nearcore dep; outside this pin cascade).

Release gotchas worth remembering

  • near-sys version-bump discipline: near-sdk 5.29.0's first release-plz run failed publish-verify (cannot find value chain_id in crate sys) because a host-fn binding was added to near-sys without bumping its version — so cargo publish --verify built near-sdk against the stale published near-sys. Plain CI passed (path-dep). Fixed by publishing near-sys 0.2.13 first (release-plz PR #1583). Any near-sys API addition must bump + publish near-sys before/with the near-sdk release that uses it.
  • near-sdk 5.29.0 raised the effective contract proto floor to 85: it unconditionally imports the 3 gas-key host fns into any Promise-using contract, and those gate on protocol 85. 5.29 contracts load fine on proto ≥85 (testnet + 2.13 mainnet + a 2.13 sandbox) but link-error (unknown or invalid import) on a proto-84 / nearcore-2.12 node. The cargo near new template and the sdk examples both resolve their sandbox to the 0.3.12 (proto-86) binary, so this is transparent there.

Post-quantum (ML-DSA-65) notes

2.13 ships initial ML-DSA-65 support. Verified end-to-end on-chain (2026-07-02, on a 2.13.0-rc.2 sandbox = proto 85; 2.13.0 stable is proto 86, behaviour unchanged): AddKey(ml-dsa-65 full-access) → on-trie handle ml-dsa-65-hash:<bs58(SHA3-256)>; view_access_key accepts the full key (nearcore hashes it to the handle server-side — the client sends the full key since the ml-dsa-65-hash: handle can't parse as a PublicKey); a transfer signed by the ML-DSA key succeeds. So near-cli online ML-DSA signing works against a 2.13 node.

Distribution-channel gotcha for on-chain tests: the S3 neard binary (what the near-sandbox Rust crate downloads) has ML-DSA + view_state pagination; the Docker image nearprotocol/sandbox of the same tag may lag — use the pre-release/master tag there.

Known 2.13 PQ limitations (not blockers): on-trie keys stored as 32-byte hashes so the full pubkey isn't recoverable (can't enumerate PQ access keys); fork-network / mirror tools skip ML-DSA-65 keys; no in-contract ML-DSA verify host fn.

Design references: #43 (NEP-611 gas keys), #47 (Ledger catch-up epic, PQ as P2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions