0.70.0 (2025-01-15)
⚠ BREAKING CHANGES
- Handle generic fields in
StructDefinition::fields
and move old functionality toStructDefinition::fields_as_written
(noir-lang/noir#7067) - disallow calling unconstrained functions outside of
unsafe
blocks and passing unconstrained functions in place of constrained functions (noir-lang/noir#6938) - Disable mocks in
execute
(noir-lang/noir#6869) - require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901)
- Reserve
enum
andmatch
keywords (noir-lang/noir#6961) - require trait method calls (
foo.bar()
) to have the trait in scope (imported) (noir-lang/noir#6895) - type-check trait default methods (noir-lang/noir#6645)
- update
aes128_encrypt
to return an array (noir-lang/noir#6973) - turn TypeIsMorePrivateThenItem into an error (noir-lang/noir#6953)
- turn CannotReexportItemWithLessVisibility into an error (noir-lang/noir#6952)
Features
--pedantic-solving
flag (noir-lang/noir#6716) (3883a0e)- 7 bit long
note_type_id
(#10951) (6fc5673) - Allow associated types to be ellided from trait constraints (noir-lang/noir#7026) (3ed22ed)
- Allow concurrent world state access (#11216) (17aa4b4)
- Auto-import traits when suggesting trait methods (noir-lang/noir#7037) (3ed22ed)
- avm2: Avm redesign init (#10906) (231f017)
- Avoid generating a new witness when checking if linear expression is zero (noir-lang/noir#7031) (3ed22ed)
- Avoid inserting
inc_rc
instructions into ACIR (noir-lang/noir#7036) (3ed22ed) - Blob sink in sandbox without extra process (#11032) (4600f54)
- Browser chunking (#11102) (393e843)
- Build blocks using txs with higher fee first (#11093) (def7cd7), closes #11084
- cli: Add CLI option to filter by contract function name (noir-lang/noir#7018) (9189120)
- comptime: Implement to_be_bits and to_le_bits in the interpreter (noir-lang/noir#7008) (9189120)
- Contract class must be registered before deployment (#10949) (7176a70)
- Dashboard in gcp (#11201) (2790bd7)
- Disable mocks in
execute
(noir-lang/noir#6869) (9189120) - Disallow calling unconstrained functions outside of
unsafe
blocks and passing unconstrained functions in place of constrained functions (noir-lang/noir#6938) (9189120) - Don't report warnings for dependencies (noir-lang/noir#6926) (3883a0e)
- Don't simplify SSA instructions when creating them from a string (noir-lang/noir#6948) (3883a0e)
- Expose getL2ToL1Membership on the pxe (#11215) (ffd3625)
- Handle generic fields in
StructDefinition::fields
and move old functionality toStructDefinition::fields_as_written
(noir-lang/noir#7067) (3ed22ed) - Impl Default for U128 (noir-lang/noir#6984) (3883a0e)
- Inject protocol nullifier conditionally (#11155) (93ade26)
- Kickoff tube circuits at the beginning of proving job (#11139) (85d389f), closes #10998
- Lock on Nargo.toml on several nargo commands (noir-lang/noir#6941) (3883a0e)
- LSP: Code action to import trait in a method call (noir-lang/noir#7066) (3ed22ed)
- lsp: Use trait method docs for trait impl method docs on hover (noir-lang/noir#7003) (9189120)
- Monitor event loop lag (#11127) (422f125)
- Permutation argument optimizations (#10960) (de99603)
- PXE db contract store (#10867) (b5d51eb)
- Require trait function calls (
Foo::bar()
) to have the trait in scope (imported) (noir-lang/noir#6882) (3883a0e) - Require trait method calls (
foo.bar()
) to have the trait in scope (imported) (noir-lang/noir#6895) (3883a0e) - Require trait primitive functions/calls to have their trait in scope (noir-lang/noir#6901) (9189120)
- Simulator split (#11144) (9b99126)
- Single tx block root rollup (#11096) (bcc0168)
- Skip codegen of zero iteration loops (noir-lang/noir#7030) (3ed22ed)
- SSA globals in monomorphization and SSA gen (noir-lang/noir#6985) (9189120)
- ssa: Immediately simplify away RefCount instructions in ACIR functions (noir-lang/noir#6893) (3883a0e)
- test: Enable the test fuzzer for Wasm (noir-lang/noir#6835) (3883a0e)
- Track nodejs runtime metrics (#11160) (1d24fab)
- Turn CannotReexportItemWithLessVisibility into an error (noir-lang/noir#6952) (3883a0e)
- Turn TypeIsMorePrivateThenItem into an error (noir-lang/noir#6953) (3883a0e)
- Type-check trait default methods (noir-lang/noir#6645) (3883a0e)
- Unchecked math operations in SSA (noir-lang/noir#7011) (9189120)
- Update
aes128_encrypt
to return an array (noir-lang/noir#6973) (3883a0e) - Use tail public inputs as transaction hash (#11100) (34be2c3)
- Validator deadline for reexecution (#11050) (1aa34e7), closes #10959
Bug Fixes
- Added start/stop guards to running promise and serial queue (#11120) (23e642f)
- Allow multiple trait impls for the same trait as long as one is in scope (noir-lang/noir#6987) (9189120)
- avm: AVM circuit fixes related calldata, returndata and call_ptr (#11207) (2f05dc0)
- avm: Mac build (#11195) (c4f4452)
- avm: Mac build (retry) (#11197) (0a4b763)
- Aztec-spartan config var (#11137) (acbfad4)
- Blob fees & l1-publisher logging (#11029) (c2c0bc6)
- bootstrap: Don't download bad cache if unstaged changes (#11198) (2bd895b)
- boxes: Fix attempt 2 (#11175) (e87b11a)
- Bump inotify limits on tester (#11217) (60bdf1d)
- Do not emit range check for multiplication by bool (noir-lang/noir#6983) (3883a0e)
- Do not panic on indices which are not valid
u32
s (noir-lang/noir#6976) (3883a0e) - Docs rebuild patterns (#11191) (1999990)
- Don't always select trait impl when verifying trait constraints (noir-lang/noir#7041) (3ed22ed)
- Don't fail parsing macro if there are parser warnings (noir-lang/noir#6969) (3883a0e)
- Don't retransmit txs upon node restart (#11123) (39535c9)
- Duplicate env vars (#11166) (2507b6f)
- Error on missing function parameters (noir-lang/noir#6967) (3883a0e)
- Foundry image doesn't have curl (#11242) (57da116)
- Get_next_power_exponent off by 1 (#11169) (80ec19e)
- Let static_assert fail with the provided message (noir-lang/noir#7005) (9189120)
- lsp: Suggest all possible trait methods, but only visible ones (noir-lang/noir#7027) (3ed22ed)
- Max_note_len computation (#10438) (099c17b)
- nargo_fmt: Don't consider identifiers the same if they are equal… (noir-lang/noir#7043) (3ed22ed)
- nargo_fmt: Let doc comment could come after regular comment (noir-lang/noir#7046) (3ed22ed)
- Non-determinism from under constrained checks (noir-lang/noir#6945) (3883a0e)
- Prover node aborts execution at epoch end (#11111) (2a77616), closes #10802
- Prover node does not err upon an empty epoch (#11204) (2c3ab84)
- Reduce memory usage in mem2reg (noir-lang/noir#7053) (3ed22ed)
- Remove arch tag in sandbox images (#11233) (80a872d)
- Remove max lookup table size constant (for now) (#11095) (7e9e268)
- Reproduce and fix bytecode blowup (noir-lang/noir#6972) (9189120)
- Require generic trait impls to be in scope to call them (noir-lang/noir#6913) (9189120)
- Restore upload_logs script in use by acir bench (2d88497)
- Return trait impl method as FuncId if there's only one (noir-lang/noir#6989) (9189120)
- Revert "chore: use L1 Tx Utils" (#11167) (f4e5c79)
- Sequencer times out L1 tx at end of L2 slot (#11112) (1b88a34)
- Show output of
test_program_is_idempotent
on failure (noir-lang/noir#6942) (3883a0e) - Start RC at 1 again (noir-lang/noir#6958) (3883a0e)
- Underconstrained bug (#11174) (0b3088b)
- Update fs max user instances for k8s (#11220) (b42da6d)
- Use absolute path for docker bind in e2e-test (f2885ec)
- Wrong module to lookup trait when using crate or super (noir-lang/noir#6974) (3883a0e)
Miscellaneous
- Add
noir_check_shuffle
as a critical library (noir-lang/noir#7056) (3ed22ed) - Add cli option to specify withdrawer address in the add-l1-validator … (#11199) (107f175)
- Add end step for formatting workflow (noir-lang/noir#7070) (3ed22ed)
- Add memsuspend to parallel in bootstrap (#11040) (c78cb82)
- Add more Field use info (noir-lang/noir#7019) (9189120)
- Add more protocol circuits to reports (noir-lang/noir#6977) (3ed22ed)
- Add reproduction case for bignum test failure (noir-lang/noir#6464) (3883a0e)
- Add short circuit in ssa-gen for known if conditions (noir-lang/noir#7007) (9189120)
- Also print test output to stdout in CI (noir-lang/noir#6930) (3883a0e)
- avm: Fix mac build (#11147) (1775e53)
- avm: Improve column stats (#11135) (535a14c)
- avm: Re-enable bb-prover tests in CI, change some to check-circuit-only, enable multi-enqueued call tests (#11180) (3092212)
- avm: Vm2 followup cleanup (#11186) (6de4013)
- Block building benchmark via github-action-benchmark (#11202) (c107b6b), closes #11154
- Bump
noir-gates-diff
(noir-lang/noir#6943) (3883a0e) - Bump
noir-gates-diff
(noir-lang/noir#6944) (3883a0e) - Bump
noir-gates-diff
(noir-lang/noir#6949) (3883a0e) - Bump arkworks to version
0.5.0
(noir-lang/noir#6871) (3883a0e) - Change default loglevel for sandbox (#11237) (4712870)
- ci: Check various inliner aggressiveness setttings in Brillig reports (noir-lang/noir#7049) (3ed22ed)
- ci: Easier to use mac ci (#11194) (9ab4cee)
- ci: Ensure that prover.toml files in protocol circuits are in sync (#11141) (db769bd)
- ci: Fail properly in
external-repo-checks
(noir-lang/noir#6988) (9189120) - ci: Try fix boxes-test (#11162) (a66349f)
- ci: Unify compilation/execution report jobs that take averages with single runs (noir-lang/noir#7048) (3ed22ed)
- Clarity fix in docs (noir-lang/noir#7016) (9189120)
- Clippy warning fix (noir-lang/noir#7051) (3ed22ed)
- Delete a bunch of dead code from
noirc_evaluator
(noir-lang/noir#6939) (3883a0e) - Delete docs for versions which aren't used (noir-lang/noir#7020) (9189120)
- Disable reorg test (#11176) (78bec44)
- Disallow inserting ACIR-only instructions into brillig functions (noir-lang/noir#7017) (9189120)
- docs: Backport 1.0.0-beta.0 doc fixes (noir-lang/noir#7014) (9189120)
- docs: Edit Aztec.nr Guide section (#10866) (4051ba8)
- docs: Remove node pages (#11161) (e494f6b)
- docs: Update tx concepts page (#10947) (d9d9798)
- Document aztec-nargo in readme (#11173) (927eabf)
- Greater stability at 1TPS (#10981) (1c23662)
- Jest reporters for CI (#11125) (90cd9d2)
- Log number of instructions executed for call in AVM. Misc fix. (#11110) (44e01f4)
- Mark
aztec-nr
as expected to compile (noir-lang/noir#7015) (9189120) - Mark casts as able to be deduplicated (noir-lang/noir#6996) (9189120)
- Mark some critical libraries as good again (noir-lang/noir#7065) (3ed22ed)
- Missed test account retrieval simplification in one spot (#11172) (b72234e)
- Move comment as part of #6945 (noir-lang/noir#6959) (3883a0e)
- Move witness computation into class plus some other cleanup (#11140) (d41e9ab)
- Nuke unused
getSiblingPath
oracle (#11090) (36b640a) - Nuking mental model of "packing into a hash" (#11200) (e1ebcc0)
- Only resolved globals monomorphization (noir-lang/noir#7006) (9189120)
- perf: Try using vec-collections's VecSet in AliasSet (noir-lang/noir#7058) (3ed22ed)
- Prover db config (#11126) (9d49393), closes #10267
- Redo typo PR by longxiangqiao (#11109) (b8ef30e)
- Reduce number of iterations of
acvm::compiler::compile
(noir-lang/noir#7050) (3ed22ed) - Reenable reports on rollup root circuits (noir-lang/noir#7061) (3ed22ed)
- Refactor
get_tx_effects_hash_input_helper
(#11213) (5becb99) - Refactor Solidity Transcript and improve error handling in sol_honk flow (#11158) (58fdf87)
- Remove explicit collector address (#11227) (dfb0db5)
- Remove resolve_is_unconstrained pass (noir-lang/noir#7004) (9189120)
- Removing noir bug workaround (#10535) (8be882f)
- Replace relative paths to noir-protocol-circuits (d8619fa)
- Replace relative paths to noir-protocol-circuits (70cad1c)
- Replace relative paths to noir-protocol-circuits (e962534)
- Replace relative paths to noir-protocol-circuits (ba5a589)
- Replace relative paths to noir-protocol-circuits (b7c3fa2)
- Replace relative paths to noir-protocol-circuits (32840c6)
- Require safety doc comment for unsafe instead of
//[@safety](https://github.com/safety)
(noir-lang/noir#6992) (9189120) - Reserve
enum
andmatch
keywords (noir-lang/noir#6961) (9189120) - Rpc server cleanup & misc fixes (#11145) (8a927eb)
- Sanity checking of proving job IDs (#11134) (61c3e95)
- Save kind smoke test logs as artifact (#11212) (1389a5b)
- Separate unconstrained functions during monomorphization (noir-lang/noir#6894) (3883a0e)
- Simplify a couple of enum variants (noir-lang/noir#7025) (9189120)
- Simplify boolean in a mul of a mul (noir-lang/noir#6951) (3883a0e)
- SmallSubgroupIPA tests (#11106) (f034e2a)
- spartan: Making the spartan script install jq (#11231) (7e628cc)
- Test:e2e defaults to no-docker (#10966) (15e0d71)
- Turn on averaging for protocol circuits metrics in CI (noir-lang/noir#6999) (9189120)
- Update aztec-spartan.sh script (#11228) (52b3a87)
- Use DFG in SSA printer (noir-lang/noir#6986) (9189120)
- Use L1 Tx Utils (#10759) (ccf28f5), closes #10464
- Use logs for benchmarking (noir-lang/noir#6911) (3883a0e)
- VariableMerkleTree readability improvements (#11165) (010d1b0)
- Wait for ethereum in each pod (#11238) (9c08e00)