Releases: noir-lang/noir
Releases · noir-lang/noir
v0.10.4
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
inexpected 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
v0.10.2
v0.10.1
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
andinto_bytes
function (#2298) (92549d4)
v0.10.0
0.10.0 (2023-08-15)
⚠ BREAKING CHANGES
- nargo: Remove
-p
short flag from the--program-dir
flag (#2300) - nargo: Replace
--contracts
flag withcontract
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 tonargo 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 withcontract
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 unsignedx
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
AND
s with multiplication (#1954) (435ab35) - ssa: Add additional BinaryOp simplifications (#2124) (50b2816)
- Support
contract
package type innargo 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
v0.9.0
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
- ACIR bytecode encoding with Base64 (#1935) (347cfc4)
- Add
nargo build
as alias fornargo compile
(#1940) (13618d4) - add
nargo init
command (#1859) (2d87c87) - Add ability to create a proof for a workspace member using
nargo prove -p {crate_name}
(#1930) (266126f) - Add Acir debug information (#1864) (5ff8b53)
- Add multi-line comments (#1936) (cfb1765)
- Add support for nested arrays on brillig gen (#2029) (8adc57c)
- Add to_radix and to_bits support to brillig gen (#2012) (3eef41c)
- Add unit literals and unit types to parser (#1960) (ea80de5)
- Adding internal keyword (#1873) (7a85493)
- Allow arrays of arbitrary types in the program ABI (#1651) (811ede1)
- Allow shadowing by default (#2000) (88a4f74)
- avoid unnecessary witness assignments in euclidian division / bound constraint (#1989) (c23257d)
- brillig_gen: Return slices from foreign calls (#1909) (6fa3144)
- compile to brillig reachable acir fns (#1919) (2b4237d)
- dynamic arrays for experimental-ssa (#1969) (08d199a)
- Implement parsing of traits (#1886) (3ba1e72)
- Implement references in brillig (#1901) (3a078fb)
- initial implementation of slices in brillig (#1932) (ea47936)
- Refactor Logging to use Brillig foreign calls (#1917) (c15f9aa)
- stdlib: Add multiple slice builtins (#1888) (008a16b)
- stdlib: Add secp256r1 builtin function (#1858) (f3800c5)
- stdlib: Vec type (#1905) (3734e25)
- Update to ACVM 0.18.1 and implement missing brillig blackboxes (#1914) (2bc7d25)
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
Opcode
s in correct order fromGeneratedAcir::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
andfor
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...
v0.8.0
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 takeContext
(#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
Field
s (#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
v0.7.1
0.7.1 (2023-06-23)
Features
- brillig: foreign calls with dynamic-size objects (#1705) (fe7bb99)
- update acvm to 0.15.1 (#1764) (b52f25d)
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)
noir: v0.7.0
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](https://github.com/no...
noir_wasm: v0.7.0
0.7.0 (2023-06-19)
⚠ BREAKING CHANGES
- update to ACVM 0.13.0 (#1393)
Features
- ci: update noir to build wasm with a nix flake file (#1208) (2209369)
- pass in closure to
Driver
to signal backend opcode support (#1349) (1e958c2)
Bug Fixes
- Fix nargo not showing compiler errors or warnings (#1694) (4233068)
- noirc_driver: Move error printing into nargo (#1598) (561cd63)