feat: version ABI and artifact schemas - #13572
Merged
Merged
Conversation
asterite
marked this pull request as draft
August 26, 2026 20:35
asterite
marked this pull request as ready for review
August 27, 2026 15:25
TomAFrench
approved these changes
Sep 1, 2026
AztecBot
added a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Sep 8, 2026
Moves noir/noir-repo from nightly-2026-07-31 (1.0.0-beta.26, 40d6574f) to v1.0.0-rc.0 (fae3abca), plus the changes rc.0 forces on this repo. Breaking changes adapted: - noir-lang/noir#13550 — Type::as_data_type, TypeDefinition::fields, TypeDefinition::generics and FunctionDefinition::parameters return named structs instead of tuples. Ported from #25289. - BoundedVec::from_parts_unchecked was removed; the 41 call sites move to from_parts, whose beta.26 body was identical. - noir-lang/noir#13572 — noirc_abi::Abi gained a required abi_version, so the transpiler's synthesized public_dispatch ABI sets it, as do the labs TS artifact types that mirror that struct. Fixtures the new compiler moves: - private_kernel_reset_config.json: rc.0 shaves a constant 1185 gates off every finalTailToPublic reset variant. - The emit-repro expand snapshot: nargo expand now suffixes integer literals with their type. The labs submodule is built with the nargo from noir/noir-repo, so its share of the migration rides along as labs-patches 0011-0013 rather than a separate aztec-node PR; they drop out of the series once the same changes land upstream and the gitlink moves past them. The acir_tests folding exclusion becomes a fold_* glob: rc.0 adds fold_unreachable_call and fold_out_of_order_calls, and bb supports no folding program, so the glob keeps the set in step with upstream.
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
abi_version: 1to serialized ABIsartifact_version: 1to serialized program and contract artifactsnoirc_abiandnoirc_artifactsas non-publishable because the serialized formats, rather than their Rust APIs, are the compatibility boundaryThis implements the versioning portion of the 1.0 artifact schema proposal.
Compatibility
Existing unversioned ABI and artifact JSON remains readable and is interpreted as V1. Existing consumers that only read compiler output continue to work because the change is additive. Rust or TypeScript consumers that construct these structs or object literals must add the new version fields; this is the intentional pre-1.0 source-level break that establishes the versioned format.
Testing
cargo test -p noirc_abi -p noirc_artifactscargo check -p noirc_driver -p noir_wasm -p noir_ast_fuzzer -p noir_ssa_cli -p noir_ssa_executor -p noir_profiler -p noir_artifact_cli -p noirc_abi_wasmcargo test -p noir_artifact_cli -p noir_profilercargo fmt --all -- --checkgit diff --checkyarn workspace @noir-lang/types buildyarn workspace @noir-lang/noir_codegen build