Skip to content

Latest commit

 

History

History
2334 lines (1875 loc) · 321 KB

CHANGELOG.md

File metadata and controls

2334 lines (1875 loc) · 321 KB

Changelog

0.33.0 (2024-08-06)

⚠ BREAKING CHANGES

  • parse block and if statements independently of expressions in statements (#5634)
  • frontend: Restrict numeric generic types to unsigned ints up to u32 (#5581)

Features

Bug Fixes

0.32.0 (2024-07-18)

⚠ BREAKING CHANGES

Features

Bug Fixes

  • Account for the expected kind when resolving turbofish generics (#5448) (82c335d)
  • Add more thorough check for whether a type is valid when passing it from constrained code to unconstrained code (#5009) (318314d)
  • Address compiler warnings coming from stdlib (#5351) (758a905)
  • Allow importing notes from other contracts and inject them in the macros (AztecProtocol/aztec-packages#7349) (98e72ac)
  • Avoid duplicating constant arrays (#5287) (3ef3645)
  • Avoid panic in type system (#5332) (52d48ff)
  • Avoid unnecessarily splitting expressions with multiplication terms with a shared term (#5291) (19884f1)
  • Change panic to error in interpreter (#5446) (d44f882)
  • Complete call stacks with no_predicates (#5418) (df73fe2)
  • Correct range for overlfowing/underflowing integer assignment (#5416) (30c50f5)
  • Correctly detect signed/unsigned integer overflows/underflows (#5375) (0603bd3)
  • docs: Fix broken docs link to gihtub (#5398) (70ebf60)
  • Don't benchmark the "prove" command as it doesn't exist anymore (#5323) (3bb3b03)
  • Don't lazily elaborate functions (#5282) (0ea608f)
  • Don't panic when using undefined variables in the interpreter (#5381) (94d209a)
  • Don't type error when calling certain trait impls in the interpreter (#5471) (299703c)
  • Error on empty function bodies (#5519) (6a7f593)
  • Error when a local function is called in a comptime context (#5334) (7cd4a4d)
  • Fix incorrect return type being applied to stdlib functions modulus_be_bytes(), modulus_be_bits(), etc. (#5278) (91a9b72)
  • Fix issue with unresolved results (#5453) (c4154cb)
  • Fix tokenization of unquoted types in macros (#5326) (6673c8b)
  • Fix usage of #[abi(tag)] attribute with elaborator (#5298) (64dd48a)
  • Go to definition from use statement (#5390) (53bae3b)
  • Go to definition from aliased use (#5396) (90b135c)
  • Handle struct with nested arrays in oracle return values (#5244) (a30814f)
  • ICE when using a comptime let variable in runtime code (#5391) (9fb7e4d)
  • Ignore calls to Intrinsic::AsWitness during brillig codegen (#5350) (9c11fd2)
  • Implement generic functions in the interpreter (#5330) (d8b9870)
  • Included argshash computation in public call_interfaces and cleanup (AztecProtocol/aztec-packages#7354) (98e72ac)
  • Lsp find struct reference in return locations and paths (#5404) (e1bcb73)
  • Lsp hover wasn't always working (#5515) (951e821)
  • Lsp struct rename/reference difference (#5411) (580c16d)
  • Move BigInt modulus checks to runtime in brillig (#5374) (741d339)
  • Mutability in the comptime interpreter (#5517) (8cab4ac)
  • nargo_fmt: Account for spaces before the generic list of a function (#5303) (ec728dd)
  • Never panic in LSP inlay hints (#5534) (6b11445)
  • Prevent no_predicates from removing predicates in calling function (#5452) (66244b6)
  • Remove compile-time error for invalid indices (#5466) (323e0c9)
  • Remove panics in the interpreter when a builtin fails to type check (#5382) (c8161c8)
  • Replace expects in interpreter with errors (#5383) (ac738b2)
  • Replace panic in monomorphization with an error (#5305) (49e1b0c)
  • Replace std::HashMap with FxHashMap to fix frontend indeterminism (#5385) (9501495)
  • Revert PR #5449 (#5548) (a213c15)
  • Run macro processors in the elaborator (#5472) (89642c2)
  • Runtime brillig bigint id assignment (#5369) (a8928dd)
  • Skip emission of brillig calls which will never be executed (#5314) (b859ef9)
  • Truncate flamegraph text to the right (AztecProtocol/aztec-packages#7333) (3f71169)
  • Update in_contract flag before handling function metadata in elaborator (#5292) (4c4ea2d)
  • Use proper serialization in AbiValue (#5270) (d08b7b9)

0.31.0 (2024-06-17)

⚠ BREAKING CHANGES

Features

Bug Fixes

  • Add support for nested arrays returned by oracles (#5132) (f846879)
  • Apply self type from generic trait constraint before instantiating identifiers (#5087) (2b4755c)
  • Auto dereference trait methods in the elaborator (#5124) (56c1a85)
  • Check for public args in aztec functions (AztecProtocol/aztec-packages#6355) (436bbda)
  • Disable if optimization (#5240) (a2816db)
  • elaborator: Fix duplicate methods error (#5225) (87a1d8e)
  • elaborator: Fix regression introduced by lazy-global changes (#5223) (fde432a)
  • elaborator: Invert unconstrained check (#5176) (967c0fa)
  • elaborator: Lazily elaborate globals (#5191) (9c99a97)
  • Error for allocate instructions in acir-gen (#5200) (58c7532)
  • experimental elaborator: Avoid calling add_generics twice on trait methods (#5108) (7d8c0a3)
  • experimental elaborator: Clear generics after elaborating type aliases (#5136) (b0a7d0b)
  • experimental elaborator: Fix impl Trait when --use-elaborator is selected (#5138) (7ea5962)
  • experimental elaborator: Fix definition kind of globals and tuple patterns with --use-elaborator flag (#5139) (a140dec)
  • experimental elaborator: Fix duplicate resolve_type on self type and don't leak a trait impl's generics (#5102) (db561e2)
  • experimental elaborator: Fix frontend tests when --use-elaborator flag is specified (#5145) (d6122eb)
  • experimental elaborator: Fix global values used in the elaborator (#5135) (e73cdbb)
  • experimental elaborator: Fix globals which use function calls (#5172) (ab0b1a8)
  • experimental elaborator: Fix panic in the elaborator (#5082) (ffcb410)
  • experimental elaborator: Only call add_generics once (#5091) (f5d2946)
  • Fix panic in get_global_let_statement (#5177) (b769b01)
  • frontend: Call trait method with mut self from generic definition (#5041) (89846cf)
  • frontend: Correctly monomorphize turbofish functions (#5049) (fd772e7)
  • frontend: Resolve object types from method calls a single time (#5131) (3afe023)
  • Temporarily revert to_radix blackbox (AztecProtocol/aztec-packages#6304) (436bbda)
  • Use plain integer addresses for opcodes in DAP disassembly view (#4941) (d43ba1b)
  • Use predicate for curve operations (#5076) (145b909)
  • Wrapping in signed division (#5134) (29baeb4)

Miscellaneous Chores

0.30.0 (2024-05-20)

⚠ BREAKING CHANGES

Features

Bug Fixes

  • Compute the correct slice length when coercing from a literal array of complex types (#4986) (f3f1150)
  • Defer overflow checks for unsigned integers to acir-gen (#4832) (b577761)
  • Fix no predicates for brillig with intermediate functions (#5015) (9c6de4b)
  • Fixed several vulnerabilities in U128, added some tests (#5024) (e5ab24d)
  • Ignore no_predicates in brillig functions (#5012) (b541e79)
  • Set index and value to 0 for array_get with predicate (#4971) (c49d3a9)

Miscellaneous Chores

0.29.0 (2024-05-03)

⚠ BREAKING CHANGES

  • use distinct return value witnesses by default (#4951)
  • Bit shift is restricted to u8 right operand (#4907)

Features

  • Add #[inline(tag)] attribute and codegen (#4913) (1ec9cdc)
  • Add de-sugaring for impl Trait in function parameters (#4919) (8aad2e4)
  • Add variable size sha256 (#4920) (dbfca58)
  • Bit shift is restricted to u8 right operand (#4907) (c4b0369)
  • Complex outputs from acir call (#4952) (2e085b9)
  • experimental: comptime globals (#4918) (8a3c7f1)
  • Handle BrilligCall opcodes in the debugger (#4897) (b380dc4)
  • Handle no_predicates attribute (#4942) (0ce04d3)
  • Handle empty response foreign calls without an external resolver (#4959) (0154bde)
  • Optimize array sets in if conditions (alternate version) (#4716) (a87c655)
  • Use distinct return value witnesses by default (#4951) (5f1b584)

Bug Fixes

  • Ban self-referential structs (#4883) (800f670)
  • Discard ref counts during unrolling (#4923) (91062db)
  • Ensure where clauses propagated to trait default definitions (#4894) (aaac0f6)
  • Move remove_if_else pass after second inlining (#4976) (96fb3e9)
  • Nested array equality (#4903) (0cf2e2a)
  • Require for all foldable functions to use distinct return (#4949) (d4c6806)
  • Use annotated type when checking declaration (#4966) (f7fa696)

0.28.0 (2024-04-24)

⚠ BREAKING CHANGES

Features

Bug Fixes

Miscellaneous Chores

0.27.0 (2024-04-10)

⚠ BREAKING CHANGES

Features

Bug Fixes

  • "Types in a binary operation should match, but found T and T" (#4648) (30c9f31)
  • acvm: Mark outputs of Opcode::Call solvable (#4708) (8fea405)
  • Correct ICE panic messages in brillig convert_black_box_call (#4761) (f3eee6c)
  • Error when a type variable is unbound during monomorphization instead of defaulting to Field (#4674) (03cdba4)
  • Field comparisons (#4704) (079cb2a)
  • Impl search no longer selects an impl if multiple are applicable (#4662) (0150600)
  • Last use analysis & make it an SSA pass (#4686) (0d3d5fd)
  • Slice coercions (#4640) (c0bae17)
  • ssa: Accurate constant type for slice dummy data in flattening (#4661) (b87654e)
  • ssa: Do not use get_value_max_num_bits when we want pure type information (#4700) (b55a580)
  • ssa: Fix slice intrinsic handling in the capacity tracker (#4643) (1b50ce1)
  • Unknown slice lengths coming from as_slice (#4725) (f21129e)
  • Update commit for noir-gates-diff (#4773) (a9766c5)

0.26.0 (2024-03-25)

⚠ BREAKING CHANGES

Features

Bug Fixes

  • acir_gen: More granular element sizes array check (#4528) (f93d16e)
  • Added error messages for passing oracles and references from unconstrained to constrained functions (#4570) (265bd8b)
  • Allow non-integer globals to reference struct methods (#4490) (00d6494)
  • Dynamic assert messages in brillig (#4531) (e24d3fc)
  • Evaluate operators in globals in types (#4537) (c8aa16b)
  • Make nargo the default binary for cargo run (#4554) (de4986e)
  • Signed integer comparisons in brillig (#4579) (938d5e8)
  • ssa: Use accurate type during SSA AsSlice simplficiation (#4610) (0473497)
  • Substitute generics when checking the field count of a type (#4547) (eeeebac)

Miscellaneous Chores

0.25.0 (2024-03-11)

⚠ BREAKING CHANGES

Features

Bug Fixes

Miscellaneous Chores

0.24.0 (2024-02-12)

⚠ BREAKING CHANGES

Features

Bug Fixes

  • Accurate tracking of slice capacities across blocks (#4240) (7420dbb)
  • Allow function calls in global definitions (#4320) (0dc205c)
  • Allow performing bitwise NOT on unsigned integers (#4229) (b3ddf10)
  • Apply generic arguments from trait constraints before instantiating identifiers (#4121) (eb6fc0f)
  • Apply range constraints to return values from unconstrained functions (#4217) (3af2a89)
  • Apply trait constraints from method calls (#4152) (68c5486)
  • Better errors for missing fn keyword (#4154) (057c208)
  • Check for tests in all packages before failing due to an unsatisfied test filter (#4114) (1107373)
  • Clean error when attemping to return a slice from Brillig to ACIR (#4280) (bcad4ec)
  • Correct result when assigning shared arrays in unconstrained code (#4210) (bdd8a96)
  • docs: Codegen docs before cutting a new version (#4183) (2914310)
  • Ensure that destination register is allocated when moving between registers in brillig gen (#4316) (ca0a56e)
  • Ensure that unconstrained entrypoint functions don't generate constraints (#4292) (fae4ead)
  • From field with constant values (#4226) (593916b)
  • lsp: Crash when file not in workspace (#4146) (cf7130f)
  • lsp: Replace panics with errors (#4209) (26e9618)
  • Maintain correct type when simplifying x ^ x (#4082) (9d83c2b)
  • Message formatting for assert statement (#4323) (3972ead)
  • Prevent debugger crashing on circuits with no opcodes (#4283) (2e32845)
  • Prevent declarations of blackbox functions outside of the stdlib (#4177) (9fb6b09)
  • Remove panic from init_log_level in acvm_js (#4195) (2e26530)
  • Respect order in bubble up for redundant asserts (#4109) (189aa48)
  • Revert "correct result when assigning shared arrays" and added regression test (#4333) (05e78b3)
  • Save the data bus to the current function before generating others (#4047) (0a5bd4f)
  • Simplify constant assert messages into ConstrainError::Static (#4287) (fd15052)
  • Ssa typing for array & slice indexes (#4278) (4074bab)
  • Ssa typing for assign_lvalue_index (#4289) (37f149c)
  • SSA typing for right shifts (#4302) (41ee1aa)
  • Ssa typing of make_offset (#4277) (e4378ee)
  • Track graphs of item dependencies to find dependency cycles (#4266) (61eabf1)
  • Type check ACIR mutable reference passed to brillig (#4281) (7e139de)
  • Update array method type signatures in the docs (#4178) (7c0a955)
  • Zero out input to to_radix calls if inactive (#4116) (3f5bad3)

Miscellaneous Chores

0.23.0 (2024-01-22)

⚠ BREAKING CHANGES

  • Ban nested slices (#4018)
  • Breaking changes from aztec-packages (#3955)
  • Rename Arithmetic opcode to AssertZero (#3840)
  • remove circuit methods from noir_wasm (#3869)

Features

  • Add assert_max_bit_size method to Field (#4016) (bc9a44f)
  • Add noir-compiler checks to aztec_macros (#4031) (420a5c7)
  • Add a --force flag to force a full recompile (#4054) (27a8e68)
  • Add dependency resolver for noir_wasm and implement FileManager for consistency with native interface (#3891) (c29c7d7)
  • Add foreign call support to noir_codegen functions (#3933) (e5e52a8)
  • Add MVP nargo export command (#3870) (fbb51ed)
  • Add support for codegenning multiple functions which use the same structs in their interface (#3868) (1dcfcc5)
  • Added efficient field comparisons for bn254 (#4042) (1f9cad0)
  • Assert maximum bit size when creating a U128 from an integer (#4024) (8f9c7e4)
  • Avoid unnecessary range checks by inspecting instructions for casts (#4039) (378c18e)
  • Breaking changes from aztec-packages (#3955) (5be049e)
  • Bubble up Instruction::Constrains to be applied as early as possible. (#4065) (66f5cdd)
  • Cached LSP parsing (#4083) (b4f724e)
  • Comparison for signed integers (#3873) (bcbd49b)
  • Decompose Instruction::Cast to have an explicit truncation instruction (#3946) (35f18ef)
  • Decompose Instruction::Constrain into multiple more basic constraints (#3892) (51cf9d3)
  • Docker testing flow (#3895) (179c90d)
  • Extract parsing to its own pass and do it in parallel (#4063) (569cbbc)
  • Implement Eq trait on curve points (#3944) (abf751a)
  • Implement DAP protocol in Nargo (#3627) (13834d4)
  • Implement generic traits (#4000) (916fd15)
  • Implement Operator Overloading (#3931) (4b16090)
  • lsp: Cache definitions for goto requests (#3930) (4a2140f)
  • lsp: Goto global (#4043) (15237b3)
  • lsp: Goto struct member inside Impl method (#3918) (99c2c5a)
  • lsp: Goto trait from trait impl (#3956) (eb566e2)
  • lsp: Goto trait method declaration (#3991) (eb79166)
  • lsp: Goto type alias (#4061) (dc83385)
  • lsp: Goto type definition (#4029) (8bb4ddf)
  • lsp: Re-add code lens feature with improved performance (#3829) (8f5cd6c)
  • Optimize array ops for arrays of structs (#4027) (c9ec0d8)
  • Optimize logic gate ACIR-gen (#3897) (926460a)
  • Prefer AcirContext-native methods for performing logic operations (#3898) (0ec39b8)
  • Remove range constraints from witnesses which are constrained to be constants (#3928) (afe9c7a)
  • Remove truncation from brillig casts (#3997) (857ff97)
  • Remove truncations which can be seen to be noops using type information (#3953) (cc3c2c2)
  • Remove unnecessary predicate from Lt instruction (#3922) (a63433f)
  • Simplify chains of casts to be all in terms of the original ValueId (#3984) (2384d3e)
  • Simplify multiplications by 0 or 1 in ACIR gen (#3924) (e58844d)
  • Support for u128 (#3913) (b4911dc)
  • Support printing more types (#4071) (f5c4632)
  • Sync aztec-packages (#4011) (fee2452)
  • Sync commits from aztec-packages (#4068) (7a8f3a3)
  • Use singleton WasmBlackBoxFunctionSolver in noir_js (#3966) (10b28de)

Bug Fixes

  • Acir gen doesn't panic on unsupported BB function (#3866) (34fd978)
  • Allow abi encoding arrays of structs from JS (#3867) (9b713f8)
  • Allow abi encoding tuples from JS (#3894) (f7fa181)
  • Allow ast when macro errors (#4005) (efccec3)
  • Allow lsp to run inside of a docker container (#3876) (2529977)
  • Bit-shifts for signed integers (#3890) (6ddd98a)
  • Checks for cyclic dependencies (#3699) (642011a)
  • debugger: Crash when stepping through locations spanning multiple lines (#3920) (223e860)
  • Don't fail if no tests and the user didn't provide a pattern (#3864) (decbd0f)
  • Fix advisory issue in cargo-deny (#4077) (19baea0)
  • Fixing dark mode background on the CTA button (#3882) (57eae42)
  • Fixup exports from noir_wasm (#4022) (358cdd2)
  • Handle multiple imports in the same file (#3903) (219423e)
  • Hoist constraints on inputs to top of program (#4076) (447aa34)
  • Implement missing codegen for BlackBoxFunc::EcdsaSecp256r1 in brillig (#3943) (2c5eceb)
  • Improve nargo test output (#3973) (3ab5ff4)
  • Make constant_to_radix emit a slice instead of an array (#4049) (5cdb1d0)
  • Operator overloading & static trait method references resolving to generic impls (#3967) (f1de8fa)
  • Preserve brillig entrypoint functions without arguments (#3951) (1111465)
  • Prevent Instruction::Constrains for non-primitive types (#3916) (467948f)
  • Remove panic for adding an invalid crate name in wasm compiler (#3977) (7a1baa5)
  • Return error rather instead of panicking on invalid circuit (#3976) (67201bf)
  • Search all levels of struct nesting before codegenning primitive types (#3970) (13ae014)
  • Update generics docs to mention we have traits now (#3980) (c2acdf1)

Miscellaneous Chores

0.22.0 (2023-12-18)

⚠ BREAKING CHANGES

  • Remove unused methods on ACIR opcodes (#3841)
  • Remove backend field from artifacts (#3819)
  • Remove partial backend feature (#3805)

Features

  • Add context-centric based API for noir_wasm (#3798) (19155d0)

Miscellaneous Chores

0.21.0 (2023-12-15)

⚠ BREAKING CHANGES

  • remove unused source-resolver package (#3791)
  • Make file manager read-only to the compiler (#3760)

Features

Bug Fixes

  • try_unify no longer binds types on failure (#3697) (f03e581)
  • Add missing assertion to test (#3765) (bcbe116)
  • Add negative integer literals (#3690) (8b3a68f)
  • Allow trait method references from the trait name (#3774) (cfa34d4)
  • Deserialize odd length hex literals (#3747) (4000fb2)
  • docs: Trigger update-docs workflow when the release-please PR gets merged and not on every merge to master (#3677) (9a3d1d2)
  • Initialize strings as u8 array (#3682) (8da40b7)
  • lsp: Package resolution on save (#3794) (14f2fff)
  • Parse negative integer literals (#3698) (463ab06)
  • Pub is required on return for entry points (#3616) (7f1d796)
  • Remove noirc_driver/aztec feature flag in docker (#3784) (a48d562)
  • Remove include-keys option (#3692) (95d7ce2)
  • Revert change to modify version in workspace file for acvm dependencies (#3673) (0696f75)
  • Sequence update-lockfile workflow so it gets modified after the ACVM version in the root has been changed (#3676) (c00cd85)
  • ssa: Handle array arguments to side effectual constrain statements (#3740) (028d65e)
  • Stop cloning Traits! (#3736) (fcff412)
  • Stop issuing unused variable warnings for variables in trait definitions (#3797) (0bb44c3)
  • Unsigned integers cannot be negated (#3688) (f904ae1)

Miscellaneous Chores

0.20.0 (2023-12-01)

⚠ BREAKING CHANGES

  • avoid integer overflows (#2713)
  • return Pedersen structure in stdlib (#3190)
  • noir-wasm outputs debug symbols (#3317)
  • move mimc to hash submodule (#3361)
  • bump MSRV to 1.71.1 (#3353)
  • Add semver checks for the compiler version in Nargo.toml (#3336)
  • Move circuit serialization circuit into acir (#3345)
  • change stdlib function pedersen to pedersen_commitment (#3341)
  • expose pedersen hash in acir and bb solver (#3269)
  • Switch to new pedersen implementation (#3151)
  • Pass ACIR to ACVM by reference rather than passing ownership (#2872)
  • Make for loops a statement (#2975)
  • traits: trait functions with a default implementation must not be followed by a semicolon (#2987)
  • wasm: improve and simplify wasm compiler interface (#2976)
  • wasm: update wasm artifacts to match cli artifacts (#2973)
  • Maintain shape of foreign call arguments (#2935)
  • update to bb version 0.7.3 (#2729)
  • noir_js: Rename inner and outer proof methods (#2845)
  • generateWitness now returns a serialized witness file (#2842)
  • Issue an error when a module is declared twice & fix module search path (#2801)
  • Default integers to u64 (#2764)

Features

  • compute_note_hash_and_nullifier check (#3216) (4963c6c)
  • abi: Throw errors rather than returning string from noirc_abi_wasm (#2817) (df7b42c)
  • abi: Tuples as inputs/outputs to main (#2899) (d8bd78f)
  • acir: Enable dynamic indices on non-homogenous arrays (#2703) (622d2e4)
  • acir: Handle dynamic array operations for nested slices (#3187) (e026319)
  • acir: Set dynamic array values (#3054) (e871866)
  • acvm_js: Export black box solver functions (#2812) (da8a98e)
  • acvm: Separate ACVM optimizations and transformations (#2979) (5865d1a)
  • Add --check option to nargo fmt for dry-run formatting verification (#3530) (4469707)
  • Add destroy method to Noir (#3105) (7e40274)
  • Add execute method to Noir class (#3081) (17bdd7e)
  • Add FieldElement::from<usize> implementation (#3647) (8b7c5aa)
  • Add noir_codegen package (#3392) (6c4cd4d)
  • Add ACIR serializer C++ codegen (#2961) (7556982)
  • Add an options object to BarretenbergBackend constructor (#3105) (7e40274)
  • Add aztec selectors for event structs (#2983) (982380e)
  • Add bb interface implementation (#2902) (fe92dc0)
  • Add check for overlapping generic traits (#3307) (8cf81b6)
  • Add conditional compilation of methods based on the underlying field being used (#3045) (2e008e2)
  • Add crate for pub modifier (#3271) (e7a1a1a)
  • Add debugger commands to introspect (and modify) the current state (#3391) (9e1ad85)
  • Add experimental REPL-based debugger (#2995) (281c696)
  • Add exports of JS black box solvers to noirJS (#3295) (8369871)
  • Add generic count check for trait methods (#3382) (a9f9717)
  • Add JS types for ABI and input maps (#3023) (599e7a1)
  • Add LSP command to profile opcodes in vscode (#3496) (6fbf77a)
  • Add lsp formatting (#3433) (286c876)
  • Add noir types package (#2893) (e8fc868)
  • Add package version to Nargo.toml metadata (#3427) (9e1717c)
  • Add profile info print out (#3425) (a8b5fa8)
  • Add semver checks for the compiler version in Nargo.toml (#3336) (0e530cf)
  • Add special case for boolean AND in acir-gen (#3615) (824039b)
  • Add support for tuple values in noir_codegen (#3592) (346d75f)
  • Allow a trait to be implemented multiple times for the same struct (#3292) (51831df)
  • Allow providing custom foreign call executors to execute_circuit (#3506) (d27db33)
  • Allow traits to have generic functions (#3365) (0f9af65)
  • Avoid integer overflows (#2713) (7d7d632)
  • Aztec-packages (#3599) (2cd6dc3)
  • Aztec-packages (#3626) (e0a96ea)
  • Cache debug artifacts (#3133) (c5a6229)
  • Check where clauses when searching for trait impls (#3407) (84c6604)
  • Codegen typed interfaces for functions in noir_codegen (#3533) (290c463)
  • Compile without a backend (#3437) (d69cf5d)
  • Complex slice inputs for dynamic slice builtins (#3617) (8b23b34)
  • Contract events in artifacts (#2873) (4765c82)
  • Copy on write optimization for brillig (#3522) (da29c02)
  • Data bus (#3508) (6b0bdbc)
  • debugger: Highlight current src code loc (#3174) (6b87582)
  • debugger: Print limited source code context (#3217) (dcda1c7)
  • Default integers to u64 (#2764) (01cb041)
  • Dynamic indexing of non-homogenous slices (#2883) (72c3661)
  • Enable the fmt command in the help menu (#3328) (63d414c)
  • Expand trait impl overlap check to cover generic types (#3320) (a01549b)
  • Export CompiledCircuit from codegened TS (#3589) (e06c675)
  • Expose pedersen hash in acir and bb solver (#3269) (0108b6c)
  • Extract Brillig VM to allow step debugging (#3259) (f6431f9)
  • Format infix expressions (#3001) (7926ada)
  • formatter: Add formatter support for array literals (#3061) (a535321)
  • Handle constant index operations on simple slices (#3464) (7ae12f8)
  • Handle warnings in evaluator (#3205) (5cfd156)
  • Implement bound_constraint_with_offset in terms of AcirVars (#3233) (8d89cb5)
  • Implement automatic dereferencing for index expressions (#3082) (8221bfd)
  • Implement automatic dereferencing for indexing lvalues (#3083) (6e2b70a)
  • Implement euclidean division and signed division in terms of AcirVars (#3230) (b8b7782)
  • Implement impl specialization (#3087) (44716fa)
  • Implement integer printing (#3577) (6601408)
  • Implement raw string literals (#3556) (87a302f)
  • Implement string escape sequences (#2803) (f7529b8)
  • Implement where clauses on impls (#3324) (4c3d1de)
  • lsp: Add "info" codelens (#2982) (80770d9)
  • lsp: Add goto definition for functions (#3656) (7bb7356)
  • Maintain shape of foreign call arguments (#2935) (f7869e6)
  • Make generic impls callable (#3297) (8d9b738)
  • Manage breakpoints and allow restarting a debugging session (#3325) (f502108)
  • Nargo test runtime callstacks and assert messages without string matching (#2953) (1b6a4e6)
  • noir_js: Allow providing foreign call handlers in noirJS (#3294) (c76b0f8)
  • Noir-wasm outputs debug symbols (#3317) (f9933fa)
  • Noir-wasm takes dependency graph (#3213) (a2c8ebd)
  • Old docs issues (#3195) (26746c5)
  • Optimize euclidean division acir-gen (#3121) (2c175c0)
  • Oracle mocker for nargo test (#2928) (0dd1e77)
  • Pass ACIR to ACVM by reference rather than passing ownership (#2872) (b3a9c34)
  • Pass brillig bytecode to VM by reference (#3030) (4ee290b)
  • Perform compile-time euclidean division on constants (#3231) (3866d7e)
  • Prevent unnecessary witness creation in euclidean division (#2980) (c6f660e)
  • Properly track equivalence of witnesses generated for black box functions (#3428) (20b70c2)
  • Provide formatting subcommand (#2640) (a38b15f)
  • Publish aztec build of noir_wasm (#3049) (3b51f4d)
  • Refactor debugger and separate core from UI (#3308) (8466810)
  • Remove redundant predicate from brillig quotients (#2784) (a8f18c5)
  • Remove type arrays for flat slices (#3466) (8225b2b)
  • Remove unnecessary truncation of boolean multiplication (#3122) (39dbcf1)
  • Replace boolean range constraints with arithmetic opcodes (#3234) (949222c)
  • Return compilation errors from noir_wasm (#3091) (55f63c9)
  • Return Pedersen structure in stdlib (#3190) (be30d59)
  • Reuse witnesses more when interacting with memory (#3658) (5a4a73d)
  • Reuse witnesses which have been assigned constant values during ACIR gen (#3137) (9eb43e2)
  • Save Brillig execution state in ACVM (#3026) (88682da)
  • Send and receive unflattened public inputs to backend (#3543) (a7bdc67)
  • Solve fixed_base_scalar_mul black box functions in rust (#3153) (1c1afbc)
  • ssa: Multiple slice mergers (#2753) (8f76fe5)
  • stdlib: Optimize constraint counts in sha256/sha512 (#3253) (d3be552)
  • Switch to new pedersen implementation (#3151) (35fb3f7)
  • traits: Add impl Trait as function return type #2397 (#3176) (4cb2024)
  • traits: Add trait impl for buildin types (#2964) (2c87b27)
  • traits: Added checks for duplicated trait associated items (types, consts, functions) (#2927) (d49492c)
  • traits: Allow multiple traits to share the same associated function name and to be implemented for the same type (#3126) (004f8dd)
  • traits: Implement trait bounds typechecker + monomorphizer passes (#2717) (5ca99b1)
  • traits: Improve support for traits static method resolution (#2958) (0d0d8f7)
  • traits: Multi module support for traits (#2844) (4deb07f)
  • Use ranges instead of a vector for input witness (#3314) (b12b7ec)
  • wasm: Improve and simplify wasm compiler interface (#2976) (1b5124b)
  • wasm: Update wasm artifacts to match cli artifacts (#2973) (ce16c0b)

Bug Fixes

  • "Missing trait impl" error in trait dispatch (#3440) (52daaec)
  • compute_note_hash_and_nullifier compiler check (#3351) (4e2d35f)
  • 3275: Activate brillig modulo test with negative integers (#3318) (31c493c)
  • 3300: Cache warnings into debug artefacts (#3313) (cb5a15b)
  • ACIR optimizer should update assertion messages (#3010) (758b6b6)
  • acvm: Return false rather than panicking on invalid ECDSA signatures (#2783) (155abc0)
  • Add pub modifier to grumpkin functions (#3036) (f8990d7)
  • Add compiler error message for invalid input types (#3220) (989e80d)
  • Add size checks to integer literals (#3236) (7f8fe8c)
  • Adding proving key initialization (#3322) (3383740)
  • Allow where clause on all functions and improve error message (#3465) (1647e33)
  • Allow constructors in parentheses in if conditions and for ranges (#3219) (ad192d1)
  • Allow two TypeVariable::Constant(N) to unify even if their constants are not equal (#3225) (cc4ca4b)
  • Apply predicate to over/underflow checks (#3494) (fc3edf7)
  • aztec_nr: Serialise arrays of structs (#3401) (e979a58)
  • Change non-constant argument errors from to_be_radix from ICE to proper error (#3048) (19ce286)
  • Check for overflow with hexadecimal inputs (#3004) (db1e736)
  • Compiler version error message (#3558) (026a358)
  • Complete debug metadata (#3228) (2f6509d)
  • Conditionally run the "Create or Update PR" step in acir artifacts rebuild workflow (#2849) (63da875)
  • Corrected the formatting of error message parameters in index out of bounds error (#3630) (3bba386)
  • debugger: Step through foreign calls and breakpoints inside Brillig blocks (#3511) (5d77d7a)
  • Determinism of fallback transformer (#3100) (12daad1)
  • Disable modulo for fields (#3009) (7e68976)
  • Disallow returning constant values (#2978) (79c2e88)
  • Do not perform dead instruction elimination on mod,div unless rhs is constant (#3141) (af3d771)
  • Do not simply divisions (#3664) (e5b981b)
  • Docker builds (#3620) (f3eac52)
  • docs: Update editUrl path for docusaurus (#3184) (4646a93)
  • Download expected bb version if installed backend has version mismatch (#3150) (3f03435)
  • Error message for assigning the wrong type is backwards #2804 (#2805) (b2d62bf)
  • Finer bit size in bound constrain (#2869) (68385e2)
  • Fix aztec library after nargo fmt (#3014) (f43083c)
  • Fix crash when using undeclared traits (#3509) (8bb095a)
  • Fix lexer error formatting (#3274) (74bd517)
  • Fix method program_counter, change method signature (#3012) (5ea522b)
  • Fix panic in some cases when calling a private function (#2799) (078d5df)
  • Fix panic when using repeated arrays which define variables (#3221) (c4faf3a)
  • Fix should_fail_with (#2940) (4f07b84)
  • Fix subtract with underflow in flattening pass (#2796) (f2ed505)
  • Fixing versioning workflow (#3296) (3d5e43a)
  • Flatten public inputs according to their index in numerial rather than ascii order (#3605) (a1f6343)
  • Follow dependencies when looking for a struct (#3405) (561b1b8)
  • Force recompilation when output_debug flag is set. (#2898) (9854416)
  • frontend: Error on unsupported integer annotation (#2778) (90c3d8b)
  • Impl methods are no longer placed in contracts (#3255) (b673b07)
  • Improve error message when multiplying unit values (#2950) (57b7c55)
  • Include .nr and .sol files in builds (#3039) (ae8d0e9)
  • Issue an error when a module is declared twice & fix module search path (#2801) (7f76910)
  • Lack of cjs package version (#2848) (adc2d59)
  • Make for loops a statement (#2975) (0e266eb)
  • Match rust behaviour for left-shift overflow (#3518) (2d7ceb1)
  • Minor problems with aztec publishing (#3095) (0fc8f20)
  • Move mimc to hash submodule (#3361) (3ec29f1)
  • Overflow checks for constant folding (#3420) (b7a6383)
  • Parse parenthesized lvalues (#3058) (50ca58c)
  • Prevent duplicated assert message transformation (#3038) (082a6d0)
  • Prevent mutating immutable bindings to mutable types (#3075) (d5ee20e)
  • println: Enable printing of arrays/strings >2 in fmt strings (#2947) (309fa70)
  • Recompile artefacts from a different noir version (#3248) (7347b27)
  • Remove cast for field comparisons in brillig (#2874) (1fc1fdb)
  • Remove duplication of code to load stdlib files (#2868) (b694aab)
  • Remove quotes from println output (#3574) (127b6aa)
  • Remove sha2_block test (#3360) (a48c03b)
  • Restrict fill_internal_slices pass to acir functions (#3634) (0cad9aa)
  • Return error rather than panicking on unreadable circuits (#3179) (d4f61d3)
  • Show println output before an error occurs in nargo execute (#3211) (2f0b80d)
  • Silence unused variable warnings in stdlib (#2795) (5747bfe)
  • Somewhat reduce mem2reg memory usage (#3572) (9b9ed89)
  • Split conditional_regression tests (#2774) (8ed8832)
  • ssa: Do not replace previously constrained values (#2647) (d528844)
  • traits: Trait functions with a default implementation must not be followed by a semicolon (#2987) (a3593c0)
  • Transform hir before type checks (#2994) (a29b568)
  • Update link to recursion example (#3224) (10eae15)
  • Use 128 bits for constant bit shift (#3586) (2ca9b05)
  • Use pedersen_hash for merkle tree (#3357) (6b74d31)
  • Verify impls arising from function calls exist (#3472) (d7f919d)

Miscellaneous Chores

0.19.5 (2023-12-01)

Features

Bug Fixes

  • Corrected the formatting of error message parameters in index out of bounds error (#3630) (3bba386)
  • Do not simply divisions (#3664) (e5b981b)
  • Docker builds (#3620) (f3eac52)
  • Flatten public inputs according to their index in numerial rather than ascii order (#3605) (a1f6343)
  • Restrict fill_internal_slices pass to acir functions (#3634) (0cad9aa)

0.19.4 (2023-11-28)

Features

  • Add --check option to nargo fmt for dry-run formatting verification (#3530) (4469707)
  • Add support for tuple values in noir_codegen (#3592) (346d75f)
  • Codegen typed interfaces for functions in noir_codegen (#3533) (290c463)
  • Export CompiledCircuit from codegened TS (#3589) (e06c675)
  • Remove type arrays for flat slices (#3466) (8225b2b)
  • Send and receive unflattened public inputs to backend (#3543) (a7bdc67)

Bug Fixes

0.19.3 (2023-11-22)

Features

  • Add debugger commands to introspect (and modify) the current state (#3391) (9e1ad85)
  • Add LSP command to profile opcodes in vscode (#3496) (6fbf77a)
  • Add lsp formatting (#3433) (286c876)
  • Allow providing custom foreign call executors to execute_circuit (#3506) (d27db33)
  • Compile without a backend (#3437) (d69cf5d)
  • Enable the fmt command in the help menu (#3328) (63d414c)
  • Handle constant index operations on simple slices (#3464) (7ae12f8)

Bug Fixes

  • "Missing trait impl" error in trait dispatch (#3440) (52daaec)
  • Adding proving key initialization (#3322) (3383740)
  • Allow where clause on all functions and improve error message (#3465) (1647e33)
  • Apply predicate to over/underflow checks (#3494) (fc3edf7)
  • debugger: Step through foreign calls and breakpoints inside Brillig blocks (#3511) (5d77d7a)
  • Fix crash when using undeclared traits (#3509) (8bb095a)
  • Match rust behaviour for left-shift overflow (#3518) (2d7ceb1)
  • Verify impls arising from function calls exist (#3472) (d7f919d)

0.19.2 (2023-11-07)

Features

0.19.1 (2023-11-07)

Features

  • acir: Handle dynamic array operations for nested slices (#3187) (e026319)
  • Properly track equivalence of witnesses generated for black box functions (#3428) (20b70c2)
  • Use ranges instead of a vector for input witness (#3314) (b12b7ec)

Bug Fixes

  • Follow dependencies when looking for a struct (#3405) (561b1b8)
  • Overflow checks for constant folding (#3420) (b7a6383)

0.19.0 (2023-11-02)

⚠ BREAKING CHANGES

  • avoid integer overflows (#2713)
  • return Pedersen structure in stdlib (#3190)
  • noir-wasm outputs debug symbols (#3317)
  • move mimc to hash submodule (#3361)
  • bump MSRV to 1.71.1 (#3353)
  • Add semver checks for the compiler version in Nargo.toml (#3336)
  • Move circuit serialization circuit into acir (#3345)
  • change stdlib function pedersen to pedersen_commitment (#3341)

Features

  • compute_note_hash_and_nullifier check (#3216) (4963c6c)
  • Add noir_codegen package (#3392) (6c4cd4d)
  • Add check for overlapping generic traits (#3307) (8cf81b6)
  • Add exports of JS black box solvers to noirJS (#3295) (8369871)
  • Add generic count check for trait methods (#3382) (a9f9717)
  • Add semver checks for the compiler version in Nargo.toml (#3336) (0e530cf)
  • Allow a trait to be implemented multiple times for the same struct (#3292) (51831df)
  • Allow traits to have generic functions (#3365) (0f9af65)
  • Avoid integer overflows (#2713) (7d7d632)
  • Check where clauses when searching for trait impls (#3407) (84c6604)
  • Expand trait impl overlap check to cover generic types (#3320) (a01549b)
  • Extract Brillig VM to allow step debugging (#3259) (f6431f9)
  • Handle warnings in evaluator (#3205) (5cfd156)
  • Implement where clauses on impls (#3324) (4c3d1de)
  • Make generic impls callable (#3297) (8d9b738)
  • Manage breakpoints and allow restarting a debugging session (#3325) (f502108)
  • noir_js: Allow providing foreign call handlers in noirJS (#3294) (c76b0f8)
  • Noir-wasm outputs debug symbols (#3317) (f9933fa)
  • Perform compile-time euclidean division on constants (#3231) (3866d7e)
  • Refactor debugger and separate core from UI (#3308) (8466810)
  • Return Pedersen structure in stdlib (#3190) (be30d59)

Bug Fixes

Miscellaneous Chores

0.18.0 (2023-10-25)

⚠ BREAKING CHANGES

  • expose pedersen hash in acir and bb solver (#3269)
  • Switch to new pedersen implementation (#3151)

Features

  • Add crate for pub modifier (#3271) (e7a1a1a)
  • Cache debug artifacts (#3133) (c5a6229)
  • debugger: Print limited source code context (#3217) (dcda1c7)
  • Expose pedersen hash in acir and bb solver (#3269) (0108b6c)
  • Implement bound_constraint_with_offset in terms of AcirVars (#3233) (8d89cb5)
  • Implement euclidean division and signed division in terms of AcirVars (#3230) (b8b7782)
  • Noir-wasm takes dependency graph (#3213) (a2c8ebd)
  • Replace boolean range constraints with arithmetic opcodes (#3234) (949222c)
  • stdlib: Optimize constraint counts in sha256/sha512 (#3253) (d3be552)
  • Switch to new pedersen implementation (#3151) (35fb3f7)

Bug Fixes

  • Add size checks to integer literals (#3236) (7f8fe8c)
  • Fix lexer error formatting (#3274) (74bd517)
  • Impl methods are no longer placed in contracts (#3255) (b673b07)
  • Recompile artefacts from a different noir version (#3248) (7347b27)
  • Show println output before an error occurs in nargo execute (#3211) (2f0b80d)

0.17.0 (2023-10-20)

⚠ BREAKING CHANGES

  • Pass ACIR to ACVM by reference rather than passing ownership (#2872)
  • Make for loops a statement (#2975)
  • traits: trait functions with a default implementation must not be followed by a semicolon (#2987)
  • wasm: improve and simplify wasm compiler interface (#2976)
  • wasm: update wasm artifacts to match cli artifacts (#2973)

Features

  • acir: Set dynamic array values (#3054) (e871866)
  • acvm: Separate ACVM optimizations and transformations (#2979) (5865d1a)
  • Add destroy method to Noir (#3105) (7e40274)
  • Add execute method to Noir class (#3081) (17bdd7e)
  • Add ACIR serializer C++ codegen (#2961) (7556982)
  • Add an options object to BarretenbergBackend constructor (#3105) (7e40274)
  • Add aztec selectors for event structs (#2983) (982380e)
  • Add conditional compilation of methods based on the underlying field being used (#3045) (2e008e2)
  • Add experimental REPL-based debugger (#2995) (281c696)
  • Add JS types for ABI and input maps (#3023) (599e7a1)
  • debugger: Highlight current src code loc (#3174) (6b87582)
  • Format infix expressions (#3001) (7926ada)
  • formatter: Add formatter support for array literals (#3061) (a535321)
  • Implement automatic dereferencing for index expressions (#3082) (8221bfd)
  • Implement automatic dereferencing for indexing lvalues (#3083) (6e2b70a)
  • Implement impl specialization (#3087) (44716fa)
  • lsp: Add "info" codelens (#2982) (80770d9)
  • Nargo test runtime callstacks and assert messages without string matching (#2953) (1b6a4e6)
  • Old docs issues (#3195) (26746c5)
  • Optimize euclidean division acir-gen (#3121) (2c175c0)
  • Pass ACIR to ACVM by reference rather than passing ownership (#2872) (b3a9c34)
  • Pass brillig bytecode to VM by reference (#3030) (4ee290b)
  • Prevent unnecessary witness creation in euclidean division (#2980) (c6f660e)
  • Provide formatting subcommand (#2640) (a38b15f)
  • Publish aztec build of noir_wasm (#3049) (3b51f4d)
  • Remove unnecessary truncation of boolean multiplication (#3122) (39dbcf1)
  • Return compilation errors from noir_wasm (#3091) (55f63c9)
  • Reuse witnesses which have been assigned constant values during ACIR gen (#3137) (9eb43e2)
  • Save Brillig execution state in ACVM (#3026) (88682da)
  • Solve fixed_base_scalar_mul black box functions in rust (#3153) (1c1afbc)
  • traits: Add impl Trait as function return type #2397 (#3176) (4cb2024)
  • traits: Add trait impl for buildin types (#2964) (2c87b27)
  • traits: Added checks for duplicated trait associated items (types, consts, functions) (#2927) (d49492c)
  • traits: Allow multiple traits to share the same associated function name and to be implemented for the same type (#3126) (004f8dd)
  • traits: Improve support for traits static method resolution (#2958) (0d0d8f7)
  • wasm: Improve and simplify wasm compiler interface (#2976) (1b5124b)
  • wasm: Update wasm artifacts to match cli artifacts (#2973) (ce16c0b)

Bug Fixes

  • ACIR optimizer should update assertion messages (#3010) (758b6b6)
  • Add pub modifier to grumpkin functions (#3036) (f8990d7)
  • Add compiler error message for invalid input types (#3220) (989e80d)
  • Allow constructors in parentheses in if conditions and for ranges (#3219) (ad192d1)
  • Allow two TypeVariable::Constant(N) to unify even if their constants are not equal (#3225) (cc4ca4b)
  • Change non-constant argument errors from to_be_radix from ICE to proper error (#3048) (19ce286)
  • Check for overflow with hexadecimal inputs (#3004) (db1e736)
  • Complete debug metadata (#3228) (2f6509d)
  • Determinism of fallback transformer (#3100) (12daad1)
  • Disable modulo for fields (#3009) (7e68976)
  • Disallow returning constant values (#2978) (79c2e88)
  • Do not perform dead instruction elimination on mod,div unless rhs is constant (#3141) (af3d771)
  • docs: Update editUrl path for docusaurus (#3184) (4646a93)
  • Download expected bb version if installed backend has version mismatch (#3150) (3f03435)
  • Fix aztec library after nargo fmt (#3014) (f43083c)
  • Fix method program_counter, change method signature (#3012) (5ea522b)
  • Fix panic when using repeated arrays which define variables (#3221) (c4faf3a)
  • Include .nr and .sol files in builds (#3039) (ae8d0e9)
  • Make for loops a statement (#2975) (0e266eb)
  • Minor problems with aztec publishing (#3095) (0fc8f20)
  • Parse parenthesized lvalues (#3058) (50ca58c)
  • Prevent duplicated assert message transformation (#3038) (082a6d0)
  • Prevent mutating immutable bindings to mutable types (#3075) (d5ee20e)
  • Return error rather than panicking on unreadable circuits (#3179) (d4f61d3)
  • traits: Trait functions with a default implementation must not be followed by a semicolon (#2987) (a3593c0)
  • Transform hir before type checks (#2994) (a29b568)
  • Update link to recursion example (#3224) (10eae15)

0.16.0 (2023-10-03)

⚠ BREAKING CHANGES

  • Maintain shape of foreign call arguments (#2935)

Features

Bug Fixes

  • Fix should_fail_with (#2940) (4f07b84)
  • Force recompilation when output_debug flag is set. (#2898) (9854416)
  • Improve error message when multiplying unit values (#2950) (57b7c55)
  • println: Enable printing of arrays/strings >2 in fmt strings (#2947) (309fa70)

0.15.0 (2023-09-28)

⚠ BREAKING CHANGES

  • update to bb version 0.7.3 (#2729)

Features

Bug Fixes

Miscellaneous Chores

0.14.1 (2023-09-27)

Bug Fixes

  • Remove cast for field comparisons in brillig (#2874) (1fc1fdb)
  • Remove duplication of code to load stdlib files (#2868) (b694aab)

0.14.0 (2023-09-26)

⚠ BREAKING CHANGES

  • noir_js: Rename inner and outer proof methods (#2845)
  • generateWitness now returns a serialized witness file (#2842)
  • Issue an error when a module is declared twice & fix module search path (#2801)
  • Default integers to u64 (#2764)

Features

  • abi: Throw errors rather than returning string from noirc_abi_wasm (#2817) (df7b42c)
  • acir: Enable dynamic indices on non-homogenous arrays (#2703) (622d2e4)
  • Default integers to u64 (#2764) (01cb041)
  • Implement string escape sequences (#2803) (f7529b8)
  • Remove redundant predicate from brillig quotients (#2784) (a8f18c5)
  • traits: Implement trait bounds typechecker + monomorphizer passes (#2717) (5ca99b1)

Bug Fixes

  • acvm: Return false rather than panicking on invalid ECDSA signatures (#2783) (155abc0)
  • Conditionally run the "Create or Update PR" step in acir artifacts rebuild workflow (#2849) (63da875)
  • Error message for assigning the wrong type is backwards #2804 (#2805) (b2d62bf)
  • Fix panic in some cases when calling a private function (#2799) (078d5df)
  • Fix subtract with underflow in flattening pass (#2796) (f2ed505)
  • frontend: Error on unsupported integer annotation (#2778) (90c3d8b)
  • Issue an error when a module is declared twice & fix module search path (#2801) (7f76910)
  • Lack of cjs package version (#2848) (adc2d59)
  • Silence unused variable warnings in stdlib (#2795) (5747bfe)
  • Split conditional_regression tests (#2774) (8ed8832)
  • ssa: Do not replace previously constrained values (#2647) (d528844)

Miscellaneous Chores

  • generateWitness now returns a serialized witness file (#2842) (57d3f37)
  • noir_js: Rename inner and outer proof methods (#2845) (71dbbb8)

0.13.0 (2023-09-21)

⚠ BREAKING CHANGES

  • constrain is now a hard error (#2758)

Features

  • Add pub modifier (#2754) (dda964e)
  • Add support for attributes on structs (#2733) (7b3df8e)
  • Add wrapping functions in stdlib and use them in relevant test cases (#2725) (49ab121)
  • aztec-noir: Abstract storage (#2750) (5481344)
  • Constrain is now a hard error (#2758) (388a2b1)
  • Refine Noir.js API (#2732) (e79f1ed)
  • Short-circuit compilation and read build artifacts from file if program is unchanged (#2743) (87fea4b)
  • Signed arithmetic (#2748) (a84216d)
  • traits: Implement trait bounds def collector + resolver passes (#2716) (e3d18bb)
  • traits: Type checking for Trait impl method signatures (#2652) (8617008)
  • Variable liveness analysis for brillig (#2715) (ddb05ab)

Bug Fixes

0.12.0 (2023-09-15)

⚠ BREAKING CHANGES

  • Change noir-lang/noir-source-resolver to noir-lang/source-resolver (#2718)
  • use american spelling of "serialize" in stdlib (#2675)
  • Restrict packages to contain at most a single contract (#2668)
  • use two limbs for scalar mul (#2602)

Features

  • Add initial version of noir.js (#2681) (e1687c9)
  • Allow methods defined in a contract to be non-entry points (#2687) (2103b2f)
  • Compile circuits and query circuit sizes in parallel for nargo info (#2665) (f173c05)
  • Compile workspace packages in parallel (#2612) (16e5e4d)
  • Handle should_fail_with case (#2541) (291d002)
  • lsp: Add nargo capabilities for test metadata (#2532) (b4ee23e)
  • nargo: Allow installing custom backends from the CLI (#2632) (c0c462c)
  • parser: Allow multiple attributes (#2537) (7cdff2e)
  • traits: Add default and override of methods (#2585) (98c3ba9)

Bug Fixes

Miscellaneous Chores

  • Change noir-lang/noir-source-resolver to noir-lang/source-resolver (#2718) (31e489e)
  • Restrict packages to contain at most a single contract (#2668) (dc3358b)
  • Use american spelling of "serialize" in stdlib (#2675) (56c96d0)

0.11.1 (2023-09-07)

Features

Bug Fixes

0.11.0 (2023-09-07)

⚠ BREAKING CHANGES

  • stdlib: Rename fixed_base_scalar_mul to be more descriptive (#2488)
  • ACVM 0.24 (#2504)
  • Update to acvm-backend-barretenberg v0.12.0 (#2377)
  • abi: Replace struct name with fully qualified struct path (#2374)
  • Remove keys from preprocessed artifacts (#2283)

Features

  • Add nargo backend ls and nargo backend use command to switch between backends (#2552) (7471147)
  • Add noirc_abi_wasm crate for ABI encoding in JS (#1945) (669e0da)
  • Add support for brillig call stacks in runtime errors (#2549) (a077391)
  • Apply optimizations to unconstrained code (#2348) (8e0f6c4)
  • aztec_noir: Abstract kernel return types (#2521) (2668ac2)
  • nargo: Add commands to install and uninstall custom backends. (#2575) (28a413c)
  • nargo: Add hidden option to produce JSON output from nargo info (#2542) (14d31a5)
  • Pull Language and Opcode support from backend (#2563) (2d0a5e4)
  • ssa: Replace values which have previously been constrained with simplified value (#2483) (9be750a)
  • stdlib: Grumpkin scalar multiplication API (#2586) (dc34bc4)
  • Support for optional assertion messages (#2491) (5f78772)

Bug Fixes

  • Allow usage of decimal string encoding for fields larger than a i128 (#2547) (d73f30e)
  • aztec_noir: Fix compilation of aztec_library.rs (#2567) (a8d0328)
  • aztec_noir: Generalise loop to not always inject a hasher instance (#2529) (9fe4cfd)
  • Black box func slice handling (#2562) (c67cd7d)
  • Initialize structs during def collection, not name resolution (#2528) (f170529)
  • Make def collector ordering more deterministic (#2515) (d49e0af)
  • Modulo with divisor of zero should fail constraints (#2578) (fe6e2e6)

Miscellaneous Chores

  • abi: Replace struct name with fully qualified struct path (#2374) (0920dd0)
  • ACVM 0.24 (#2504) (f06fbdb)
  • Remove keys from preprocessed artifacts (#2283) (4554287)
  • stdlib: Rename fixed_base_scalar_mul to be more descriptive (#2488) (6efc007)
  • Update to acvm-backend-barretenberg v0.12.0 (#2377) (1467275)

0.10.5 (2023-08-30)

Features

Bug Fixes

  • Implement constant folding during the mem2reg pass (#2464) (5361ebd)
  • ssa: Handle right shift with constants (#2481) (13a8c87)

0.10.4 (2023-08-29)

Features

  • Add assert_eq keyword (#2137) (b467a2d)
  • Add test(should_fail) attribute for tests that are meant to fail (#2418) (74af99d)
  • Add syntax for specifying function type environments (#2357) (495a479)
  • Add trait definition representation in DefCollector and HIR (#2338) (406a595)
  • attributes: Enable custom attributes (#2395) (179611b)
  • brillig: Added locations for brillig artifacts (#2415) (3771e52)
  • Create equivalence relationships for intermediate witnesses from multiplication (#2414) (cc2a2d8)
  • frontend: Aztec syntactic sugar (feature flagged) (#2403) (a894a6e)
  • nargo: Support optional directory in git dependencies (#2436) (84fdc55)
  • Perform more checks for compile-time arithmetic (#2380) (1be2b1e)
  • Report compilation warnings before errors (#2398) (a1d1267)
  • ssa: Merge slices in if statements with witness conditions (#2347) (76f7e43)
  • ssa: Reuse existing results for duplicated instructions with no side-effects (#2460) (93726c4)
  • Standard library functions can now be called with closure args (#2471) (feb8d0e)
  • Syntax for environment types now works with generics (#2383) (4609c1a)
  • Update to acvm 0.22.0 (#2363) (e050fab)
  • Use equivalence information from equality assertions to simplify circuit (#2378) (ec5b021)

Bug Fixes

  • acir_gen: Pass accurate contents to slice inputs for bb func calls (#2435) (054642b)
  • acir: Attach locations to MemoryOps in ACIR (#2389) (d7d7f22)
  • Closure lvalue capture bugfix (#2457) (632006a)
  • Correct off-by-one errors in lexer spans (#2393) (bbda9b0)
  • Divide by zero should fail to satisfy constraints for Field and ints (#2475) (1b85816)
  • Implement handling of array aliasing in the mem2reg optimization pass (#2463) (7123fa9)
  • Implement new mem2reg pass (#2420) (7714cd0)
  • lsp: Remove duplicated creation of lenses (#2433) (41b568d)
  • parser: Fixes for the parsing of 'where' clauses (#2430) (fa31015)
  • Remove duplicate T in expected T, found T error on tuple assignment (#2360) (c964ee8)
  • Run wasm nodejs tests with no fails (#2387) (67b6710)
  • Show types in error message in same order as in source code (#2353) (feebee4)
  • ssa: Codegen missing check for unary minus (#2413) (1435a86)
  • ssa: Do not optimize for allocates in constant folding (#2466) (9e272f3)
  • ssa: Remove padding from ToRadix call with constant inputs (#2479) (37bb781)

0.10.3 (2023-08-16)

Features

  • Allow calling higher-order functions with closures (#2335) (75fd3e0)
  • lsp: Add Compile code lens for main function and contracts (#2309) (5fe69c6)
  • lsp: Add Execute code lens for main functions (#2330) (5aa59e0)

Bug Fixes

  • Display warning if last expression of block is unused (#2314) (8110136)

0.10.2 (2023-08-16)

Bug Fixes

  • Prevent dead instruction elimination of brillig functions which may contain side-effects (#2340) (ba8ffd8)

0.10.1 (2023-08-15)

Features

  • Add full call stacks to runtime errors (#2310) (9004181)
  • Improved error message for unexpected return type (#2302) (d7e1e65)
  • ssa: Perform dead instruction elimination on intrinsic functions (#2276) (3fe3f8c)
  • ssa: Switch mem2reg pass to be per function rather than per block (#2243) (0d548b9)
  • stdlib: Implement str as_bytes and into_bytes function (#2298) (92549d4)

0.10.0 (2023-08-15)

⚠ BREAKING CHANGES

  • nargo: Remove -p short flag from the --program-dir flag (#2300)
  • nargo: Replace --contracts flag with contract package type (#2204)
  • nargo: remove flat_witness feature flag (#2208)
  • nargo: Require package type be specified in Nargo.toml (#2134)
  • Allow specifying new package name with --name flag (#2144)
  • nargo: Remove unused flags on LSP command (#2170)
  • Support workspaces and package selection on every nargo command (#1992)
  • nargo: Require package names in Nargo.toml files (#2056)
  • Update to ACVM 0.21.0 (#2051)
  • Drop support for the legacy SSA (#2049)
  • nargo: Rename nargo gates to nargo info (#2038)
  • nargo: Default to new SSA code for compilation

Features

  • acir_gen: RecursiveAggregation opcode and updates to black box func call generation (#2097) (5cb8166)
  • Add assert_constant (#2242) (a72daa4)
  • Add deprecated attribute (#2041) (9e2cf6f)
  • Add Option<T> to noir stdlib (#1781) (920a900)
  • Add basic benchmarking (#2213) (c8fe617)
  • Add slice append (#2241) (90c5d18)
  • Add support for bitshifts by distances known at runtime (#2072) (b0fbc53)
  • Add support for slices of structs and nested slices in brillig (#2084) (620517f)
  • allow returning nested arrays from brillig (#2047) (4378bb8)
  • Allow specifying new package name with --name flag (#2144) (e932599)
  • Drop support for the legacy SSA (#2049) (3f33e44)
  • Execute brillig opcodes with constant inputs at compile-time (#2190) (79af8e6)
  • Format strings for prints (#1952) (3c82721)
  • Implement traits - parser support #2094 (#2230) (589f173)
  • Implement type aliases (#2112) (ce94cb4)
  • Include struct names in ABIs (#2266) (9824ca5)
  • Issue warning for signed integers (#2185) (1be1bcc)
  • Make arrays and slices polymorphic over each other (#2070) (ef91286)
  • nargo: Add --exact flag to nargo test (#2272) (1ad9199)
  • nargo: Add --workspace flag to run commands in every package (#2313) (d6deb0c)
  • nargo: Add support for contracts in nargo check (#2267) (3d1b252)
  • nargo: Default to new SSA code for compilation (ce37718)
  • nargo: Replace --contracts flag with contract package type (#2204) (968e12c)
  • nargo: Require package type be specified in Nargo.toml (#2134) (1c991d0)
  • nargo: Support custom entry points specified in TOML (#2158) (effb02a)
  • Only create new witnesses for distinctiveness when duplicates exist (#2191) (14cbdbc)
  • open functions are unconstrained (be44c7b)
  • Optimize x < 0 for unsigned x to false (#2206) (25bc969)
  • Optimize away constant calls to black box functions (#1981) (47b372c)
  • Optimize equality checks between a boolean and constant (#2201) (478c026)
  • Optionally output a debug artifact on compile (#2260) (edded24)
  • Perform input validation on user's package names (#2293) (87174ac)
  • Perform sorting of constant arrays at compile time (#2195) (c46d7a0)
  • Remove comptime and warn upon usage (#2178) (98d0de3)
  • Remove an unnecessary witness in mul_with_witness (#2078) (9f3198e)
  • replace boolean ANDs with multiplication (#1954) (435ab35)
  • ssa: Add additional BinaryOp simplifications (#2124) (50b2816)
  • Support contract package type in nargo info command (#2249) (d309cc0)
  • Support workspaces and package selection on every nargo command (#1992) (940b189)
  • Update to ACVM 0.21.0 (#2051) (ad118eb)

Bug Fixes

  • Add foreign impl error (#2216) (a53f5ed)
  • Avoid non-determinism in defunctionalization (#2069) (898a9fa)
  • avoid non-determinism in defunctionalize (898a9fa)
  • avoid potential panic in two_complement (#2081) (63c4da0)
  • Fix 3 parser test cases in parsing (#2284) (094aef1)
  • fix an ICE happening when we call a closure result from if/else (#2146) (928b3ad)
  • Fix an ICE when reassigning a mutable lambda variable to one with a different environment type (#2172) (a56db3e)
  • Fix assignment when both mut and &mut are used (#2264) (b07a7ff)
  • Fix methods not mutating fields (#2087) (6acc242)
  • flattening pass no longer overwrites previously mapped condition values (#2117) (f7742ab)
  • globals: Accurately filter literals for resolving globals (#2126) (1c21d0c)
  • Implement .len() in Acir-Gen (#2077) (ab61e3a)
  • Implement slices of structs (#2150) (6abcb79)
  • Initialize numeric generics' type to a polymorphic integer when used in an expression (#2179) (c74b228)
  • lsp: Ensure lsp does not crawl past the root specified (#2322) (d69e372)
  • lsp: Improve dependency resolution in context of Nargo.toml (#2226) (8846bf2)
  • lsp: Pass --program-dir to test command from codelens (#2292) (92e1802)
  • Mutating a variable no longer mutates its copy (#2057) (e85e485)
  • nargo: Allow --program-dir flag anywhere in a command (#2290) (7834fce)
  • nargo: Indicate which TOML file is missing package name (#2177) (9529157)
  • nargo: Make dependencies section optional in TOML (#2161) (099f4d4)
  • nargo: Remove -p short flag from the --program-dir flag (#2300) (cc2af74)
  • Open contract functions are unconstrained (#2052) (be44c7b)
  • optimize contracts built by nargo info (b30b3f4)
  • Optimize contracts built by nargo info (#2259) (b30b3f4)
  • Overflowing assignment will result in an error (#2321) (bc645fc)
  • Prevent panic when passing relative paths to --program-dir (#2324) (9eb45da)
  • properly capture lvalues in closure environments (#2120) (#2257) (ed5273c)
  • remove duplicated name option in nargo new (#2183) (68f5887)
  • Remove last vestige of array of structs to struct of arrays conversion (#2217) (34be264)
  • Rename Option::value to Option::_value (#2127) (8a1ace7)
  • Require package names to be non-empty (#2293) (87174ac)
  • Set location before cast instructions in SSA (#2202) (a72cc96)
  • simplification of overflowing integer operations (#2153) (4a5d2de)
  • stdlib: correct tecurve::contains formula (#1821) (6a10ecf)

Miscellaneous Chores

  • nargo: remove flat_witness feature flag (#2208) (32d52d3)
  • nargo: Remove unused flags on LSP command (#2170) (ccba78e)
  • nargo: Rename nargo gates to nargo info (#2038) (5907e96)
  • nargo: Require package names in Nargo.toml files (#2056) (bb28223)

0.9.0 (2023-07-25)

⚠ BREAKING CHANGES

  • ACIR bytecode encoding with Base64 (#1935)
  • Update to ACVM 0.18.1 and implement missing brillig blackboxes (#1914)

Features

Bug Fixes

  • 9_conditional end to end test (#1951) (2f6741f)
  • regression end to end test (#1965) (59f92e3)
  • Account for missing indices in flattened witness map (#1907) (3972410)
  • Add missing follow_bindings when checking if a type can be casted (#2022) (537c2bd)
  • Add Result to acir gen (#1927) (1f8fd51)
  • Assignment to arrays of structs (#1998) (2c3d976)
  • brillig_gen: Pass correct size of complex types input for brillig foreign calls (#1922) (04c89d2)
  • Create FileManager with a root and normalize filenames against it (#1881) (50c1648)
  • Differentiate stdlib CrateId from others (#1895) (211e251)
  • Don't panic when checking if an undeclared variable is mutable (#1987) (0449518)
  • emit Opcodes in correct order from GeneratedAcir::radix_le_decompose (#1903) (e5fe839)
  • emit opcode in correct order from GeneratedAcir::radix_le_decompose (e5fe839)
  • emit opcodes for sorting variables in order of execution (c43efab)
  • Emit opcodes for sorting variables in order of execution (#1941) (c43efab)
  • Fix auto-deref operations assigning the wrong result type (#1904) (827f78c)
  • lsp: Avoid storing Context until recompiles are possible (#1891) (fb5f20b)
  • method resolution when calling an &mut method with an &mut object type (#1947) (73c2e94)
  • Only flatten main (#1984) (ac865b1)
  • Parse an if followed by a tuple as a block (#1924) (8df4f05)
  • Perform occurs check before binding function types (#2027) (1544786)
  • Prevent if and for from parsing constructor expressions (#1916) (6d3029a)
  • Rebuild tests plus script to include secp256r1 change (#1908) (ca68666)
  • Switch from HashMap to BTreeMap in merge_stores (#2035) (4d179e3)
  • update int division optimization (#1928) (fb872c6)
  • Various fixes for defunctionalization & brillig gen (#1973) (f99f4bf)
  • workaround for LSP dependency resolution (#1865) (a8ac338)

0.8.0 (2023-07-07)

⚠ BREAKING CHANGES

  • ssa_refactor: Add Slices (#1728)
  • nargo: Make proving and verification keys optional (#1880)
  • update to ACVM 0.16.0 (#1863)

Features

  • add signed division (#1831) (d0894ad)
  • allow main to be a brillig function (#1861) (1330a2a)
  • brillig: implemented blackbox functions (#1788) (f9f38de)
  • brillig: wrap brillig fns to be top level (1330a2a)
  • defunctionalization pass for ssa refactor (#1870) (1d5d84d)
  • driver: Remove Driver struct and refactor functions to take Context (#1867) (8895853)
  • driver: Remove Driver struct and refactor functions to take context (8895853)
  • lsp: Add a codelens that runs test when clicked (#1835) (5d64f8a)
  • make array indexes polymophic integers (#1877) (0fc93fa)
  • make use of type information when serialising inputs (#1655) (310368d)
  • recursion working in brillig (#1854) (e55b5a8)
  • ssa refactor: Implement first-class references (#1849) (e5773e4)
  • ssa_refactor: Add Slices (#1728) (4bee979)
  • update to ACVM 0.16.0 (#1863) (9c89def)

Bug Fixes

  • crates: do not process relative dependencies twice (#1856) (b2e71bb)
  • lsp: Ensure stdlib is always added before the check_crate phase (#1840) (cb607f5)
  • lsp: Ensure that stdlib is always added to the driver during the check_crate phase (cb607f5)
  • Prevent comparisons from being used on Fields (#1860) (c8858fd)
  • ssa refactor: Add missed call to resolve (#1817) (fa9be1d)
  • ssa refactor: Fix recursive call to create_value_from_type (#1815) (890a63b)
  • ssa refactor: Prevent stores in 'then' branch from affecting the 'else' branch (#1827) (e068fd4)

Miscellaneous Chores

  • nargo: Make proving and verification keys optional (#1880) (be36c1e)

0.7.1 (2023-06-23)

Features

Bug Fixes

  • lsp: Ensure LSP can compile on Windows (#1794) (2992915)
  • Methods called after being passed through a generic type were not being detected (#1785) (e560cd2)
  • nargo: Update acvm-backend-barretenberg to allow wasm backend compilation (#1771) (97da745)
  • old ssa: fix to_be_bits (#1765) (2541fbd)
  • ssa refactor: ACIR gen NOT integer (#1749) (af749a0)
  • ssa refactor: allow simplified call inserts & fix const radix arg handling (#1774) (46facce)
  • ssa refactor: Fix flattening pass inserting loads before stores occur (#1783) (4293b15)
  • ssa refactor: Fix panic in acir-gen from multiplying values of different types (#1769) (1f9a132)
  • ssa refactor: function inlining orphans calls (#1747) (f30a90f)
  • ssa refactor: Ignore array out of bounds errors when enable_side_effects is false (#1797) (7b7682a)
  • ssa refactor: Implement merging of array values during flattening pass (#1767) (8f24751)
  • ssa refactor: recursion_level decrement (#1745) (e449b92)
  • ssa refactor: recursive branch analysis (#1759) (635b574)
  • ssa refactor: Reset condition value during flattening pass (#1811) (2e330e0)
  • ssa refactor: Speedup acir-gen (#1793) (1e75f0e)
  • ssa refactor: Speedup find-branch-ends (#1786) (861e42c)
  • Update array type when processing staged memory (#1751) (27eb748)

0.7.0 (2023-06-19)

⚠ BREAKING CHANGES

  • Update to acvm 0.14.0 (#1594)
  • update to ACVM 0.13.0 (#1393)
  • stdlib: remove unnecessary merkle functions from stdlib (#1424)
  • stdlib: return update verification functions to return bool
  • stdlib: update stdlib functions to return bool where appropriate (#1409)
  • Change serialization of struct field order to match the user defined order (#1166)
  • Update to ACVM 0.12.0 (#1339)
  • remove concept of noir fallbacks for foreign functions (#1371)
  • nargo: retire print-acir in favour of flag (#1328)

Features

  • Allow warnings by default (#1383) (e7a0d5c)
  • ci: update noir to build wasm with a nix flake file (#1208) (2209369)
  • lsp: Publish diagnostics on file save (#1676) (c53bfc8)
  • Make for-loop range be a polymorphic integer instead of just Field in unconstrained functions (#1583) (77fba56)
  • multiple item imports in use statement (#1466) (1dcd2ee)
  • nargo: Add lsp command to start server that reports no capabilities (#1560) (e28529d)
  • nargo: Allow user-specified file for prover inputs instead of Prover.toml (#1531) (91cbec6)
  • nargo: retire print-acir in favour of flag (#1328) (dffa3c5)
  • pass in closure to Driver to signal backend opcode support (#1349) (1e958c2)
  • remove concept of noir fallbacks for foreign functions (#1371) (dbec6f2)
  • ssa refactor: mem2reg opt pass (#1363) (5d1efd5)
  • stdlib: EdDSA sig verification (#1313) (04a15e0)
  • stdlib: return update verification functions to return bool (2b2be1e)
  • stdlib: update stdlib functions to return bool where appropriate (#1409) (2b2be1e)
  • Update to acvm 0.14.0 (#1594) (f2d6b7b)
  • update to ACVM 0.15.0 (#1616) (3109239)
  • use RAM/ROM opcode when supported by the backend (#1282) (242f07b)

Bug Fixes

  • Change serialization of struct field order to match the user defined order (#1166) (809aa3a)
  • Fix modulo operator for comptime values (#1361) (ba15d6d)
  • Fix nargo not showing compiler errors or warnings (#1694) (4233068)
  • frontend: Avoid panic if dependency cannot be resolved (#1719) (f35b346)
  • nargo: prevent -p arg clash (#1605) (4867f4e)
  • noirc_driver: Move error printing into nargo (#1598) (561cd63)
  • ssa refactor: Add missing calls to resolve in Instruction::simplify (#1678) (07b07d0)
  • ssa refactor: BigUint for radix (#1715) (00cf462)
  • ssa refactor: Change the result of simplifying Eq and Lt to bool (#1672) (1d48929)
  • ssa refactor: Do not remove enable_side_effects instructions in die pass (#1673) (cbee4c0)
  • ssa refactor: euclidean division for unsigned (#1721) (a1596bc)
  • ssa refactor: filter unreachable blocks from cfg (#1523) (202c345)
  • ssa refactor: fix array element propagation through constant folding and DIE (#1674) (301e244)
  • ssa refactor: Fix array elements not being mapped to new values (#1717) (4ebcbeb), closes #1688
  • ssa refactor: fix bad constant type caching (#1593) (37c0be6)
  • ssa refactor: Fix constant folding looping forever (#1611) (afe58cc)
  • ssa refactor: Fix failed_to_inline_a_function being set for intrinsics (#1675) (377ac5c)
  • ssa refactor: Fix flatten_cfg for ifs with no else (#1671) (7ce8cce)
  • ssa refactor: Fix mem2reg pass not always removing unused stores (#1677) (8310544)
  • ssa refactor: Fix ssa-gen of nested ifs (#1406) (5fd976e)
  • ssa refactor: Fix stack overflow during loop unrolling (#1666) (c7a7216)
  • ssa refactor: Implement array equality in SSA-gen (#1704) (0d31d83)
  • ssa refactor: more comprehensive instruction simplification (#1735) (97d6747)
  • ssa refactor: pad radix result (#1730) (8e9b612)
  • ssa refactor: resolve replaced value ids for printing (#1535) (08ca847)
  • ssa refactor: safe to query cfg for single block programs (#1401) (e2a23b3)
  • ssa refactor: schnorr signature handling (#1727) (98ecf93)
  • ssa refactor: Translate strings as arrays of characters (#1669) (2ba2ef6)
  • ssa refactor: truncate when simplifying constant casts (#1714) (a2108d7)
  • ssa: conditionalise array indexes under IF statements (#1395) (ddca3b4)
  • stdlib: Workaround for Field comparison error in EdDSA signature verification (#1372) (e790c9f)

Miscellaneous Chores

0.6.0 (2023-05-16)

⚠ BREAKING CHANGES

  • Update to acvm 0.11.0 (#1322)
  • parser: deprecate constrain keyword for assert (#1286)

Features

  • Enable to_radix for any field element (#1343) (c3bdec2)
  • Enable dynamic arrays (#1271) (9f43450)
  • Issue an error when attempting to use a return expression (#1330) (a6de557)
  • nargo: Remove usage of CompiledProgram in CLI code and use separate ABI/bytecode (#1269) (f144391)
  • ssa refactor: experimental-ssa compiler flag (#1289) (afa6749)
  • ssa refactor: Implement dominator tree (#1278) (144ebf5)
  • ssa: add block opcode (#1291) (951ad71)
  • stdlib: add keccak256 foreign function (#1249) (260d87d)

Bug Fixes

  • Fix issue with parsing nested generics (#1319) (36f5b8e)
  • Fix parser error preventing assignments to tuple fields (#1318) (460568e)
  • Fix struct or tuple field assignment failing with generics (#1317) (d872890), closes #1315
  • stdlib: support use of to_bits and to_radix for values >128 bits (#1312) (12f3e7e)

Miscellaneous Chores

0.5.1 (2023-05-01)

Bug Fixes

  • Add Poseidon examples into integration tests (#1257) (2a5aa52)
  • fix linear_eval is no 0 serialisation issue (#1226) (41d96ae)

0.5.0 (2023-04-28)

⚠ BREAKING CHANGES

  • Switch to aztec_backend that uses upstream BB & UltraPlonk (#1114)

Features

Bug Fixes

0.4.1 (2023-04-20)

Features

Bug Fixes

  • Add checks for nop (#1160) (809b85f)
  • allow comptime or non comptime fields in unconstrained for loops (#1172) (73df465)
  • maintain ordering of return value witnesses when constructing ABI (#1177) (b799c8a)
  • nargo: restore nargo codegen-verifier functionality (#1185) (528a2a4)
  • ssa: set correct predecessors of IF join (#1171) (7628ed6)

0.4.0 (2023-04-17)

⚠ BREAKING CHANGES

  • remove outdated arkworks backend (#1151)
  • nargo: define preprocessed artifacts for programs/contracts (#1126)
  • nargo: use faster hash function for checking preprocessed keys (#1094)
  • Fix returning of structs in ACIR (#1058)
  • upgrade to acvm 0.8.0 (#1047)

Features

  • Add new Vec type to frontend (#1103) (e125157)
  • Add storage slots to globals (#1019) (4190e11)
  • Allow arbitrary noir functions to be unconstrained (#1044) (ebc8a36)
  • Allow non-comptime field indices in unconstrained functions (#1053) (bc52612)
  • Allow numeric generics to be referenced and add map (#997) (34eab32)
  • Allow secret functions to use public parameters (#1051) (12c0668)
  • Allow structs and arrays as globals (#1054) (dadbd3c)
  • Changes serialization for contract functions (#1056) (41e0020)
  • compiler: Allows specify entry_point source (#1026) (9789f89)
  • dynamic array indexing (#886) (aba1ed2)
  • Implement 'open' and 'unconstrained' keywords (#1037) (5a66dec)
  • Implement std::unsafe::zeroed (#1048) (9a43f85)
  • Implement arrays of structs (#1068) (f607150)
  • import core logic in cli from nargo crate (#1142) (753a272)
  • make noirc_driver aware of contracts (#999) (c21afca)
  • Merge all contracts into one ABI (#1033) (473428c)
  • nargo: add InvalidPackageError and DependencyResolutionError error types. (#1007) (1e6761b)
  • nargo: add skeleton of composite types in template input tomls (#1104) (1fb2756)
  • nargo: add test to example noir program (#1039) (f994c4f)
  • nargo: allow running nargo from any directory in package (#1010) (761fdb5)
  • nargo: define preprocessed artifacts for programs/contracts (#1126) (7528f59)
  • nargo: print-acir command (#1031) (408d9c0)
  • nargo: remove misleading quotes in generated Prover.toml (#1087) (57c817f)
  • nargo: split nargo into core and cli packages (#1065) (7c388f9)
  • read-only array (#899) (2e38ab0)
  • stdlib: Implement Poseidon hash (#768) (779ab66)

Bug Fixes

  • Avoid asserting in typechecker if struct field count is not correct (#1036) (b3d1d7f), closes #1028
  • compiler identifying imported functions as being part of a contract (#1112) (61c38d2)
  • correct name in CLI output from nargo_cli to nargo (74d7369)
  • correct test for mutually exclusive feature flags (#1085) (eb5c917)
  • crash when typechecking fields that don't exist (#1070) (a67e8c5)
  • Fix returning of structs in ACIR (#1058) (91bd471)
  • nargo: correct logic for rejecting transitive local dependencies (#1015) (e2b8b65)
  • nargo: correct name in CLI output from nargo_cli to nargo (#1095) (74d7369)
  • nargo: give contract artifacts unique names to prevent overwrites (#1158) (1227b2c)
  • nargo: only search for Nargo.toml in commands which act on a Nargo package (#1029) (6e642b9)
  • nargo: resolve local dependencies relative to root of depending package (38bf571)
  • Numeric generics with impls error (#1148) (5d6e4d0)
  • rationalise witness for constant values (#984) (ab32365)
  • Resolve globals in types (#1043) (2badf14)

Miscellaneous Chores

0.3.2 (2023-03-16)

Features

  • stdlib: Implement elliptic curve primitives (#964) (30d612d)

Bug Fixes

  • nargo: correct inconsistent file extension for ACIR hashes (#994) (23c22d7)
  • Prevent calling contract functions from outside the contract (#980) (21360e3)
  • reverse slash direction in StdLibAssets prefix on windows (#992) (65b7108)

0.3.1 (2023-03-13)

Features

Bug Fixes

  • Update backend dependency containing updated pk write fix (#956) (5d627a7)

0.3.0 (2023-03-13)

⚠ BREAKING CHANGES

  • nargo: rename contract command to codegen-verifier (#959)
  • replace dummy ABIs with FunctionSignature type alias (#930)
  • nargo: save program ABI alongside ACIR (#922)
  • nargo: restrict CliError visibility to crate (#911)
  • prevent inconsistent language usage in Driver (#881)
  • abi: add explicit return type field to ABI. (#865)
  • abi: merge both abi encoding/decoding methods (#862)
  • abi: add an explicit mapping from ABI params to witness indices (#851)
  • Allow impls on primitive types (#847)

Features

  • abi: add an explicit mapping from ABI params to witness indices (#851) (5bd4bd5)
  • abi: add explicit return type field to ABI. (#865) (8ca5676)
  • abi: merge both abi encoding/decoding methods (#862) (fecd32c)
  • add support for reading boolean arrays from toml (#900) (93d83bf)
  • Allow impls on primitive types (#847) (479da0e)
  • ci: Publish noir_wasm when we cut a release (#871) (5186ab9)
  • compile: compile w/dependencies and options (#965) (3f897f6)
  • compile: Noir std lib embedded (#973) (13b9069)
  • Implement basic contracts (#944) (8ba3ab2)
  • Implement endianness specified versions of to_bytes to_radix and to_bits (#914) (43abc6b)
  • nargo: save program ABI alongside ACIR (#922) (ddaf305)
  • separate contract/program compilation from IO (#967) (c60f545)
  • Silence output of prove and verify (#892) (811b346)
  • ssa: add location to ssa instructions (#931) (356858b)
  • update to ACVM 0.5.0 (#902) (9b58da4)

Bug Fixes

  • abi: ensure that return value is loaded from toml (#883) (adba24c)
  • add more readable error for missing argument in toml (#971) (e31f41f)
  • allow parsing strings from toml into booleans (#894) (f729a00)
  • check the argument count of generic types (#970) (2688dc4)
  • compute witness when println evaluated before input (#891) (2727b34)
  • correct type checking to handle false bools (#893) (6c7aa2f)
  • display command description in CLI for nargo prove (#949) (2829af1)
  • evaluate constant division (#909) (b91307b)
  • Fix multiple call of to_le_bytes (#941) (2ee0119)
  • generate valid toml when outputting nested structs (#936) (ba947a7)
  • Improve member access error (#940) (9b5b5f6)
  • nargo: Switch order of writing acir file and acir checksum file (#895) (4fc94dc)
  • nargo: Use yml extension for bug report link presented upon panic (#960) (f7b3711)
  • nargo: Use yml extension on the bug report link presented upon panic (f7b3711)
  • noir_wasm: Update wasm ACIR serialization (#898) (575436f)
  • Optimize parser (#869) (e927a39)
  • prevent inconsistent language usage in Driver (48cda7a)
  • prevent inconsistent language usage in Driver (#881) (48cda7a)
  • properly initialize Evaluator in test (#863) (bbb70bd)
  • properly initialize Evaluator in test (bbb70bd)
  • Remove uses of std::process::exit (#963) (870ea46)
  • ssa: fix the compile-time check for equality in acir-gen (#904) (161e4fb)

Miscellaneous Chores

  • nargo: rename contract command to codegen-verifier (#959) (2e63492)
  • nargo: restrict CliError visibility to crate (#911) (ed0e1ab)
  • replace dummy ABIs with FunctionSignature type alias (#930) (156125b)

0.2.0 (2023-02-16)

⚠ BREAKING CHANGES

  • Make abi field non-optional in CompiledProgram (#856)
  • nargo: bump MSRV to 1.66.0 (#799)

Features

Bug Fixes

  • avoid testing equality between unit values in acir_gen test (#849) (c2b7230)
  • ci: Skip the title check if handling a merge group (#790) (71b179c)
  • nargo: nargo test now only runs test functions defined in the current module (#805) (c6293c9)
  • operators issuing type errors when used with matching integer types arising from generic code (#789) (932943a)
  • ssa: delete instructions with false predicate (#760) (f329379)
  • ssa: synchronisation for functions (#764) (615357a)

Miscellaneous Chores

0.1.1 (2023-02-06)

Features

  • ci: Add workflow to validate PR title (#730) (e5e8542)
  • ci: Change release workflow to use release-please (950ca55)
  • docs: Introduce Conventional Commits & release process docs (#717) (950ca55)
  • nargo: add nargo execute command (#725) (9d6be60)
  • nargo: Add nargo test command to run all unit tests (#728) (2e1dc82)
  • nargo: add option to save witness to file in execute command (9d6be60)
  • nargo: add support for testing noir libraries (#752) (27bd2ac)
  • nargo: Leverage rustls instead of openssl for downloads (#691) (933809c)