chore(aztec-nr): Public self constructor function (backport #23062)#23156
Merged
vezenovm merged 1 commit intoMay 11, 2026
Merged
Conversation
…yte code size blow up (#23062) Resolves [F-637](https://linear.app/aztec-labs/issue/F-637/aztec-nr-macros-contain-self-construction-to-a-function-to-prevent) Stacks on #23061 - New `generate_public_self_creator` emits a per-contract `__aztec_nr_internals__create_public_self<let N: u32>()` helper - `generate_public_external` now emits a single call to it instead of inlining the preamble. This can be seen in the snapshots. - Helper is emitted from `process_functions` and gated on `public_functions.len() > 0` ~~Improvements tested locally:~~ I need to test further. Either way this is cleaner macro code.
vezenovm
approved these changes
May 11, 2026
benesjan
added a commit
that referenced
this pull request
May 12, 2026
BEGIN_COMMIT_OVERRIDE fix(sequencer): bounded sweep instead of event scan for governance proposal check (#22989) fix(sequencer): bounded sweep instead of event scan for governance proposal check (#22989) (#23001) chore: route backport CI failure notifications to #backports channel (#21779) fix: (A-589) epochs l1 reorgs test (#20999) chore: Accumulated backports to v4 (#23065) fix(bb-prover): use temp directory for avm_verify (#23138) chore: notify on v4-next sync (#23139) refactor(pxe): use findLeavesIndexes for read request verification (#23123) refactor(pxe): skip storage reads for never-updated contracts (#23131) fix(pxe): skip registerContractFunctionSignatures when no public fns (#23134) chore: Update Noir to nightly-2026-04-15 (#22572) chore: Update Noir to nightly-2026-04-16 (#22594) chore: Update Noir to nightly-2026-04-17 (#22633) chore: Update Noir to nightly-2026-04-23 (#22653) chore: Update Noir to nightly-2026-04-28 (#22755) chore: Update Noir to nightly-2026-05-01 (#22836) chore: Update Noir to nightly-2026-05-05 (#22911) chore: Update Noir to nightly-2026-05-11 (#23023) chore: backport noir sync PRs to backport-to-v4-next-staging (#23148) refactor(pxe): prefetch updated class id hints per unique contract (#23130) chore(aztec-nr): Public self constructor function to prevent static byte code size blow up (#23062) chore: merge v4 into backport-to-v4-next-staging (#23140) chore(aztec-nr): Public self constructor function (backport #23062) (#23156) refactor(pxe): avoid expensive toTx() call when computing tx hash (#23136) END_COMMIT_OVERRIDE
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
Backport of #23062 to
v4-next.Cherry-pick of merge commit
b6adc6b20fa79f4b55a73517a7ba8e2444716387.Conflict resolved
noir-projects/contract-snapshots/tests/snapshots/expand/avm_gadgets_test_contract/snapshots__expanded.snap— the upstream PR's snapshot included a__aztec_nr_internals__keccak_hash_300function (added in a separate upstream commit), but the v4-next source contract (avm_gadgets_test_contract/src/main.nr) does not contain akeccak_hash_300test function. The conflict was resolved by dropping thekeccak_hash_300block from the snapshot so it matches the v4-next source contract. All other public-function helpers in the snapshot were updated to call the new__aztec_nr_internals__create_public_self::<N>()helper.What this PR does
generate_public_self_creatorwhich emits a per-contract__aztec_nr_internals__create_public_self<let N: u32>()helper.generate_public_externalnow emits a single call to the helper instead of inlining the preamble, shrinking generated bytecode.public_functions.len() > 0inprocess_functions.Files changed
noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/external/public.nrnoir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/mod.nrcompile_failuresnapshots__stderr.snapfilesexpandsnapshots__expanded.snapfiles12 files changed, 302 insertions(+), 1817 deletions(-).
🤖 Generated automatically by the backport workflow.
ClaudeBox log: https://claudebox.work/s/b8ac01ace45bf87e?run=1