Prepare prover commitments without orbit MSMs - #270
Merged
Conversation
ValarDragon
force-pushed
the
agent/prepared-noorbits-prover-pr-20260830
branch
from
August 29, 2026 23:56
5a7b249 to
a9ac24b
Compare
ValarDragon
force-pushed
the
agent/prepared-noorbits-prover-pr-20260830
branch
2 times, most recently
from
August 30, 2026 00:25
cda5a62 to
da0124f
Compare
ValarDragon
force-pushed
the
agent/prepared-apple10-pr-20260827
branch
from
August 30, 2026 00:25
9a60507 to
9756e2b
Compare
ValarDragon
force-pushed
the
agent/prepared-noorbits-prover-pr-20260830
branch
from
August 30, 2026 00:35
da0124f to
89e4f1c
Compare
ValarDragon
force-pushed
the
agent/prepared-apple10-pr-20260827
branch
2 times, most recently
from
August 30, 2026 16:29
55b9dcd to
6b88507
Compare
ValarDragon
force-pushed
the
agent/prepared-noorbits-prover-pr-20260830
branch
from
August 30, 2026 23:16
89e4f1c to
94d6438
Compare
This was referenced Aug 30, 2026
ValarDragon
force-pushed
the
agent/prepared-noorbits-prover-pr-20260830
branch
2 times, most recently
from
August 30, 2026 23:33
f84d5e5 to
2967c9d
Compare
ValarDragon
force-pushed
the
agent/prepared-noorbits-prover-pr-20260830
branch
from
August 30, 2026 23:44
2967c9d to
2b389c0
Compare
Contributor
Author
|
Current-main integration update:
The exact merge of the live stack with current |
Contributor
Author
|
Benchmarking on mobile |
Contributor
Author
Contributor
Author
|
Ok Ai got a bit a carried away on this one, I'd rather have just A/B tested Orbits to being default on and delete this. But its fine |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
This enables the prepared Pasta commitment evaluator in the default
multicoreconfiguration, without enabling the orbit MSM planner.multicoreisenabled and
orbitsis disabled.exposed unless both preparations succeed.
existing planned MSM fallback outside the measured worker-width gate.
The public
glv::zeromodule remains gated onorbits; the default buildonly exposes the existing trait-based interface.
Performance
On an Apple M4 (
mac-os-2, arm64), withRAYON_NUM_THREADS=10 ORCHARD_K11_PROVER_THREADS=10, the matching no-orbitsprototype improved the four-action Orchard prover from 174.42 ms to 158.46 ms
on the isolated #245+#246 ABBA gate: -15.96 ms (-9.15%). On the wider
#245-#253 stack, it improved 172.44 ms to 155.96 ms (-9.55%).
Preparation is outside the timed proof. The two
k = 11alpha-seven tablestook 33.27-34.13 ms to build, repeat preparation took 0.042-0.209 microseconds,
and peak RSS increased by 26.19 MiB. Exact one-, two-, and four-action proof
bytes and hashes matched and every proof verified with
orbitsdisabled.On current
main@27f8de2, the exact final composition through #275 measured146.08 ms over three clean four-action runs. Every confidence-interval upper
bound was at most 146.64 ms. That is a combined integration gate, not an
isolated #270 delta.
API and behavior changes
PreparedZeroChecktrait andCurveExt::try_prepare_zero_checkmethod are now available with eithermulticoreororbits, rather than onlyorbits. Their signatures areunchanged. Plain single-core
glvbuilds do not gain this API. Halo2'spublic
arithmeticre-export gains the same feature-gated availability.Params::prepare_commitmentsand OrchardProvingKey::prepare_provingcalls now build and use preparations in thedefault multicore/no-orbits configuration instead of returning
false/acting as a no-op.Params::lagrange_tableavailability is broadened tomulticore || orbits.pub(super)glv::prepare_zero_checkhelper keeps the no-orbitsimplementation module private.
AssertUnwindSafewrappers around stored prepared handles preservethe historical
ParamsUnwindSafeandRefUnwindSafeauto traits withoutadding bounds to the public
PreparedZeroChecktrait.Preparation uses
OnceLock. Callers should prepare once before enteringconcurrent Rayon proving work. Concurrent external callers are safe and share
or wait for the same initialization, but cold preparation from every worker
could park workers behind the initializer.
The returned evaluator is variable-time. Inputs to zero-check methods must be
public; the point-returning prover MSM may use secret scalars only when its
caller explicitly accepts the existing variable-time MSM side channel.
Validation
zakura-halo2-proofsdefault and all-feature library suites.zakura-orchardlibrary suite.decline, panic retry, serialization, thread routing, and verified Orchard
proofs.
cargo-semver-checks(223/223 checks), plus thetransitive Orchard default-feature semver check.
cargo +1.91.0 fmt --all --check.Stack
This draft is rebased directly onto
main@9e415b9after #272 merged. Theprivate
paired_windows_sumhelper is compiled for allmulticorebuilds sothe new no-orbits caller uses the same measured scheduler; this cfg integration
change adds no API or signature.