- Adding a warning if the programmer is using the operator <-- when it is possible to use <== instead (if the right side is a quadratic expression and the instruction is not contained in a custom template).
- Signal ids in custom templates changed to 64 bits.
- Array sizes are expected to be usize. Now, we throw an error in other case.
- Separating optimization option -O2 in two different options: --O2 and --O2rounds. Explanation can be found here. The default option is currently --O2.
- Writing Sections 4 and 5 of the r1cs file, only if "pragma custom_templates" is used (which is needed if custom templates are present).
- Improving --O1 optimization.
- Adding a new documentation section about the different compilation options and flags.
- Fixing -l option to disallow several values for one option: each value must have its own -l option.
- Adding a link option -l that works as usual in other programming languages, to include a directory to look for the circuits indicated by the directive include.
- Adding a warning if the programmer is using the operator <-- when it is possible to use <== instead (if the right side is a quadratic expression).
- circom returns 0 if everything was correct and a number greater than 0 if something was wrong.
- Changing the log operator to work as usual in other programming languages.
- The keyword parallel can be used per instance instead of per template. Now, parallel can be indicated before the instantiation call to make parallel such a particular instance.
- Wasm Functions getMinorVersion and getPatchVersion to obtain the minor and the patch version.
- Fixing main.cpp to allow handling a main component without inputs.
- New log version has to be applied in every version of wasm files. (By a mistake, it was not updated for every wasm files.)
- Log operation receives as parameters a list of expressions and string. (Documentation is here.
- New heuristics that improves the constraint simplification process is added by default. The old version of the simplification process can be still used using the option "--use_old_simplification_heuristics".
- Initialization of every array position to 0 in both C and WASM witness generator.
- New check of size vector when vector assignment:
+ If a vector is assigned in a smaller vector, then an error is produced.
+ If a vector is assigned in a larger vector, then a warning is produced. (The remaining positions will have their previous values, or 0
otherwise. - Improvement of the trace error message.
- Adding three new prime numbers in circom and a flag to choose which one to use.
- Adding custom templates to circom. (Documentation is here).
- Adding published binaries for mac, linux and windows.
- Removing non-determinism in linear constraints that cannot be removed.
- Making deterministic the code generation.
- Adding signal one in the wires counting for optimization option '-O0'.
- Bug in conditional creation of components inside loops
- Improvement of unused signals removal in constraint optimization.
- macos (x86_64) support for cpp backend added: use template to generate makefile (Not available for M1).
- wabt dependency swapped to wast dependency instead.
- Improvement of the known/unknown analysis.
- Single signal declaration with initialization added for both <== and <--.
- Input signal size check added in wasm/JS and C++ generated code.
- Recommendation of using C++ when the memory needed is beyond WebAssembly limit added.
- Making deterministic the R1CS file: constraints will be always written in the R1CS file in the same order.
- Bug in C++ error trace management for asserts in functions.
- Bug in multiple line(s) comments.
- Bug in unassigned inputs of arrays of size 0.
- Bug in the use of constant division operation on constraints.
- Bug in evaluation of expressions involving subcomponents signals.
- Improvement in the check all array dimensions in its definition have known size.
- A new verbose flag is added: If –verbose is set the compiler shows log messages during constraint generation.
- Bug in functions that return calls to other functions.
- A check that all inputs are set is added in the wasm/JS and C++ generated code.
- Improvement of the “merge_code” implementation in code generators.
- Error trace printed in the C++ code when an assert fails.
- Compiler versions in circom programs handling added (improving the pragma instruction).
- Arrays of components with uninstantiated positions are handled.
- Comments in the wat code only generated when –wat flag is used.
- Bug in the line number generation for wasm error message.
- Bug: R1CS map is an array of 64bit elements (instead of 32bit).
- Bug on the initial memory size (too large) defined in the generated wasm code and error message handling in wasm generation added.
- Bug with use of circuit file names with dots.