Skip to content

v1.0.0-beta.23

Latest

Choose a tag to compare

@noirwhal noirwhal released this 09 Jul 13:23
bd01f81

1.0.0-beta.23 (2026-07-08)

⚠ BREAKING CHANGES

  • remove deprecated as_slice stdlib methods (#13192)
  • remove deprecated std::hash::keccak module (#13193)
  • stop recording trait methods in module scope (#13102)
  • ACIR instrumentation and optimization (#13085)
  • report ambiguous qualified inherent method calls (#13045)

Features

  • acir_gen: Fold predicated constant-index array_set into AcirValue::Array (#13223) (8ece77d)
  • acir_gen: Initialize parameter-array memory blocks lazily (#13222) (64f7718)
  • acir_gen: Resolve constant-index vector reads at compile time (#13230) (a552266)
  • Add nargo fetch command (#12897) (1012df5)
  • Add max(), min(), and bits() methods for all integer types (#11741) (41259e3)
  • Allow assigning through any reference expression with * (#12951) (9defb61)
  • Batch spill (#13189) (50b9b52)
  • cli: nargo add (#13134) (84a1d84)
  • comptime: Coerce to FunctionDefinition in handle_attribute_arguments (#13194) (0addc04)
  • comptime: Implement named_attribute_args for {Type|Function}Definition and Module (#13195) (e0a058b)
  • debug: Add source locations to --count-array-copies flag (#12067) (d3d1686)
  • fmt: Comments reflow (#12746) (8799409)
  • fuzz: just fuzz-repro recipe and nargo-project emission for AST fuzzer seeds (#13272) (64e8d78)
  • Handle super::super in paths (#12968) (4fd0144)
  • Impl doc comments (#13050) (c9ac18b)
  • Preserve global identifiers in #[abi] contract artifact output (#12660) (7c46f7d)
  • Record inherent impls (#12995) (683cded)
  • Search in nargo doc (#13175) (40fe6c9)
  • ssa: Deduplicate pure Brillig calls from a Brillig caller (#12806) (17be732)
  • ssa: Only merge modified array indices (#11512) (e4dcf93)
  • ssa: Post-flattening validation pass for escaping side-effects (#13084) (d13cf5e)
  • ssa: Validate stated purity against computed purity in parser (#12812) (e26f412)
  • stdlib: Add BoundedVec::set_len (#13136) (8a14aa4)
  • stdlib: Add BoundedVec::truncate (#13137) (96542e5)
  • Validate array_set in-place mut not followed by read w/o inc_rc (#12707) (ebfbc28)
  • Validate between SSA passes (#13235) (9adfbec)

Bug Fixes

  • acir: Add defensive checks from security audit (#13006) (a09fdbc)
  • acir: Handle empty array value_types in make_array_set_result_value (#13035) (16b3034)
  • acvm: Treat Opcode::Call as a side-effect boundary in RangeOptimizer (#13130) (d62435e)
  • Add mono error for functions in globals (#13100) (73cc02b)
  • AES-tagged length diagnostics in comptime aes128_encrypt (#13065) (042fd6a)
  • Agree on zero-limb field decomposition across all contexts (#12849) (9da3371)
  • Allow reference parameters when dispatching brillig functions (#12882) (7438ffe)
  • Always restore local_module during elaboration (#12916) (b3fa07d)
  • Assume associated-type bounds from a trait's where clause in default methods (#13283) (9db4e14)
  • ast_fuzzer: Stop misreporting IndexOutOfBounds and Dynamic string assert errors (#12878) (351ae05)
  • Avoid constant-folding ICE on const Brillig calls with ZST array arguments (#13119) (79c9b2c)
  • Avoid indent underflow panic when pretty-printing an unmatched right brace (#13177) (45e4c76)
  • brillig: Assert checked add/mul destination does not alias operands (#12998) (f3db4f4)
  • brillig: Assert opcode is a Call in add_unresolved_external_call (#13001) (a7d6e50)
  • brillig: Make unsigned modulo unrepresentable on signed operands (#13000) (e744d00)
  • brillig: Reclaim spill slot when a reloaded transient value dies (#12949) (c90321f)
  • Check comptime-only types in constructor expressions (#13056) (c70a803)
  • Check deferred private import in intermediate segments (#13039) (b829499)
  • Check failures in intermediate CheckedCasts in monomorphization (#12919) (510e128)
  • Check infix result type during monomorphization (#12917) (e0f6faa)
  • Check intermediate use segment visibility against its declaring module (#13227) (b550aa9)
  • Check intermediate path segment visibility against its declaring module (#13204) (b9e47b2)
  • Check module visibility for TypedExpr (#13304) (eee1497)
  • Check that arrays in the ABI do not exceed the witness size limit (#13252) (357d738)
  • Check that msm and embedded_curve_add points are all or nothing (#12658) (83cc0ec)
  • ci: Skip benchmark store steps on external PRs (#12932) (83427a1)
  • ci: Skip playwright install-deps for chromium-only jobs (#13173) (04903a3)
  • Clearer errors for associated item failed accesses (#13182) (d1b5374)
  • Comptime as_witness returns unit, not its argument (#12865) (81b4693)
  • comptime: Array incorrectly displayed as vector (#13248) (4a587d9)
  • comptime: Copy vector pop/remove temporaries to avoid aliasing source (#12887) (62ec6eb)
  • comptime: Reject Field division by zero in Integer::Div (#13017) (d3838cf)
  • Construct element_type_sizes on demand to avoid unused memory block (#13278) (3771b2e)
  • Disallow unpacking in ABI (#12721) (cd55ea9)
  • Do not inline in vector ops with dynamic array (#13242) (8167acd)
  • docs: Noindex non-default documentation versions (#13072) (3d8b4ea)
  • Don't leak private type/value through colliding import (#12848) (fd5a8bc)
  • driver: Embed the stdlib in debug builds (#13052) (2cddd32)
  • Eager normalization of concrete trait constraints (#12888) (bce9698)
  • Elaborate comptime macro call arguments in comptime context (#12953) (6819bcd)
  • elaborator: Suppress duplicate ICE when interpreting parser-error nodes in comptime (#12679) (1a5e8b3)
  • Enforce caller visibility for trait methods in as_typed_expr (#12851) (1c0757b)
  • Ensure index-out-of-bounds for empty-sized arrays (#12807) (7c08b6d)
  • enums: Resolve turbofish on enum variants (#13070) (75f36a8)
  • Error on oracle functions with reference parameters (1) (#12947) (cb7060d)
  • expand: Make it work in the stdlib (#12772) (0b6f6e9)
  • Fix 'multiple impls match' error for partially-generic object types (#12899) (bf93ec7)
  • Fix grandparent trait associated types (#12890) (3125ff4)
  • Fix more overlapping impls (#12850) (0eb306d)
  • Fix SSA normalization when the entry block is a back-edge (#13249) (737e5e5)
  • Follow bindings on Kind (#12925) (3246b5e)
  • frontend: Accept signed integer MIN literals in type position (#13131) (1fb4846)
  • frontend: Clean error when break in while condition w/o outer loop (#13171) (df368ec)
  • frontend: Disallow #[fuzz] attribute on impl methods (#13143) (5b02de0)
  • frontend: Disallow #[fuzz]/#[test] on trait declaration methods (#13205) (bb01f1e)
  • frontend: Disallow pub on fold function parameters and return (#12895) (d477fd3)
  • frontend: Eagerly resolve queued trait constraints at call sites (#9430) (#12397) (a1de3e9)
  • frontend: Force unconstrained when monomorphizing into unconstrained fn target (#12831) (85425c7)
  • frontend: Keep all captures when lowering comptime fmtstr with duplicate names (#13129) (9e56dc9)
  • frontend: Keep signature usage-marks when a meta is resolved inside a speculative probe (#13140) (54fb7a5)
  • frontend: Keep singleton tuple arity in comptime pattern reflection (#12879) (e108bab)
  • frontend: Key elided associated-type bounds on rigid generic (#13030) (4d9e4b9)
  • frontend: Key foreign proxy cache on monomorphized type (#12863) (1b396ed)
  • frontend: Pin associated types in assumed trait constraints (#13015) (bc46fb6)
  • frontend: Preserve generic args for primitive type aliases in static trait methods (#13042) (ba6b35c)
  • frontend: Preserve nested CheckedCast validation obligations (#13018) (27e7af9)
  • frontend: Reject #[oracle] attribute on impl methods (#12808) (affc2c0)
  • frontend: Reject enum returns across the unconstrained boundary in monomorphization too (#12976) (c5911bf)
  • frontend: Reject returning enums from unconstrained to constrained, allow passing them in (#12955) (e20bdd1)
  • frontend: Resolve deferred struct fields when elaborating struct patterns (#12880) (f6741be)
  • frontend: Resolve trait associated constant accessed via trait name (#13112) (1b9e0d0)
  • frontend: Restore full method context on comptime macro re-entry (#13135) (0c4552f)
  • frontend: Roll back GlobalValue::Resolving sentinel on failed comptime global resolution (#13067) (bab1ec1)
  • frontend: Tag expr_as_lambda param vector as [(Expr, Option<UnresolvedType>)] (#12971) (0140a14)
  • frontend: Use a deterministic hash for comptime hash builtins (#12934) (508db1a)
  • frontend: Use resolution scope for trait-in-scope selection in Expr::resolve (#13027) (f0e3473)
  • fuzz: Handle Div overflow message equivalence (#13036) (a724dd4)
  • fuzz: Print Program 2 in AST-fuzzer comparison output and remove dead reduce.sh (#13270) (f3797f7)
  • Handle zero step for loop termination (#13240) (9cf8778)
  • Implement attributes on trait methods (#13144) (97720eb)
  • Improve the reporting of global and function name clashes (#12973) (8752ed6)
  • Incorrect empty-loop condition for != loops (#13057) (d6418fa)
  • Interpreter maintainability issues (#12999) (1db1bcc)
  • interpreter: Clone nested array in array_set in ACIR (#13247) (d4ba2d1)
  • licm: Don't use loop bounds as a value range for non-unit-step != loops (#12981) (d320275)
  • licm: Guard Div/Mod hoist against inverted induction-variable bounds (#12969) (be37712)
  • Limit killed optimization in ownership pass (#13099) (fd5f541)
  • Loop induction uses the correct block parameter (#13118) (bd612e8)
  • Loop invariant equality check simplification works with non-unit steps (#12861) (c19a510)
  • Loop pre-header block collection (#12928) (7e0660d)
  • lsp: Show function where clauses in hover (#12985) (eb63bb8)
  • Make FunctionDefinition coercion in meta-attributes work with inherent methods (#13259) (0df1491)
  • Make attr eval order deterministic in impls (#12935) (1aead53)
  • Make check_type reuse checks from convert_type (#12950) (e0a4d38)
  • Make missing-Brillig-constraint check order-independent (#13113) (61d1c53)
  • Missing lazy FuncMeta elaboration in global resolution (#13059) (0e18f89)
  • Monomorphization error when calling a disabled function (#13145) (23042de)
  • monomorphization: Include closure env (#12775) (f757381)
  • monomorphization: Set unconstrained flag on no-capture lambda type (#13005) (f98ff8e)
  • nargo_doc: Decode generic trait-impl anchors in search URLs (#13224) (4d5036f)
  • nargo: Report dependency cycles using normalized manifest paths (#13048) (ef7c1c5)
  • Nested match unreachable warning (#13185) (1c2ec0d)
  • Never lookup a path as a value from scracth, in the prefix case (#13210) (9831014)
  • Order match struct-pattern fields by declaration, not field name (#12798) (94083b2)
  • ownership: Do not confirm/kill on assignment when break or continue is present (#13153) (83edc2a)
  • ownership: Tripwire for array/slice match patterns in ownership pass (#12970) (369ff2b)
  • Parse parenthesized numeric type expressions before outer operators (#13109) (e0b8f27)
  • Parse type-level integers in .as_type (#13043) (53a93a1)
  • parser: Preserve tails spliced onto interned lvalues in as_expr (#13032) (39140f1)
  • Preserve clone around str_as_bytes / array_as_str_unchecked (#12815) (3c775dc)
  • Preserve fully-qualified trait call syntax if it clashes with inherent method (#13207) (2ae554d)
  • Preserve hex seeds in nightly fuzz Slack alert (#13094) (d8610fa)
  • Preserve non-UTF-8 bytes when rendering comptime values to CtString (#13168) (6456a59)
  • Prevent stack overflow on deeply nested blocks (#13184) (f212af7)
  • Properly check visibility in Self::method paths (#12747) (a0738c3)
  • Prune stale folded str<N> assertion error selectors from ABI (#13061) (28a7738)
  • Publish msgpack_tagged crates before acir_field (#13273) (7f08967)
  • Push comptime interpreter call stack before mutating binding state (#13066) (12c0a03)
  • Rebind NamedGeneric when unquoted in a new context (#13238) (2964d57)
  • Record trait default method locations for backtraces (#13120) (6f84214)
  • Reject comptime oracle functions (#12915) (4a08294)
  • Reject macro-spliced private types (#12956) (02f00e9)
  • Report "Assertion is always false" diagnostic for contract crates (#12926) (214091e)
  • Report ambiguous qualified inherent method calls (#13045) (ecd0282)
  • Report logical index in OOB error in dynamic composite arrays (#13237) (d09de15)
  • Resolve enum variants and associated constants via a type-path expression (#13241) (9309d1a)
  • Resolve shadowed comptime variables in source order (#12867) (c82488b)
  • Revalidate resolved TypedExpr values in their final expansion context (#13179) (61b3eee)
  • ssa_gen: Always record error type, even for strings (#12858) (a927d68)
  • ssa: Add constraint when simplifying zero-sized vector remove (#13069) (4b972fd)
  • ssa: Allocate a fresh element-type-sizes block for grown helper tables (#13123) (1e00f5b)
  • ssa: Bail out of Brillig array offset when shifted index overflows addressing bits (#13122) (7e07343)
  • ssa: Classify VectorPushBack as PureWithPredicate (#12814) (802730c)
  • ssa: Correct transposed sha256_compression constant-fold bindings (#12975) (3692122)
  • ssa: Do not deduplicate with instruction result potentially modified by vector intrinsic (#12993) (8d3564e)
  • ssa: Don't treat skipped equality-guarded loop bodies as executed (#12901) (29265c1)
  • ssa: Exclude swapped-in loop siblings from array_set RC alias-set in array_set_rc_invariant (#12929) (6e49076)
  • ssa: Gate squared-zero constraint decomposition on Field or checked Mul (#12544) (79cc04f)
  • ssa: Immutable-reference call arguments must keep prior stores live (#12938) (fc74f57)
  • ssa: Keep capacity backing in interpreter vector_pop_back (#12936) (fa5c62e)
  • ssa: Keep checked overflow check when simplifying +0/-0/*1 on unfit operands (#12982) (18906e1)
  • ssa: Keep out-of-bounds constant array-get well-typed for arrays of tuples (#13178) (932383b)
  • ssa: Keep sibling loop-bound error through ACIR unroll fallback (#12873) (359f162)
  • ssa: Map Brillig-offset constant index back to logical space when folding make_array reads (#13200) (b8a24b5)
  • ssa: Only restore unfit operands for signed checked arithmetic (#13221) (8faface)
  • ssa: Preserve non-target branch arguments in check_for_double_jmp (#13060) (5450c1e)
  • ssa: Preserve out-of-range signed constants in SSA parser roundtrip (#12896) (2521f7b)
  • ssa: Preserve shared join block params when unrolling a constant JmpIf (#12964) (dd40bc4)
  • ssa: Prevent re-insertion in load_store_forwarding while relying on a frozen AliasAnalysis (#13040) (28540bd)
  • ssa: Reduce numeric values to range when printing in the SSA interpreter (#13282) (7fdc101)
  • ssa: Reject dynamic vector intrinsics over reference elements (#12902) (dac0942)
  • ssa: Reject raw narrowing casts in the SSA validator (#13051) (0259e88)
  • ssa: Remap loop-header instruction results referenced outside the loop during unrolling (#13245) (78816cf)
  • ssa: Restore unfit operands in the interpreter's checked arithmetic (#13142) (c1c4a75)
  • ssa: Retain MSM scalar limb range checks for constant infinity points (#12885) (235e1a7)
  • ssa: Trap constant out-of-bounds Brillig array ops instead of al… (#13114) (4123bd2)
  • ssa: Treat ECDSA predicate as a u1 in simplify_signature (#12974) (6dd90ec)
  • ssa: Truncate signed-to-signed narrowing cast constants (#12826) (d09400c)
  • stdlib: Absorb tail not prefix in Poseidon2Hasher residual block (#13063) (dfb2f42)
  • stdlib: Preserve tail storage in constrained extend_from_bounded_vec (#13098) (2a6b6be)
  • Stop AST fuzzer generating constrained deref-assignments of reference-containing values (#12910) (2ce7864)
  • Trait vs module-private-impl visibility (#13101) (69d41f6)
  • Ts codegen for Unit/void functions (#13183) (536fe15)
  • Turbofish when used on a constructor in match patterns (#13236) (8757d13)
  • Two-pass trait constraint resolution (#12809) (fe9a60a)
  • Undo trait self binding in monomorphization (#12921) (5090141)
  • Unify in comptime checked_transmute (#13011) (6150bbc)
  • Update forward order to max cost ordering (#13170) (2519cea)
  • Use global comptime-value in ABI (#12714) (7a7deaa)
  • Use trait impl generics in associated constant lookup (#12758) (21a26c2)
  • wasm: Reject unsafe numbers in ABI (#13161) (247356c)
  • wasm: Reject unsafe numbers in ABI after decoding them (#13226) (0353770)
  • Wrong index increment in databus for nested arrays (#12773) (08479d4)
  • Zeroed array of references must not share one allocation (#12869) (780d409)

Miscellaneous Chores