Skip to content

feat: version ABI and artifact schemas - #13572

Merged
TomAFrench merged 2 commits into
masterfrom
feat/version-artifact-schemas
Sep 1, 2026
Merged

feat: version ABI and artifact schemas#13572
TomAFrench merged 2 commits into
masterfrom
feat/version-artifact-schemas

Conversation

@asterite

@asterite asterite commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add abi_version: 1 to serialized ABIs
  • add artifact_version: 1 to serialized program and contract artifacts
  • treat existing unversioned JSON as V1 while rejecting unsupported versions
  • update Rust constructors, WASM declarations, and TypeScript types
  • mark noirc_abi and noirc_artifacts as non-publishable because the serialized formats, rather than their Rust APIs, are the compatibility boundary

This 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_artifacts
  • cargo 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_wasm
  • cargo test -p noir_artifact_cli -p noir_profiler
  • cargo fmt --all -- --check
  • git diff --check
  • yarn workspace @noir-lang/types build
  • yarn workspace @noir-lang/noir_codegen build
  • compiled fresh program and contract fixtures with Nargo and verified their V1 markers

@asterite
asterite marked this pull request as draft August 26, 2026 20:35
@asterite
asterite marked this pull request as ready for review August 27, 2026 15:25
@TomAFrench
TomAFrench added this pull request to the merge queue Sep 1, 2026
Merged via the queue into master with commit b2d9352 Sep 1, 2026
141 checks passed
@TomAFrench
TomAFrench deleted the feat/version-artifact-schemas branch September 1, 2026 11:19
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants