diff --git a/README.md b/README.md index b15bc4f..659249a 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,8 @@ To rebuild runtime assets manually, use the pinned Mopro checkout and the commit ```sh git clone https://github.com/sergeytimoshin/mopro.git /tmp/mopro -git -C /tmp/mopro checkout 56391dc24ac4a04f046b9ec5907233449bbad55d -npm run build:runtime -- 0.3.0 /tmp/mopro +git -C /tmp/mopro checkout d352504704d83c5a4a2eae9d42d7db9b4ab3f80e +npm run build:runtime -- 0.3.1 /tmp/mopro ``` Maintainers can run the `Runtime release` GitHub Actions workflow instead. After publishing a new runtime, update the version, release URL, size, and SHA-256 in `runtime.lock.json` before changing the SDK default. diff --git a/packages/web-prover/CHANGELOG.md b/packages/web-prover/CHANGELOG.md index fc311ce..d187926 100644 --- a/packages/web-prover/CHANGELOG.md +++ b/packages/web-prover/CHANGELOG.md @@ -24,6 +24,7 @@ Changed - A key's first load decompresses its points on the kernel's thread pool when the runtime provides `decompress_g1` and `decompress_g2` (runtime 0.2.0): the Go bridge rewrites the compressed proving key to gnark's raw form through them and decodes that, which is also what the raw-key cache then holds. An older runtime loads as before. - Runtime 0.3.0: the accelerator multiplies field elements four at a time in WebAssembly SIMD, solves the witness itself for circuits with gnark's `InvZeroHint` and `bits.nBits`, and uses wider MSM windows; a proof takes about a third less time than with 0.2.0. +- Runtime 0.3.1: MSM bucket points and the quotient's FFTs stay in SIMD lane form, and the solver plan builds faster; a proof takes about a fifth less time than with 0.3.0. - The Go bridge hands the kernel its points as they lie in memory, without a copy or reflection in Go, and drops its own copies once the kernel holds them: about half the wasm heap of a loaded wide key, and a shorter load. - After a shape's first load the Cache API keeps the bridge's raw re-encoding of the key in place of the pinned file, so a later load skips point decompression: 2x2 loads in about 0.15 s instead of 3.9 s, 8x8 in 0.54 s instead of 15 s. - Keys live in the Cache API store `zolana-proving-keys-`; stores of other key sets, including 0.1.0-alpha's, are deleted on first use. diff --git a/packages/web-prover/README.md b/packages/web-prover/README.md index 7889ea1..edcf391 100644 --- a/packages/web-prover/README.md +++ b/packages/web-prover/README.md @@ -75,4 +75,4 @@ await prover.prefetch({ - `terminate()` rejects outstanding work, clears the factory and disables automatic restart. Create a new prover, or explicitly call `start(factory)` to reuse the object. A supplied single `Worker` cannot be recreated automatically. - `WasmProverError.code` and its fixed message identify failures without serializing backend messages, witness values, causes or stacks from the backend. Core code does not log errors. The fetch adapter returns a JSON 500 with the safe `code` and `message`; cancellation rejects instead. Caller-provided abort reasons and callback errors remain caller-controlled and should not contain secrets. -The accelerator comes from the `runtime-v0.3.0` release; the Go bridge is rebuilt from source and bundled, so that release's older bridge, shim and sample request are ignored. The TypeScript worker/API boundary additionally redacts backend errors as defense in depth. +The accelerator comes from the `runtime-v0.3.1` release; the Go bridge is rebuilt from source and bundled, so that release's older bridge, shim and sample request are ignored. The TypeScript worker/API boundary additionally redacts backend errors as defense in depth. diff --git a/runtime.lock.json b/runtime.lock.json index 8c4ba3a..75ac457 100644 --- a/runtime.lock.json +++ b/runtime.lock.json @@ -1,11 +1,11 @@ { "format": 1, - "version": "0.3.0", - "baseUrl": "https://github.com/helius-labs/zolana-web-sdk/releases/download/runtime-v0.3.0/", + "version": "0.3.1", + "baseUrl": "https://github.com/helius-labs/zolana-web-sdk/releases/download/runtime-v0.3.1/", "manifest": { "asset": "runtime-manifest.json", "size": 2456, - "sha256": "8e1d0a91f4264caeb885097de089ed28cf5668aa1bcffa5a3157ca779bbf1a66" + "sha256": "b57006134f0502d726b15a875b3a05dc7bff5329014e1422882aa09cdf6eba7b" }, "provingKeysBaseUrl": "https://d3gbdb0egjwcw9.cloudfront.net/proving-keys/3a1c88f90f609eb1/", "requiredKeys": [ diff --git a/scripts/build-runtime-release.sh b/scripts/build-runtime-release.sh index bcb99c0..b9f8474 100755 --- a/scripts/build-runtime-release.sh +++ b/scripts/build-runtime-release.sh @@ -4,7 +4,7 @@ set -euo pipefail root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" version="${1:-}" mopro="${2:-}" -mopro_revision="56391dc24ac4a04f046b9ec5907233449bbad55d" +mopro_revision="d352504704d83c5a4a2eae9d42d7db9b4ab3f80e" rust_toolchain="nightly-2025-11-15" go_toolchain="go1.27.1"