Skip to content

Releases: noir-lang/noir

v0.11.0

07 Sep 13:14
7563845
Compare
Choose a tag to compare
v0.11.0 Pre-release
Pre-release

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)

v0.10.5

30 Aug 19:19
91efe44
Compare
Choose a tag to compare

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)

v0.10.4

29 Aug 20:02
b55f399
Compare
Choose a tag to compare
v0.10.4 Pre-release
Pre-release

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)

v0.10.3

16 Aug 21:41
2db759f
Compare
Choose a tag to compare
v0.10.3 Pre-release
Pre-release

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)

v0.10.2

16 Aug 14:11
c11c810
Compare
Choose a tag to compare
v0.10.2 Pre-release
Pre-release

0.10.2 (2023-08-16)

Bug Fixes

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

v0.10.1

15 Aug 22:50
a1e6d5d
Compare
Choose a tag to compare
v0.10.1 Pre-release
Pre-release

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)

v0.10.0

15 Aug 19:03
0508378
Compare
Choose a tag to compare
v0.10.0 Pre-release
Pre-release

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

Read more

v0.9.0

25 Jul 22:54
970c18e
Compare
Choose a tag to compare

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 defunctionalizati...
Read more

v0.8.0

07 Jul 13:11
d9e346e
Compare
Choose a tag to compare

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)

v0.7.1

23 Jun 17:41
d0110e2
Compare
Choose a tag to compare

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)