Skip to content

chore: update noir submodule with serialization changes#23155

Draft
TomAFrench wants to merge 11 commits into
nextfrom
tf/serialization-change
Draft

chore: update noir submodule with serialization changes#23155
TomAFrench wants to merge 11 commits into
nextfrom
tf/serialization-change

Conversation

@TomAFrench
Copy link
Copy Markdown
Member

Summary

Bumps the noir/noir-repo submodule from 1d9727a6e0 to f1a4575ada.

Notable upstream changes:

Test plan

  • CI to verify downstream components still build and tests pass with the new serialization formats.

@TomAFrench TomAFrench added the ci-draft Run CI on draft PRs. label May 11, 2026
ECAdd no longer takes is_infinite operands. Update the transpiler,
inline ECADD handler, and MSM procedure to use the new (x, y) point
layout with (0, 0) as the point at infinity.
Regenerate acir.hpp from noir's autogen and propagate the resulting
shape changes through the dsl:
- ECAdd / MSM no longer carry is_infinite; (0, 0) is now the point at
  infinity throughout EcAdd, MultiScalarMul, and to_grumpkin_point.
- MemOp switches from three Expressions (operation, index, value) to
  (read: bool, index: Witness, value: Witness).
- Circuit drops current_witness_index.

Tests that exercised the externally-supplied infinity flag have been
dropped since the flag no longer exists; (0,0)-roundtrip cases are kept.
@TomAFrench TomAFrench added the claudebox Owned by claudebox. it can push to this PR. label May 12, 2026
AztecBot and others added 7 commits May 12, 2026 17:42
Acir::MemOp no longer accepts Expression-shaped index/value after the
serialization change; mem_op_to_acir_mem_op now asserts both are
witnesses. The ROM/RAM/CallData test configs that exercised constant
ops (perform_constant_ops = true) round-trip through that helper and
trip the assertion, so drop those configs together with the unused
add_constant_ops helper and template flag.
EmbeddedCurveAdd dropped is_infinite in 4992cb1, so each MSM point is
now two field elements and the output is (x, y). The two size assertions
were missed in that change; update them to match.
Resolve conflicts in dsl/acir_format/ around the MemOp shape change:
- block_constraint.test.cpp: keep both the new MemOp encoding tests
  (updated to use uint32_t index/value) and the broader RAMTestConfigs
  from next.
- acir_to_constraint_buf.cpp: drop the now-obsolete Acir::Expression
  decoders; with the new Acir::MemOp shape, index/value are witness
  indices and read is a bool.
- test_class.hpp: simplify mem_op_to_acir_mem_op to pass uint32_t
  index/value through as Acir::Witness.

Also fix MultiScalarMulTestsNoneConstant/0.GenerateVKFromConstraints:
EmbeddedCurveAdd/MSM dropped is_infinite, so each point is now (x, y).
The test was still appending a third element to the points vector,
reading past the end of point_indices and feeding garbage witness
indices into the constraint system.
EmbeddedCurveAdd/MSM dropped is_infinite from points (4992cb1).
The constraint now uses 6 fewer gates for MSM and 8 fewer for EcAdd,
so update the opcode-gate-count expectations to match.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants