feat: sdk 26–27 compat, bn254 module, contractimpl findings, vendored publishable attr stack - #1
Open
willemneal wants to merge 4 commits into
Open
feat: sdk 26–27 compat, bn254 module, contractimpl findings, vendored publishable attr stack#1willemneal wants to merge 4 commits into
willemneal wants to merge 4 commits into
Conversation
An exact =26.0.1 pin conflicts with consumers locked to newer 26.x patches (perch locks 26.1.1); the 26.x line is what COMPATIBILITY.md actually promises. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M52tZC7sppbbo1HDBpj9KK
BN254_R_BE single-source constant (pinned to decimal r by an independent long-division test), field_order/is_canonical_be/reduce_be helpers for consumers (nido pool + factory, UltraHonk verifiers) — replaces per-repo byte constants and cross-crate drift-guard tests. Widen soroban-sdk req to >=26,<28: perch is on 26, nido/admin-sep on 27; the touched API surface (BytesN/Bytes/U256/Env) is identical. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M52tZC7sppbbo1HDBpj9KK
…patcher checked as caller Modern soroban-sdk (25+) already strips non-doc/cfg/allow/deny attrs from macro-generated code (pass_through_attr_to_gen_code), so the 2024 flux-rs fork's filter_out_flux_attrs patch is unnecessary. Better: the generated invoke_raw dispatcher is flux-checked as a caller, which makes input refinements on public entry points unprovable — exactly right, since the host can pass anything. Probe pins both findings; recorded in COMPATIBILITY.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M52tZC7sppbbo1HDBpj9KK
…lishable
Vendor lib/flux-{attrs-impl,attrs,rs} from flux-rs/flux (MIT) at FLUX_REV
as soroban-flux-{attrs-impl,attrs,rs}, using cargo dependency renaming so
both the vendored sources and this workspace's flux_rs:: paths stay
byte-identical to upstream — only Cargo.toml manifests differ (see
crates/soroban-flux-attrs-impl/VENDORED.md). soroban-flux switches from
the flux-rs git dep to the vendored path dep, removing the last git
dependency from the publish graph (crates.io forbids them).
Proven equivalent: cargo flux verifies identically under the vendored
stack (the driver interoperates via the flux_tool attribute namespace,
not crate identity); stable tests + probes all green.
release-plz.toml lands with admin-sep's pattern (workspace release=false
+ per-package opt-in). Lint policy moves to [lints] tables: first-party
crates deny warnings via workspace lints; vendored crates cap to allow
so upstream source never has to satisfy this repo's lint bar (and the
clippy workspace-wrapper can't fail the build over vendored style).
Publishing itself stays deferred per the locked decision.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M52tZC7sppbbo1HDBpj9KK
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.
Everything soroban-flux grew while the M1–M5 rollout landed across consumers (perch#32, nido#194, contracts#32, admin-sep#19, neftwerk#3, rs-soroban-sdk#2 draft):
>=26.0.1, <28) — perch is on 26, nido/admin-sep on 27.bn254module —BN254_R_BEsingle source (pinned by an independent long-division test + r−1/r/r+1 boundary tests),field_order/is_canonical_be/reduce_be. Now used by nido pool+factory and arts1-token.pass_through_attr_to_gen_code), and the generated__invoke_rawdispatcher is flux-checked as a caller, correctly rejecting unvalidated input refinements on public entry points. Recorded in COMPATIBILITY.md.soroban-flux-{attrs-impl,attrs,rs}vendorlib/flux-{attrs-impl,attrs,rs}(MIT) byte-identically via cargo dependency renaming;soroban-fluxdrops its git dep, making the whole graph crates.io-publishable.cargo publish --dry-runpasses on the leaf; release-plz config follows admin-sep's opt-in pattern. Publishing itself stays deferred.[lints]tables: first-party deny, vendored allow.Gates:
cargo fluxgreen (soroban-flux-rs 60, lib 11, probe 18 fns), 10 stable test suites green,just checkgreen.Consumer note: perch/nido/arts1 pin revs on this branch (
72d0679/dfb1b19/e7af29a); after merge, bump their pins to the merge rev at leisure — branch commits stay reachable.🤖 Generated with Claude Code
https://claude.ai/code/session_01M52tZC7sppbbo1HDBpj9KK