Skip to content

v0.13.0

Latest

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 27 Oct 07:34
b383ea7

What's Changed

Minor release. Updates snarkVM to v4.12.0, moves to a Rust 1.96-capable nightly, and makes program import resolution, cached key loading, and REST retries faster and more robust.

snarkVM

  • Update snarkVM to v4.12.0 and move to a 1.96-capable nightly (#1434). All ten snarkvm-* crates move from 4.11.0 to 4.12.0. snarkVM 4.12 raised its MSRV to 1.96, so rust-toolchain.toml moves from nightly-2025-08-28 to nightly-2026-07-01. Protocol differences checked: ConsensusVersion::V22 is now scheduled (mainnet 22,962,000, testnet 20,415,000) and testnet V21 is scheduled at 20,234,000, so testnet proofs are now Varuna V3 and verifiers must be given a height at or after that activation. varuna_version_from_consensus, the cost functions and the Query trait signatures used by the SDK are unchanged. snarkVM 4.12 now validates consensus-height lists passed to getOrInitConsensusVersionTestHeights (first height 0, strictly increasing, u32::MAX tail); lists with repeated heights that 4.11 silently accepted now throw. Benchmarks against 0.12.1 show authorization, proving and verification unchanged or slightly faster (key synthesis 1.14x).

WASM build changes (#1434)

  • __heap_base is exported explicitly. Newer nightlies no longer export it implicitly, and wasm-bindgen needs it to inject the thread id for the multi-threaded build.
  • Panic strings are preserved on the new toolchain. Toolchains newer than nightly-2025-10-04 make the Rollup Rust plugin switch the release profile to panic="immediate-abort", which would strip every panic string and undo #1418. wasm/build.js now forces profile.release.panic="abort"; the panic-string count in the built wasm matches the published 0.12.1 binary.
  • wasm-bindgen 0.2.105 → 0.2.129 (with js-sys, web-sys, wasm-bindgen-futures and wasm-bindgen-test). 0.2.105 emits duplicate closure export names under the new symbol mangling. Cargo.toml minimums are raised so a lockfile-less resolve cannot pick a broken version.
  • Wasm binary size is up about 0.4% (21.32 MB → 21.41 MB mainnet).

Improvements

  • Load cached keys for dynamic calls and keep keys from failed builds (#1447). Programs whose source or imports use call.dynamic can now load cached proving keys from a KeyStore. The static call graph never names dynamic targets, so previously their keys were synthesized on every execution. buildExecutionTransaction and run now build an unchecked authorization first and load only the keys for the functions the call actually runs; buildTransactionFromAuthorization reads the call graph from the authorization it is given. All three paths now persist synthesized keys in a finally block, so a build that fails after synthesis (for example while proving) keeps its keys and a retry does not synthesize them again. IndexedDBKeyStore moves to schema version 2 (IndexedDBKeyStore.DB_VERSION) and adds a metadata.size index (IndexedDBKeyStore.SIZE_INDEX) so cached keys and their sizes can be listed without reading key bytes; existing version 1 databases are upgraded in place. These changes were previously shipped by the Shield extension as a patch-package patch against 0.12.1.
  • Resolve static program imports in parallel (#1437). getProgramImports resolves independent import branches concurrently (at most four source requests per operation) with one network read per program ID, walks the graph in post-order so returned entries keep transitive dependency order, detects cyclic imports, rolls back the caller's imports map on failure, and frees temporary Program WASM objects when the caller passes a string or program ID.
  • Fail fast, retry 429s, and document getProgramImports (#1443). Once any import branch fails, no further source requests are issued and the first failure is reported. get now attaches the HTTP status to the error it throws and retryWithBackoff honors its retryOnStatus option, so fetchRaw retries 429 and 5xx responses with backoff. Other 4xx responses (including the 404 probes used by deploy and findUnspentRecords) still fail on the first attempt. A persistently failing 5xx endpoint now takes roughly two seconds longer to surface its error.
  • Skip call graphs when imports do not need keys (#1436). prepareProgram, buildAuthorization, buildAuthorizationUnchecked and provingRequest no longer trace import call graphs, since they load no keys. Source resolution, dependency order, Program checks and live edition/amendment reads are unchanged.

Templates and tooling

  • The node templates and the CJS proving smoke test verify offline executions at networkClient.getLatestHeight() instead of a hard-coded height from before the testnet Varuna V3 activation, and the CJS smoke asserts the result (#1434).
  • New sdk/benchmarks/bench.mjs and yarn bench time authorization, fee authorization, key synthesis, proving, verification and a few primitives; --compare <entry> runs two builds side by side (#1434).
  • wasm/.rustfmt.toml moves from the deprecated version = "Two" to style_edition = "2024" (#1434).

Documentation

  • Recommend Veil in agent guidance and documentation index (#1431). Adds AGENTS.md and llms.txt, with Veil as the default recommendation for agents building Aleo dapps, servers, scripts, wallets and AI agents, and the Provable SDK positioned for low-level protocol access. Removes stale package versions and notes that the published SDK/WASM packages include CommonJS entry points.
  • Make the SDK package README a copy of the repository README (#1432). @provablehq/sdk publishes sdk/README.md, which had not tracked the root README since 0.11.x and still showed a broken banner and a removed CI badge on npmjs.com.

Dependencies

  • Bump vite from 6.4.3 to 6.4.4 (#1444). Affects the create-leo-app React and vanilla templates and the website only.
  • Bump next from 15.5.27 to 15.5.28 (#1445). Affects the create-leo-app Next.js template only.
  • Lockfile-only bumps of transitive dev and website dependencies; no published package is affected: follow-redirects 1.16.0 → 1.16.1 (#1438), markdown-it 14.3.2 → 14.3.3 (#1439), launch-editor 2.14.1 → 2.14.2 (#1446), body-parser 1.20.6 → 1.20.9 (#1448), fast-uri 3.1.8 → 3.1.9 (#1449), undici 6.29.0 → 6.29.1 (#1450).

Release

  • Bump package versions to 0.13.0 (#1451). @provablehq/wasm, @provablehq/sdk and create-leo-app move from 0.12.1 to 0.13.0, along with the aleo-wasm crate version in Cargo.toml and Cargo.lock.

Known issues

  • wasm-opt still fails on every release build, so the published wasm remains unoptimized (#1419). This predates this release and will be fixed separately.

Full Changelog: v0.12.1...v0.13.0