Skip to content

Latest commit

 

History

History
696 lines (399 loc) · 43.8 KB

CHANGELOG.md

File metadata and controls

696 lines (399 loc) · 43.8 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.25.0 (2023-09-04)

⚠ BREAKING CHANGES

  • Provide runtime callstacks for brillig failures and return errors in acvm_js (#523)

Features

  • Provide runtime callstacks for brillig failures and return errors in acvm_js (#523) (7ab7cff)

Bug Fixes

  • initialize recursive proof output to zero (#524) (5453074)

0.24.1 (2023-09-03)

Bug Fixes

  • Add WASI 20 _initialize call to acvm_backend.wasm binary (#518) (ec6ab0c)

0.24.0 (2023-08-31)

⚠ BREAKING CHANGES

  • acvm: Remove the Backend trait (#514)
  • acir: Remove unused Directive opcodes (#510)
  • acir: Add predicate to MemoryOp (#503)
  • acvm: Remove unused arguments from Backend trait (#511)
  • Assertion messages embedded in the circuit (#484)

Features

  • acir: Add predicate to MemoryOp (#503) (ca9eebe)
  • Assertion messages embedded in the circuit (#484) (06b97c5)

Miscellaneous Chores

  • acir: Remove unused Directive opcodes (#510) (cfd8cbf)
  • acvm: Remove the Backend trait (#514) (681535d)
  • acvm: Remove unused arguments from Backend trait (#511) (ae65355)

0.23.0 (2023-08-30)

⚠ BREAKING CHANGES

  • Return an iterator from new_locations() instead of collecting (#507)
  • acvm: remove CommonReferenceString trait and preprocess method (#508)
  • acvm: Remove BlackBoxFunctionSolver from Backend trait (#494)
  • acvm: Pass BlackBoxFunctionSolver to ACVM by reference

Features

  • acvm_js: Add execute_circuit_with_black_box_solver to prevent reinitialization of BlackBoxFunctionSolver (3877e0e)
  • Expose a BlackBoxFunctionSolver containing a barretenberg wasm from blackbox_solver (#494) (a1d4b71)

Miscellaneous Chores

  • acvm: Pass BlackBoxFunctionSolver to ACVM by reference (3877e0e)
  • acvm: Remove BlackBoxFunctionSolver from Backend trait (#494) (a1d4b71)
  • acvm: remove CommonReferenceString trait and preprocess method (#508) (3827dd3)
  • Return an iterator from new_locations() instead of collecting (#507) (8d49a5c)

0.22.0 (2023-08-18)

⚠ BREAKING CHANGES

  • Switched from OpcodeLabel to OpcodeLocation and ErrorLocation (#493)
  • acvm: check for index out-of-bounds on memory operations (#468)

Features

  • acvm: check for index out-of-bounds on memory operations (#468) (740468c)
  • print error location with fmt (#497) (575a9e5)
  • Switched from OpcodeLabel to OpcodeLocation and ErrorLocation (#493) (27a5a93)

Bug Fixes

  • add opcode label to unsatisfied constrain string (#482) (cbbbe67)

0.21.0 (2023-07-26)

⚠ BREAKING CHANGES

  • acir: Remove Block, RAM and ROM opcodes (#457)
  • acvm: Remove OpcodeResolution enum (#400)
  • acvm: Support stepwise execution of ACIR (#399)

Features

  • acvm: Remove OpcodeResolution enum (#400) (d0ce48c)
  • acvm: Support stepwise execution of ACIR (#399) (6a03950)

Miscellaneous Chores

  • acir: Remove Block, RAM and ROM opcodes (#457) (8dd220a)

0.20.1 (2023-07-26)

Features

  • add optimisations to fallback black box functions on booleans (#446) (2cfb2a8)
  • stdlib: Add fallback implementation of Keccak256 black box function (#445) (f7ebb03)

0.20.0 (2023-07-20)

⚠ BREAKING CHANGES

  • atomic memory opcodes (#447)

Features

  • atomic memory opcodes (#447) (3261c7a)
  • brillig: Support integers which fit inside a FieldElement (#403) (f992412)
  • stdlib: Add fallback implementation of HashToField128Security black box function (#435) (ed40f22)

0.19.1 (2023-07-17)

Bug Fixes

  • Remove panic when we divide 0/0 in quotient directive (#437) (9c8ff64)

0.19.0 (2023-07-15)

⚠ BREAKING CHANGES

  • move to bincode and GzEncoding for artifacts (#436)

Features

  • move to bincode and GzEncoding for artifacts (#436) (4683240)

0.18.2 (2023-07-12)

Features

  • acvm: reexport blackbox_solver crate from acvm (#431) (517e942)
  • stdlib: Add fallback implementation of Blake2s black box function (#424) (982d940)

0.18.1 (2023-07-12)

Bug Fixes

0.18.0 (2023-07-12)

⚠ BREAKING CHANGES

  • add backend-solvable blackboxes to brillig & unify implementations (#422)
  • acvm: Remove CircuitSimplifer (#421)
  • acvm: Add circuit: &Circuit to eth_contract_from_vk function signature (#420)
  • Returns index of failing opcode and transformation mapping (#412)

Features

  • acvm: Add circuit: &Circuit to eth_contract_from_vk function signature (#420) (744e9da)
  • add backend-solvable blackboxes to brillig & unify implementations (#422) (093342e)
  • derive PartialOrd, Ord, and Hash on RegisterIndex (#425) (7f6b0dc)
  • Returns index of failing opcode and transformation mapping (#412) (79950e9)
  • stdlib: Add fallback implementation of SHA256 black box function (#407) (040369a)

Miscellaneous Chores

0.17.0 (2023-07-07)

⚠ BREAKING CHANGES

  • acir: add EcdsaSecp256r1 blackbox function (#408)

Features

  • acir: add EcdsaSecp256r1 blackbox function (#408) (9895817)

0.16.0 (2023-07-06)

⚠ BREAKING CHANGES

  • acvm: replace PartialWitnessGeneratorStatus with ACVMStatus (#410)
  • acir: revert changes to SchnorrVerify opcode (#409)
  • acvm: Replace PartialWitnessGenerator trait with BlackBoxFunctionSolver (#378)
  • acvm: Encapsulate internal state of ACVM within a struct (#384)
  • remove unused OpcodeResolutionError::IncorrectNumFunctionArguments variant (#397)
  • acir: Remove Oracle opcode (#368)
  • acir: Use fixed length data structures in black box function inputs/outputs where possible. (#386)
  • acir: Implement Add trait for Witness & make output of Mul on Expression optional (#393)

Features

  • acir: Implement Add trait for Witness & make output of Mul on Expression optional (#393) (5bcdfc6)
  • acir: Remove Oracle opcode (#368) (63354df)
  • acir: Use fixed length data structures in black box function inputs/outputs where possible. (#386) (b139d4d)
  • acvm: Derive Copy for Language (#406) (69a6c22)
  • acvm: Encapsulate internal state of ACVM within a struct (#384) (84d4867)
  • acvm: Replace PartialWitnessGenerator trait with BlackBoxFunctionSolver (#378) (73fbc95)
  • acvm: replace PartialWitnessGeneratorStatus with ACVMStatus (#410) (fc3240d)
  • brillig: implemented first blackbox functions (#401) (62d40f7)

Bug Fixes

  • acir: revert changes to SchnorrVerify opcode (#409) (f1c7940)

Miscellaneous Chores

  • remove unused OpcodeResolutionError::IncorrectNumFunctionArguments variant (#397) (d1368d0)

0.15.1 (2023-06-20)

Features

  • brillig: Allow dynamic-size foreign calls (#370) (5ba0349)

Bug Fixes

  • brillig: remove register initialization check (#392) (1a53143)

0.15.0 (2023-06-15)

⚠ BREAKING CHANGES

  • brillig: Accept multiple inputs/outputs for foreign calls (#367)
  • acvm: Make internals of ACVM private (#353)

Features

  • Add method to generate updated Brillig opcode from UnresolvedBrilligCall (#363) (fda5dbe)
  • brillig: Accept multiple inputs/outputs for foreign calls (#367) (78d62b2)
  • brillig: Set VMStatus to Failure rather than panicking on invalid foreign call response (#375) (c49d82c)

Bug Fixes

  • brillig: Correct signed division implementation (#356) (4eefda0)
  • brillig: Explicitly wrap on arithmetic operations (#365) (c0544a9)

Miscellaneous Chores

  • acvm: Make internals of ACVM private (#353) (c902a01)

0.14.2 (2023-06-08)

Bug Fixes

  • brillig: expand memory with zeroes on store (#350) (4d2dadd)

0.14.1 (2023-06-07)

Features

  • Re-use intermediate variables created during width reduction, with proper scale. (#343) (6bd0baa)

0.14.0 (2023-06-06)

⚠ BREAKING CHANGES

  • acir: Verify Proof (#291)

Features

0.13.3 (2023-06-05)

Bug Fixes

  • Empty commit to trigger release-please (e8f0748)

0.13.2 (2023-06-02)

Bug Fixes

  • re-use intermediate vars during width reduction (#278) (5b32920)

0.13.1 (2023-06-01)

Bug Fixes

  • brillig: Proper error handling for Brillig failures (#329) (cffa110)
  • ci: Add brillig_vm to release-please & link versions (#332) (84bd22e)
  • ci: Correct typo to avoid undefined in changelogs (#333) (d3424c0)

0.13.0 (2023-06-01)

⚠ BREAKING CHANGES

  • added hash index to pedersen (#281)
  • Add variable length keccak opcode (#314)
  • Remove AES opcode (#302)
  • acir, acvm: Remove ComputeMerkleRoot opcode #296
  • Remove manual serialization of Opcodes in favour of serde (#286)
  • Remove backend solvable methods from the interface and solve them in ACVM (#264)
  • Reorganize code related to PartialWitnessGenerator (#287)

Features

  • acir, acvm: Remove ComputeMerkleRoot opcode #296 (8b3923e)
  • Add Brillig opcode to introduce custom non-determinism to ACVM (#152) (3c6740a)
  • Add variable length keccak opcode (#314) (7bfd169)
  • added hash index to pedersen (#281) (61820b6)
  • Remove backend solvable methods from the interface and solve them in ACVM (#264) (69916cb)

Bug Fixes

  • Allow async functions without send on async trait (#292) (9f9fc21)

Miscellaneous Chores

  • Remove AES opcode (#302) (a429a54)
  • Remove manual serialization of Opcodes in favour of serde (#286) (8a3812f)
  • Reorganize code related to PartialWitnessGenerator (#287) (b9d61a1)

0.12.0 (2023-05-17)

⚠ BREAKING CHANGES

  • remove deprecated circuit hash functions (#288)
  • allow backends to specify support for all opcode variants (#273)
  • acvm: Add CommonReferenceString backend trait (#231)
  • Introduce WitnessMap data structure to avoid leaking internal structure (#252)
  • use struct variants for blackbox function calls (#269)
  • acvm: Backend trait must implement Debug (#275)
  • remove OpcodeResolutionError::UnexpectedOpcode (#274)
  • acvm: rename hash_to_field128_security to hash_to_field_128_security (#271)
  • acvm: update black box solver interfaces to match pwg:black_box::solve (#268)
  • acvm: expose separate solvers for AND and XOR opcodes (#266)
  • acvm: Simplification pass for ACIR (#151)
  • Remove solve from PWG trait & introduce separate solvers for each blackbox (#257)

Features

  • acvm: Add CommonReferenceString backend trait (#231) (eeddcf1)
  • acvm: Simplification pass for ACIR (#151) (7bc42c6)
  • acvm: update black box solver interfaces to match pwg:black_box::solve (#268) (0098b7d)
  • Introduce WitnessMap data structure to avoid leaking internal structure (#252) (b248e60)
  • Remove solve from PWG trait & introduce separate solvers for each blackbox (#257) (3f3dd74)
  • use struct variants for blackbox function calls (#269) (a83333b)

Bug Fixes

  • acir: Hide variants of WitnessMapError and export it from package (#283) (bbd9ab7)

Miscellaneous Chores

  • acvm: Backend trait must implement Debug (#275) (3288b4c)
  • acvm: expose separate solvers for AND and XOR opcodes (#266) (84b5d18)
  • acvm: rename hash_to_field128_security to hash_to_field_128_security (#271) (fad9af2)
  • allow backends to specify support for all opcode variants (#273) (efd37fe)
  • remove OpcodeResolutionError::UnexpectedOpcode (#274) (0e71aac)
  • remove deprecated circuit hash functions (#288) (1a22c75)

0.11.0 (2023-05-04)

⚠ BREAKING CHANGES

  • acvm: Introduce Error type for fallible Backend traits (#248)

Features

  • acvm: Add generic error for failing to solve an opcode (#251) (bc89528)
  • acvm: Introduce Error type for fallible Backend traits (#248) (45c45f7)
  • Add Keccak Hash function (#259) (443c734)

Bug Fixes

  • acir: Fix Expression multiplication to correctly handle degree 1 terms (#255) (e399396)

0.10.3 (2023-04-28)

Bug Fixes

  • add default feature flag to ACVM crate (#245) (455fddb)

0.10.2 (2023-04-28)

Bug Fixes

0.10.1 (2023-04-28)

Bug Fixes

  • acir: add bn254 as default feature flag (#240) (e56973d)

0.10.0 (2023-04-26)

⚠ BREAKING CHANGES

  • return Result<OpcodeResolution, OpcodeResolutionError> from solve_range_opcode (#238)
  • acvm: have all black box functions return Result<OpcodeResolution, OpcodeResolutionError> (#237)
  • acvm: implement hash_to_field_128_security (#230)
  • replace MerkleMembership opcode with ComputeMerkleRoot (#233)
  • require Backend to implement Default trait (#223)
  • Make GeneralOptimizer crate visible (#220)
  • return PartialWitnessGeneratorStatus from PartialWitnessGenerator.solve (#213)
  • organise operator implementations for Expression (#190)

Features

  • acvm: have all black box functions return Result&lt;OpcodeResolution, OpcodeResolutionError&gt; (#237) (e8e93fd)
  • acvm: implement hash_to_field_128_security (#230) (198fb69)
  • Add range opcode optimization (#219) (7abe6e5)
  • implement add_mul on Expression (#207) (f156e18)
  • implement FieldElement::from&lt;bool&gt;() (#203) (476cfa2)
  • replace MerkleMembership opcode with ComputeMerkleRoot (#233) (74bfee8)
  • require Backend to implement Default trait (#223) (00282dc)
  • return PartialWitnessGeneratorStatus from PartialWitnessGenerator.solve (#213) (e877bed)
  • return Result&lt;OpcodeResolution, OpcodeResolutionError&gt; from solve_range_opcode (#238) (15d3c5a)

Bug Fixes

  • prevent bn254 feature flag always being enabled (#225) (82eee6a)

Miscellaneous Chores

  • Make GeneralOptimizer crate visible (#220) (64bb346)
  • organise operator implementations for Expression (#190) (a619df6)

0.9.0 (2023-04-07)

⚠ BREAKING CHANGES

  • acvm: Remove deprecated eth_contract_from_cs from SmartContract trait (#185)
  • acvm: make Backend trait object safe (#180)

Features

  • acvm: make Backend trait object safe (#180) (fd28657)

Bug Fixes

Miscellaneous Chores

  • acvm: Remove deprecated eth_contract_from_cs from SmartContract trait (#185) (ee59c9e)

0.8.1 (2023-03-30)

Bug Fixes

0.8.0 (2023-03-28)

⚠ BREAKING CHANGES

  • acir: Read Log Directive (#156)

Bug Fixes

0.7.1 (2023-03-27)

Bug Fixes

  • pwg: stall instead of fail for unassigned black box (#154) (412a1a6)

0.7.0 (2023-03-23)

⚠ BREAKING CHANGES

  • Add initial oracle opcode (#149)
  • acir: Add RAM and ROM opcodes
  • acir: Add a public outputs field (#56)
  • acir: remove Linear struct (#145)
  • acvm: remove prove_with_meta and verify_from_cs from ProofSystemCompiler (#140)
  • acvm: Remove truncate and oddrange directives (#142)

Features

Miscellaneous Chores

  • acir: remove Linear struct (#145) (bbb6d92)
  • acvm: remove prove_with_meta and verify_from_cs from ProofSystemCompiler (#140) (35dd181)
  • acvm: Remove truncate and oddrange directives (#142) (85dd6e8)

0.6.0 (2023-03-03)

⚠ BREAKING CHANGES

  • acir: rename term_addition to push_addition_term
  • acir: rename term_multiplication to push_multiplication_term (#122)
  • acir: remove UnknownWitness (#123)
  • add block opcode (#114)

Features

  • acir: add useful methods from noirc_evaluator onto Expression (#125) (d3d5f89)
  • add block opcode (#114) (097cfb0)

Bug Fixes

  • acir: correctly display expressions with non-unit coefficients (d3d5f89)
  • ci: publish acvm_stdlib before acvm (#117) (ca6defc)

Miscellaneous Chores

  • acir: remove UnknownWitness (#123) (9f002c7)
  • acir: rename term_addition to push_addition_term (d389385)
  • acir: rename term_multiplication to push_multiplication_term (#122) (d389385)

0.5.0 (2023-02-22)

⚠ BREAKING CHANGES

  • acvm: switch to accepting public inputs as a map (#96)
  • acvm: add eth_contract_from_vk to `SmartContract
  • update ProofSystemCompiler to not take ownership of keys (#111)
  • update ProofSystemCompiler methods to take &Circuit (#108)
  • acir: make PublicInputs use a BTreeSet rather than Vec (#99)
  • refactor ToRadix to ToRadixLe and ToRadixBe (#58)
  • acir: Add keccak256 Opcode (#91)
  • reorganise compiler in terms of optimisers and transformers (#88)

Features

  • acir: Add keccak256 Opcode (#91) (b909146)
  • acir: make PublicInputs use a BTreeSet rather than Vec (#99) (53666b7)
  • acvm: add eth_contract_from_vk to `SmartContract (#113) (373c18f)
  • acvm: switch to accepting public inputs as a map (#96) (f57ba57)
  • ci: Add release workflow (#89) (db8e828)
  • ci: Publish crates upon release (#104) (b265920)
  • update ProofSystemCompiler methods to take &Circuit (#108) (af56ca9)
  • update ProofSystemCompiler to not take ownership of keys (#111) (39b8a41)
  • Update Arkworks' dependencies on acir_field (#69) (65d6130)

Bug Fixes

  • ci: Update dependency versions in the workspace file (#103) (9acc266)
  • Clean up Log Directive hex output (#97) (d23c735)

Miscellaneous Chores

  • refactor ToRadix to ToRadixLe and ToRadixBe (#58) (2427a27)
  • reorganise compiler in terms of optimisers and transformers (#88) (9329307)

[0.4.1] - 2023-02-08

Added

Fixed

  • Removed duplicated logic in match branch

Changed

Removed

[0.4.0] - 2023-02-08

Added

  • Add log directive
  • Expose acir_field through acir crate
  • Add permutation directive
  • Add preprocess methods to ACVM interface

Fixed

Changed

  • Changed spellings of many functions to be correct using spellchecker

Removed

[0.3.1] - 2023-01-18

Added

Fixed

Changed

  • ACVM compile method now returns an Error for when a function cannot be reduced to arithmetic gates

  • Backtrack changes from noir-lang/noir/587

Removed

[0.3.0] - 2022-12-31

Added

  • Added stdlib module to hold all of the standard opcodes
  • added read , write methods for circuit

Fixed

Changed

  • XOR, Range and AND gates are no longer special case. They are now another opcode in the GadgetCall
  • Move fallback module to stdlib
  • Optimizer code and any other passes will live in acvm. acir is solely for defining the IR now.
  • ACIR passes now live under the compiler parent module
  • Moved opcode module in acir crate to circuit/opcode
  • Rename GadgetCall to BlackBoxFuncCall
  • Rename opcode file to blackbox_functions . Similarly OPCODE is now BlackBoxFunc
  • Renamed GateResolution::UnsupportedOpcode to GateResolution::UnsupportedBlackBoxFunc
  • Renamed GadgetDefinition to FuncDefinition
  • Rename GadgetInput to FunctionInput
  • Rename Gate -> Opcode . Similarly gate.rs is now opcodes.rs
  • Rename CustomGate::supports_gate -> CustomGate::supports_opcode
  • Rename GateResolution to OpcodeResolution
  • Rename Split directive to ToBits
  • Field element printing function was modified to uses ascii superscript numbers and ascii multiplication
  • Refactor the way we print ACIR (This is a first draft and will change with more feedback)
  • Rename solve_gadget_call trait method on ProofSystemCompile to solve_blackbox_function_call
  • API for compile now requires a function pointer which tells us whether a blackbox function is supported
  • Renamed Directive::Oddrange to Directive::OddRange
  • Renamed FieldElement::to_bytes to FieldElement::to_be_bytes

Removed

  • Selector struct has been removed as it is no longer being used. It is also not being used by Noir.
  • CustomGate trait -- There is a method in the ProofSystemCompiler Trait that backends can use to indicate whether they support a particular black box function
  • Remove OpcodeResolution enum from pwg. The happy case is strictly when the witness has been solved

[0.2.1] - 2022-12-23

  • Removed ToBits and ToBytes opcode