Skip to content

Releases: iden3/circom

v2.1.9

24 Apr 11:27
Compare
Choose a tag to compare

April 23, 2024 circom 2.1.9

Extensions

  • Improvement of error messages: providing more descriptive messages.
  • Improvement of documentation and new sections: detailed explanation of the applied simplification techniques and precise description of constraint-related output formats.
  • Allowing arbitrary number of different input names in the main component.

Fixed bugs

  • Removing non-determinism in R1CS generation: fixing assignment order of anonymous components inputs.
  • Fixing an error when computing array accesses involving complex expressions in multidimensional arrays.
  • Improving known/unknown analysis: arrays of vars combining known/unknown positions.
  • Fixing minor panics: main component not calling to a template, anonymous component with wrong number of arguments, log messages containing line breaks.

v2.1.8

17 Jan 22:47
Compare
Choose a tag to compare

Jan 17, 2024 circom 2.1.8

Extensions

  • Adding flag --simplification_substitutions: outputs a .json file including information about the substitutions performed during the constraint simplifications
  • Adding the prime number secq256r1.
  • Removing non-determinism in R1CS generation: fixing assignment order of anonymous components inputs
  • Improving error message: case assignment to signal of not initialized component
  • Removing unnecessary clones
  • Improving documentation: types of signal assignments, output-file format descriptions, compilation options,
  • Improving the README file with more community tools and projects.

Fixed bugs

  • Printing errors and warnings in custom gates correctly
  • Removing panic caused by edge case in function display_trace()

v2.1.7

15 Dec 15:20
Compare
Choose a tag to compare

Dec 15, 2023 circom 2.1.7

Extensions

  • Fixing typos and improving documentation.
  • Improving error messages: missing tags in inputs and use of operator ++x.
  • Adding info of number of private inputs in witness in R1CS message and removing message of circom safe.

Fixed Bugs

  • Fixing a panic produced when the two branches of an if instruction are not compatible.
  • Fixing C++ code generated: input counter decrease inside assert => Moved outside the assert.
  • Fixing c++ code generated for macos with clang 14.0.0.
  • Fixing a bug in parallel definition at component level not working as expected.
  • Fixing a bug in parallel components not working as expected when considering assignments of the inputs given by names (A()(in_1 <== x, in_2 <== y)).
  • Fixing a bug in c++ code generation produced when the last assigned input has size 0.
  • Fixing a panic: handling case array of components with different signals (signals defined inside blocks ifs).
  • Fixing a panic: error when processing sizes of arrays of variables in functions, panic in merger when processing complex expressions.

v2.1.6

22 Jun 16:21
57b18f6
Compare
Choose a tag to compare

June 22, 2023 circom 2.1.6

Extensions

  • Improving tag propagation: array case.
  • Handling new prime numbers: pallas, vesta, grumpkin
  • Improving array access index computation in the code generated intermediate representation: using cheap addition and multiplication operations when possible.
  • Updating the documentation.
  • Added check on the name of the circom file when --C is used to avoid clashes with reserved names. When the file is called main.circom, fr.circom or calcwit.circom it is changed to main_c, fr_c and calcwit_c respectively.

Bugs

  • Fixing a bug while parsing anonymous components.
  • Fixing a problem in calls to anonymous components with signal names.
  • Fixing a bug in wasm witness generation that happened when doing a call inside an array index.
  • Executing the main method without inputs in wasm witness generation.

v2.1.5

15 Mar 17:11
Compare
Choose a tag to compare

March 15, 2023 circom 2.1.5

Extensions

  • Definition of signals and components can be done now inside if blocks IF the condition is known at compilation time. If the condition is unknown and depends on the value of signals, then the compiler throws an error.
  • Improving the --inspect option. It now detects underconstrained signals and assignments using <-- in which <== could be used.
  • Improving the efficiency of the compiler. It does not execute the inspect and constraint generation phase only if there are not the corresponding flags.
  • Improving --O1 simplification: removing signals that do not appear in any constraint and avoiding unnecessary constraint normalizations.
  • Improving parallel: array assignments of outputs and efficiency by updating numThread while waiting and setting maxThreads to 32.
  • Handling better the parser errors and improving error messages to output more information. (parser, type checking and constraint generation errors).
  • Showing warnings when errors are found.
  • Reducing writing time for output files.
  • Updating the documentation.

Fixed Bugs

  • Fixing a problem with the memory release of the components (in C).
  • Fixing a problem with the parallel execution during the witness generation (in C).
  • Fixing a bug: functions are executed even if they output signals when they contain logs or asserts.
  • Fixing a bug: During the witness generation, the computation of expressions like x**x was buggy (in wasm).

v2.1.4

10 Feb 10:59
Compare
Choose a tag to compare

February 10, 2023 circom 2.1.4

Extensions

  • Improving the efficiency of the parser regarding the anonymous components and tuples.
  • Improving the substitution process: better compilation times for --O1 and --O2.
  • Improving the handling of the underscore substitution.
  • Extending the substitution to allow the inheritance of signal tags.
  • Removing unused signal when applying --O1. (If a signal does not appear in any constraint, it is removed).

Fixed Bugs

  • Solving bug in the release of the memory of the components.

v2.1.3

16 Jan 13:49
Compare
Choose a tag to compare

January 16, 2023 circom 2.1.3

Extensions

  • Improving error messages: invalid access and invalid assignment.
  • Avoiding side effects in out of bounds log operations.
  • Adding check to detect components that are created but do not receive all their inputs.
  • Fixing field size of goldilocks when writing r1cs file.

Fixed Bugs

  • Fixing a problem with the use of integer division and ===, <== operators. If an integer division is involved in the expression of one of these operators, then we consider the expression as no quadratic.
  • Fixing bug in code generation of constraint equalities with arrays

v2.1.2

07 Nov 12:19
Compare
Choose a tag to compare

November 7, 2022 circom 2.1.2

Fixed bugs

  • Fixed bug in C++ witness generation: function release_memory_component failed when releasing the memory of an array of components with some empty positions
  • Fixed bug in logging of arithmetic expressions

v2.1.1

05 Nov 23:56
95f3918
Compare
Choose a tag to compare

November 4, 2022 circom 2.1.1

Extensions

  • New feature of anonymous components: programmers can pass the parameters indicate the input names receiving the values.See here.
  • circom now exits with 0 when it finishes successfully (last version exists with Exist(0) which broke some projects).
  • Improving tags assignment: case multiple assignments in an array giving the same value to a tag.
  • Allowing in cpp the use of binary, octal and hexadecimal numbers as inputs from a json file
  • Adding support for non-64bit architectures.
  • Witness_calculator adapted to work with negative numbers in the json input.

Fixed bugs

  • Fixing bug in C++ witness generation: function Fr_toInt in fr.asm
  • Improving error handling division by zero (instead of throwing a panic)

v2.1.0

11 Oct 16:44
b7ad01b
Compare
Choose a tag to compare

Release notes

October 11, 2022 circom 2.1.0

New features

  • Tags: more information here.
  • Anonymous Components: more information here.

Extensions

  • Improving the memory consumption during the C++ witness generation.