github.com/consensys/gnark@v0.11.0/CHANGELOG.md (about)

     1  <a name="v0.11.0"></a>
     2  ## [v0.11.0] - 2024-09-06
     3  ### Build
     4  - update runner and go version ([#1260](https://github.com/consensys/gnark/issues/1260))
     5  
     6  ### Chore
     7  - update version
     8  - explicit IO methods in interfaces ([#1266](https://github.com/consensys/gnark/issues/1266))
     9  - update gnark-crypto module
    10  - clean old definition
    11  - generate
    12  - define interface for solidity-supported VK
    13  - make function comments match function names ([#1163](https://github.com/consensys/gnark/issues/1163))
    14  
    15  ### Docs
    16  - update README ([#1255](https://github.com/consensys/gnark/issues/1255))
    17  - update reference
    18  - describe potential length extension attack when using MiMC in-circuit ([#1198](https://github.com/consensys/gnark/issues/1198))
    19  - fix typo in package doc
    20  - add documentation
    21  - update documentation for ecdsa and eddsa
    22  - update TODOs ([#1109](https://github.com/consensys/gnark/issues/1109))
    23  
    24  ### Feat
    25  - use offset variable in derive_gamma
    26  - handle invalid signature failures in ECRecover precompile ([#1101](https://github.com/consensys/gnark/issues/1101))
    27  - allow configurable hash-to-field function for Groth16 Solidity verifier ([#1102](https://github.com/consensys/gnark/issues/1102))
    28  - add IsOnG2 for BN254 ([#1204](https://github.com/consensys/gnark/issues/1204))
    29  - use blake2 for variable hashcode ([#1197](https://github.com/consensys/gnark/issues/1197))
    30  - simplified offset computation
    31  - ensure verifying keys implement Solidity interface
    32  - handle solidity options in CI check
    33  - use fpstr in Groth16 Solidity template
    34  - define fpstr method for groth16 solidity template
    35  - define import_fp template
    36  - code gen
    37  - statistical zero knowledge option for bn254
    38  - use offset in pairing
    39  - capture O variable in gate for external range checker ([#1211](https://github.com/consensys/gnark/issues/1211))
    40  - code gen
    41  - add BN254 final exponentiation check with output ([#1209](https://github.com/consensys/gnark/issues/1209))
    42  - use anonymous struct
    43  - added version solidity template groth16 verifier
    44  - re ran code gen and add files
    45  - update solidity template groth16
    46  - update template
    47  - change signature ExportSolidity groth16
    48  - code gen
    49  - code gen
    50  - modified plonk template
    51  - code gen
    52  - modified signature of ExportSolidity in template
    53  - addition of export options for solidity verifiers
    54  - simplify loop constraint index
    55  - **bw6:** Fp6 as a direct extension using Montgomery-6
    56  
    57  ### Feat
    58  - implement FixedLengthSum of sha2 ([#821](https://github.com/consensys/gnark/issues/821))
    59  
    60  ### Fix
    61  - remove redundant select
    62  - variable modulus subtraction padding ([#1200](https://github.com/consensys/gnark/issues/1200))
    63  - branch with unchecked cast could panic at compile time ([#1234](https://github.com/consensys/gnark/issues/1234))
    64  - minimum 1 bit for constant binary decomposition ([#1229](https://github.com/consensys/gnark/issues/1229))
    65  - edge case with PLONK backend when 1 constraint ([#1226](https://github.com/consensys/gnark/issues/1226))
    66  - strict ModReduce in emulated fields ([#1224](https://github.com/consensys/gnark/issues/1224))
    67  - used size in domain instead of recomputing it
    68  - remove unconstrained and unused variables
    69  - remove unconstrained and unused variables ([#1218](https://github.com/consensys/gnark/issues/1218))
    70  - avoid malicious hint in BLS12-381 final exp check
    71  - avoid infinite loop in hint when previous ML=0
    72  - avoid malicious hint in BN254 final exp check
    73  - conditional check in non-native IsZero for applying optimization ([#1145](https://github.com/consensys/gnark/issues/1145))
    74  - use consecutive powers instead of squaring ([#1212](https://github.com/consensys/gnark/issues/1212))
    75  - use emulated arithmetic for GLV decomp ([#1167](https://github.com/consensys/gnark/issues/1167))
    76  - restored cfg struct
    77  - fixed error_mod_exp comment
    78  - shift constraint indices by nb of public vars ([#1128](https://github.com/consensys/gnark/issues/1128))
    79  - fixed conflicts
    80  - fixed comment prove
    81  - fixed typo PROOF_H_0_X -> PROOF_H_0_COM_X
    82  - fixed UnmarshalSolidity
    83  - fixed comment
    84  - fixed fold_h comment
    85  - fixed comment
    86  - fixed comment
    87  - removed redundant computation pointer update
    88  - remove redundant computation
    89  - several external typo fixes ([#1261](https://github.com/consensys/gnark/issues/1261))
    90  - ensure condition is bool in api.Select
    91  - fix OR computation in case one input is constant and other variable ([#1181](https://github.com/consensys/gnark/issues/1181))
    92  - fixed comment unmarshal
    93  - fixed comment solidity
    94  - fixed comment solidity
    95  - fixed comment solidity
    96  - fixed comment solidity
    97  - fixed some comments
    98  - fixed L-05
    99  - fixed L-04
   100  - fixed M-04
   101  - fixed L-04
   102  - fixed l-02
   103  - defer to math.bits when nbdigits big or not set
   104  - fix [#1149](https://github.com/consensys/gnark/issues/1149) by removing unused code ([#1164](https://github.com/consensys/gnark/issues/1164))
   105  - exact width for upper part
   106  - more descriptive error message ([#1104](https://github.com/consensys/gnark/issues/1104))
   107  - added missing import in template
   108  - fixed solidity template
   109  - fixes [#1157](https://github.com/consensys/gnark/issues/1157) ensures calls to AttachDebugInfo are surrounded with… ([#1160](https://github.com/consensys/gnark/issues/1160))
   110  - **bls12-377:** use FinalExponentiationCheck in pairing2.go
   111  - **bls12-377:** push to cyclo group in pairing2.go
   112  - **bls12-377:** hint computation for final exp
   113  - **bls12-377:** naming of Fp6 mul
   114  - **bw6:** Toom-Cook 6-way mul
   115  - **bw6:** pairing using direct sextic extension
   116  - **pairing:** fix benchmarks
   117  - **uints:** constrain valueOf ([#1139](https://github.com/consensys/gnark/issues/1139))
   118  
   119  ### Fix
   120  - Build on 32-bit arch would raise int overflow https://github.com/Consensys/gnark/issues/1192 ([#1195](https://github.com/consensys/gnark/issues/1195))
   121  
   122  ### Perf
   123  - eliminate final exp in bls12-381 optimized
   124  - eliminate final exp in bls12-377
   125  - optimize final exp bls12-377
   126  - **bls12-381:** use cyclotomic group in finel exp check
   127  - **bls12-381:** eliminate finalexp ~naively
   128  - **bls12-381:** revisit tower extension
   129  - **bn254:** eliminate finalexp as per eprint 2024/640
   130  - **bn254:** use cyclotomic group in final exp check
   131  - **bn254:** revisit tower extension
   132  - **bn254:** save one mul in finalExp check
   133  - **bn254:** optimize addchain for exp by 6u+2
   134  - **bn254:** eliminate finalexp in precompile
   135  - **bw6:** optimize specialized Montgomery-6 mul
   136  - **bw6:** sparse mul by lines
   137  - **bw6:** save 2 subs in fp6 sq
   138  - **bw6:** optimize mulby023
   139  - **bw6:** mulby02345
   140  - **bw6:** save some subs in Fp6 square
   141  - **bw6:** Square uses Karatsuba over Chung-Hasan instead of TC6
   142  - **bw6:** revisit tower extension
   143  - **bw6:** save some adds in specialized mul e6
   144  - **bw6:** use hint to divide by 362880 in Toom-6
   145  - **bw6:** optimize Montgomery-6 mul
   146  - **bw6:** optimize pairing with new tower
   147  - **bw6:** use Karabina12345 instead of GS for small sizes too
   148  - **bw6:** toom-cook-3x for Fp3 mul
   149  - **bw6-761:** eliminate finalexp
   150  - **bw6-761:** use Karabina even for 1 square
   151  - **bw6-761:** push ML to cyclo-group before FE elimination
   152  
   153  ### Refactor
   154  - clean code
   155  - revert to old line computation and adjust gnark-crypto instead
   156  - move utils from std/ to internal
   157  - apply review suggestions
   158  - apply review suggestions
   159  - separate fixed circuits used in zkevm ([#1217](https://github.com/consensys/gnark/issues/1217))
   160  - clean code
   161  - clean code
   162  - move limb composition to package
   163  - use single implementation
   164  - clean code
   165  - removes todods ([#1111](https://github.com/consensys/gnark/issues/1111))
   166  - **bls12-377:** karabina decompression
   167  - **bn254:** clean FE elimination code
   168  - **bn254:** add some comments
   169  - **bw6:** remove dead code
   170  - **bw6:** remove benchmark
   171  - **bw6:** remove benchmark
   172  - **bw6:** apply review suggestion
   173  
   174  ### Style
   175  - fixed wrong EcMul comment
   176  - fixed comment
   177  - fixed comment
   178  - fixed typos
   179  - added comment
   180  - removed unused variable
   181  - constant for fixed size proof
   182  - SHA2 constant to replace 0x2
   183  - cleaner computation nb BSB commitments
   184  - renamed H commitments constants
   185  - reuse variable
   186  - removed redundant if statement
   187  - lagrangeOne -> lagrangeZero
   188  - verify_opening_linearised_polynomial -> compute_opening_linearised_polynomial
   189  - divideByXMinusOne could -> divideByZH
   190  - fixed typo
   191  - clean code
   192  - remove old todos ([#1106](https://github.com/consensys/gnark/issues/1106))
   193  
   194  ### Test
   195  - update stats
   196  - update stats
   197  - added non regression test for api.Select bool cond
   198  - add issue 1153 repro
   199  - update stats
   200  - check errors in test circuit ([#1140](https://github.com/consensys/gnark/issues/1140))
   201  - update stats
   202  - update stats
   203  - update stats
   204  - update stats
   205  - add PLONK test for public input mapping ([#1123](https://github.com/consensys/gnark/issues/1123))
   206  - update stats
   207  
   208  ### Wip
   209  - toom-cook-3x
   210  
   211  ### Pull Requests
   212  - Merge pull request [#1254](https://github.com/consensys/gnark/issues/1254) from Consensys/perf/ML
   213  - Merge pull request [#1258](https://github.com/consensys/gnark/issues/1258) from Consensys/refactor/limb-composition
   214  - Merge pull request [#1251](https://github.com/consensys/gnark/issues/1251) from Consensys/build/bump-gnarkcrypto-vsn
   215  - Merge pull request [#1247](https://github.com/consensys/gnark/issues/1247) from Consensys/fix/issue1246
   216  - Merge pull request [#1207](https://github.com/consensys/gnark/issues/1207) from Consensys/perf/eliminate-finalExp-bls
   217  - Merge pull request [#1214](https://github.com/consensys/gnark/issues/1214) from Consensys/fix/BN254-finalExp
   218  - Merge pull request [#1196](https://github.com/consensys/gnark/issues/1196) from ThomasPiellard/audit/final-commit-fixes
   219  - Merge pull request [#1143](https://github.com/consensys/gnark/issues/1143) from Consensys/perf/eliminate-finalExp
   220  - Merge pull request [#1187](https://github.com/consensys/gnark/issues/1187) from Consensys/fix/groth16-solidity-templates
   221  - Merge pull request [#1155](https://github.com/consensys/gnark/issues/1155) from Consensys/perf/eliminate-finalExp-bw6761
   222  - Merge pull request [#1173](https://github.com/consensys/gnark/issues/1173) from Consensys/perf/eliminate-finalExp-bls12381
   223  - Merge pull request [#11](https://github.com/consensys/gnark/issues/11) from ThomasPiellard/audit/M-04
   224  - Merge pull request [#10](https://github.com/consensys/gnark/issues/10) from ThomasPiellard/audit/L-02
   225  - Merge pull request [#14](https://github.com/consensys/gnark/issues/14) from ThomasPiellard/audit/H-01
   226  - Merge pull request [#13](https://github.com/consensys/gnark/issues/13) from ThomasPiellard/audit/N-05
   227  - Merge pull request [#2](https://github.com/consensys/gnark/issues/2) from ThomasPiellard/audit/N-01
   228  - Merge pull request [#5](https://github.com/consensys/gnark/issues/5) from ThomasPiellard/audit/L-08
   229  - Merge pull request [#7](https://github.com/consensys/gnark/issues/7) from ThomasPiellard/audit/L-06
   230  - Merge pull request [#6](https://github.com/consensys/gnark/issues/6) from ThomasPiellard/audit/L-07
   231  - Merge pull request [#8](https://github.com/consensys/gnark/issues/8) from ThomasPiellard/audit/L-05
   232  - Merge pull request [#4](https://github.com/consensys/gnark/issues/4) from ThomasPiellard/audit/N-03
   233  - Merge pull request [#3](https://github.com/consensys/gnark/issues/3) from ThomasPiellard/audit/N-02
   234  - Merge pull request [#1](https://github.com/consensys/gnark/issues/1) from ThomasPiellard/audit/N-04
   235  - Merge pull request [#9](https://github.com/consensys/gnark/issues/9) from ThomasPiellard/audit/L-04
   236  - Merge pull request [#12](https://github.com/consensys/gnark/issues/12) from ThomasPiellard/audit/L-03
   237  - Merge pull request [#1165](https://github.com/consensys/gnark/issues/1165) from Consensys/fix/partition-bounds
   238  - Merge pull request [#1138](https://github.com/consensys/gnark/issues/1138) from Consensys/feat/option_solidity
   239  - Merge pull request [#1131](https://github.com/consensys/gnark/issues/1131) from Consensys/perf/toom3-r1cs
   240  - Merge pull request [#1126](https://github.com/consensys/gnark/issues/1126) from Consensys/perf/direct-extensions
   241  - Merge pull request [#1110](https://github.com/consensys/gnark/issues/1110) from Consensys/perf/field-extensions
   242  - Merge pull request [#1113](https://github.com/consensys/gnark/issues/1113) from Consensys/docs/signatures
   243  
   244  
   245  <a name="v0.10.0"></a>
   246  ## [v0.10.0] - 2024-04-22
   247  ### Bench
   248  - large
   249  - don't inflate the decompressed size too much
   250  - proving works
   251  - 26KB
   252  - huffman decoding
   253  - awful
   254  
   255  ### Bls12377
   256  - faster e6 MulBy01
   257  - test e6 MulBy01
   258  - test mul 01 by 01
   259  
   260  ### Bls12381
   261  - faster e6 MulBy01
   262  
   263  ### Bls24315
   264  - faster e12 MulBy01
   265  - test e12 MulBy01
   266  
   267  ### Bn254
   268  - faster e6 MulBy01
   269  - test mul 01 by 01
   270  
   271  ### Build
   272  - update compress to v0.2.3 ([#1032](https://github.com/consensys/gnark/issues/1032))
   273  - get gopter
   274  
   275  ### Bw6761
   276  - faster e3 MulBy01
   277  - test mul 01 by 01
   278  
   279  ### Chore
   280  - remove prints and all huffman code
   281  - comments/cleanup for lzss compression
   282  - update stats
   283  - remove committed profiles ([#1053](https://github.com/consensys/gnark/issues/1053))
   284  - adapt changes from native Fiat-Shamir transcript ([#974](https://github.com/consensys/gnark/issues/974))
   285  - go.sum
   286  - update stats
   287  - remove unused line eval init
   288  - use type alias
   289  - inline computation
   290  - fix linter errors
   291  - merge rough edges
   292  - update gnark-crypto
   293  - update gnark-crypto
   294  - gitignore
   295  - update stats
   296  - remove unused line init
   297  - remove unused code
   298  - set word size to 1
   299  - minor changes to benchmark
   300  - update gnark-crypto to latest
   301  - uncrowd the pr a bit more
   302  - cleanup documentation examples
   303  - avoid nonnative dereferences ([#861](https://github.com/consensys/gnark/issues/861))
   304  - better logging, remove code from data folder
   305  - update gnark-crypto to latest
   306  - clean up comments and prints
   307  - avoid dereferencing into existing Elements
   308  - remove prints
   309  - clean up test cases
   310  - improved analytics
   311  - **deps:** bump golang.org/x/crypto from 0.12.0 to 0.17.0 ([#973](https://github.com/consensys/gnark/issues/973))
   312  
   313  ### Ci
   314  - don't run redundant release checks
   315  - run more tests when doing PR
   316  - remove github bot
   317  - make macOS and win do minimal tests only
   318  
   319  ### Clean
   320  - rm solidity.tmpl
   321  
   322  ### Doc
   323  - add docs to NewR1CS and NewSparseR1CS in system.go [#985](https://github.com/consensys/gnark/issues/985)
   324  
   325  ### Docs
   326  - clean comments
   327  - add hint definition for native inputs
   328  - method doc native output
   329  - add comments
   330  - add subgroup check to doc_test.go
   331  - describe that hint inputs and outputs are init-ed ([#1003](https://github.com/consensys/gnark/issues/1003))
   332  - clean comments
   333  - update algebra documentations
   334  - GLV hint
   335  - define that addition is now unsafe
   336  - add method documentation
   337  - BestCompression vs BestSnarkDecomposition
   338  
   339  ### FEAT
   340  - Add experimental support for Icicle GPU acceleration behind build tag ([#844](https://github.com/consensys/gnark/issues/844))
   341  
   342  ### Feat
   343  - register hints in std/ also when have no circuit
   344  - change sign in comment
   345  - modified comment
   346  - expmod with variable modulus ([#1090](https://github.com/consensys/gnark/issues/1090))
   347  - moved claimed values of linearised polynomial out of the proof
   348  - re enable test bs12->bw6
   349  - code gen
   350  - implement glv for all curves
   351  - code gen
   352  - replaced precompiles opcode with constants
   353  - addition of precompiles as constants
   354  - used  to compute offsets in state
   355  - used  in template for proof offsetss
   356  - Groth16 Solidity contract with commitments ([#1063](https://github.com/consensys/gnark/issues/1063))
   357  - add secp256k1 curve default initializer ([#1086](https://github.com/consensys/gnark/issues/1086))
   358  - add range check selector retrieval ([#1066](https://github.com/consensys/gnark/issues/1066))
   359  - add MulNoReduce and Sum methods in field emulation ([#1072](https://github.com/consensys/gnark/issues/1072))
   360  - add non-native hint with native inputs
   361  - add non-native hint with native output
   362  - add non-native hint with native output
   363  - non-native sumcheck verifier ([#1042](https://github.com/consensys/gnark/issues/1042))
   364  - verify commitments in groth16 recursion verifier ([#1057](https://github.com/consensys/gnark/issues/1057))
   365  - add option for enforcing number of goroutines for the solver ([#1052](https://github.com/consensys/gnark/issues/1052))
   366  - stabilize anonymous hint function names ([#1054](https://github.com/consensys/gnark/issues/1054))
   367  - modified algebraic relation
   368  - G2 membership bls12-377
   369  - G1 membership bls12-377
   370  - curve/twist membership bls12-377
   371  - subgroup G1/G2 membership BW6-761
   372  - add PLONK in-circuit verifier ([#880](https://github.com/consensys/gnark/issues/880))
   373  - pairing precompile error handled
   374  - code gen
   375  - clean MarshalSolidity
   376  - fix unmarshalling solidity
   377  - use n-bit mux for switching PLONK verification keys ([#1017](https://github.com/consensys/gnark/issues/1017))
   378  - code gen plonk upgrade
   379  - adds plonk.SRSSize helper method ([#1012](https://github.com/consensys/gnark/issues/1012))
   380  - different PLONK circuit verification ([#1010](https://github.com/consensys/gnark/issues/1010))
   381  - renaming zhZeta
   382  - opening of h0, h1, h2 ok
   383  - using batch inversion
   384  - remove foldedHDigest
   385  - add quotient to the linearised polynomial
   386  - multiply s1, s2 by alpha
   387  - some todos and dead code ([#993](https://github.com/consensys/gnark/issues/993))
   388  - add WithUseSafe option
   389  - update compress version; failing test (resolved) ([#979](https://github.com/consensys/gnark/issues/979))
   390  - regenerate internal/stats
   391  - updated comment in fold_state
   392  - groth16 solidity use calldatacopy for commitments ([#1097](https://github.com/consensys/gnark/issues/1097))
   393  - plonk verifier options ([#1028](https://github.com/consensys/gnark/issues/1028))
   394  - if we don't compress we don't need the dict ([#929](https://github.com/consensys/gnark/issues/929))
   395  - exit when an error is encountered
   396  - exit when condition is not filled
   397  - make registries for gkr thread safe ([#920](https://github.com/consensys/gnark/issues/920))
   398  - cache lookup blueprint entries in solving phase ([#915](https://github.com/consensys/gnark/issues/915))
   399  - batched KZG ([#908](https://github.com/consensys/gnark/issues/908))
   400  - forceDivisibleBy
   401  - compile large circuit outside tests
   402  - Fiat-Shamir transcript using a short hash ([#900](https://github.com/consensys/gnark/issues/900))
   403  - snark decomp done, not yet tested
   404  - snark decompressor, all but eof logic done
   405  - offset, length and bytes tables
   406  - read lengths!
   407  - new stream
   408  - add multi symbol
   409  - started v2
   410  - r/w num, (un)marshal for stream
   411  - implement bit mode for short hash
   412  - use bitlength from parameters
   413  - bit-level alignment of compressed
   414  - marshalling G1 and Scalar on emulated curves, following gnark-crypto
   415  - add short-hash wrappers for recursion ([#884](https://github.com/consensys/gnark/issues/884))
   416  - native marshal (bls12, 24) consistent with gnark-crypto
   417  - marshal G1 ok on non emulated curves (bls12, 24)
   418  - pack/unpack functions
   419  - add fixed pairing for bw6-761
   420  - allow custom hash function in backends ([#873](https://github.com/consensys/gnark/issues/873))
   421  - more analytics
   422  - some analytics
   423  - add bw6 kzg
   424  - add bw6 emulated ScalarMul and ScalarMulBase
   425  - api.IsNonZero
   426  - huffman Decode
   427  - add bw6 fields
   428  - bzip2 (bzip would be better)
   429  - some experiments with huffman coding
   430  - preliminary snark decompressor impl
   431  - basic i/o funcs
   432  - small tests work with indeterminate length
   433  - basic lzss decompressor
   434  - new data set and huffman estimations
   435  - IsByteZero works
   436  - add naive bw6 miller loop
   437  - add bw6 final exp
   438  - **2-chain:** MSM of size 2
   439  - **emulated bw6 pairing:** optimal tate version working
   440  - **sw_bls12377:** Add DoubleFixedQPairing
   441  - **sw_bls24315:** Add DoubleFixedQPairing
   442  
   443  ### Fix
   444  - test final exp without gnark-crypto hack
   445  - JointScalarMulBase without GLV (for ecdsa package)
   446  - fixed type
   447  - folded MSM scalar decomposition
   448  - emulated hint tests ([#1083](https://github.com/consensys/gnark/issues/1083))
   449  - edge cases in SM and JSM were inverted + comments
   450  - incorrect parameter
   451  - several typos in the documentation ([#943](https://github.com/consensys/gnark/issues/943))
   452  - remove duplicate error check
   453  - scs add/mul when recorded constraint is 0
   454  - organize std packages hints registrations ([#1043](https://github.com/consensys/gnark/issues/1043))
   455  - another occurence of G1 in SRS ([#1036](https://github.com/consensys/gnark/issues/1036))
   456  - use G1 generator from SRS ([#1035](https://github.com/consensys/gnark/issues/1035))
   457  - verifier works
   458  - fixed size slice
   459  - fixed formula in comments
   460  - AssertOnG1 BLS12-377
   461  - use subtraction with reduce in AssertIsEqual ([#1026](https://github.com/consensys/gnark/issues/1026))
   462  - plonk recursion without commitment
   463  - fixed compute_gamma_kzg
   464  - fixed offset opening at zeta-omega
   465  - Decompressor to return -1 when output doesn't fit ([#1022](https://github.com/consensys/gnark/issues/1022))
   466  - fixed typo
   467  - fixed verify_opening_linearised_polynomial
   468  - fixed proof size
   469  - fixed generator
   470  - fixed comment derive alpha
   471  - fixed MarshalSolidity
   472  - assign baseChallenge correctly while verifying gkr solution ([#1020](https://github.com/consensys/gnark/issues/1020))
   473  - verifier ok
   474  - add Placeholder for vk with fixed lines
   475  - remove shorthash override for same field ([#1008](https://github.com/consensys/gnark/issues/1008))
   476  - bw6 field emulation
   477  - works on small test case
   478  - "last byte" bug
   479  - typo
   480  - typo
   481  - typo
   482  - typo
   483  - rename ScalarMulGeneric to scalarMulGeneric in tests
   484  - swith points order in JointScalarMulBase
   485  - init lines before assigning
   486  - use eigenvalue and thirdroot pointers
   487  - stats
   488  - use Generic instead of GLV for ECMUL to handle edge-cases
   489  - remove debug panic from previous commit
   490  - ensure plonk verify check witness length ([#952](https://github.com/consensys/gnark/issues/952))
   491  - update stats
   492  - some bugs
   493  - groth16 verifier
   494  - ReadIntoStream
   495  - bn254 -> {{ toLower .Curve }}
   496  - test Expt remaned to ExpX0
   497  - compression works on the first 300b of calldata
   498  - missing wait on channel in plonk prover ([#926](https://github.com/consensys/gnark/issues/926))
   499  - minor test issues
   500  - bad merge. bad git!
   501  - use platform independent method for counting new multiplication overflow from result limb count ([#916](https://github.com/consensys/gnark/issues/916))
   502  - actually remove the go generate line
   503  - comment out go generate in suffixarray
   504  - groth16 recursion
   505  - non-native arithmetic autoreduction for division, inversion and sqrt ([#870](https://github.com/consensys/gnark/issues/870))
   506  - readIntoStream bug
   507  - simple table lookup works
   508  - test with backrefs
   509  - some minor bugs
   510  - use gt(arg, R_MOD_MINUS_ONE)
   511  - small packing test works
   512  - fuzzer bug
   513  - 18b offset - ave
   514  - snark errors
   515  - DoublePairFixedQ with different inputs
   516  - test MulBy014 and remove old MulBy034
   517  - make tests pass
   518  - update latest.stats
   519  - make builder private again
   520  - 1B addresses seem to work
   521  - trailing backref bug
   522  - plonk.SRSSize takes constraint.ConstraintSystem as input, not constraint.System
   523  - works on 2c2964. performance awful
   524  - remove outdated test
   525  - read bugs
   526  - ineffectual assignment to err
   527  - failed
   528  - presumption of long negative space of zeros
   529  - two symbols test
   530  - use M-twist (014) for emulated BW6 pairing
   531  - RLE bug
   532  - bug with negative indexes
   533  - bug with lone 0 in high indexes
   534  - all tests pass, except for 3c2943: too slow
   535  - all zeros tests pass
   536  - write to the output table
   537  - all "simple" tests pass
   538  - zerosAfterNonzero pass
   539  - can handle two consecutive backrefs
   540  - works on 3c2943 with symb 0
   541  - **2-chain:** last iteration of MSM of size 2
   542  - **2-chains:** varScalarMulG1 edge cases
   543  - **2-chains:** constScalarMulG1 edge cases
   544  - **2-chains:** ScalarMulG2 edge cases
   545  - **bw6:** fix Expt test
   546  - **bw6:** DecompressKarabina edge cases
   547  - **linter:** ineffectual assignment
   548  
   549  ### Perf
   550  - add lazy match look ahead 1
   551  - adjustement
   552  - use logderiv map
   553  - prefer actual backrefs for RLE; better but still bad
   554  - replace dummy G by (0,1) in ScalarMul
   555  - dfa search; actually makes things worse
   556  - ite -> api.Select
   557  - naive emulated bw6 pairing working
   558  - huffman improvement
   559  - use less outputs (joint)
   560  - use less outputs from hints
   561  - optimize hint computation with corresponding output field
   562  - do not use multiplication for subscalar check
   563  - simplify the glv decomposition hint
   564  - emulated equality assertion ([#1064](https://github.com/consensys/gnark/issues/1064))
   565  - minor optims for plonk verifier
   566  - save some negs in ec arithmetic
   567  - big optim for JointScalarMulBase
   568  - reduce 1 lookup per backref
   569  - a few petty opts
   570  - do not store zero mul constraint
   571  - glv-base msm for bw6 (dirty)
   572  - a few little opts
   573  - custom constraint for inIDelta
   574  - custom constraint for advancing inI
   575  - custom constraint for copying
   576  - more small optim to jointScalarMulGLV
   577  - more optim to jointScalarMulGLV
   578  - "start at"
   579  - kzg gadget using DoubleFixedQPairing
   580  - make compress way faster
   581  - plonk verifier
   582  - binary search of longest backref
   583  - small optim replacing Sub by Add
   584  - one binary search only
   585  - fold H before big MSM
   586  - even better lookahead for lazy deflate
   587  - non-native multilinear polynomial evaluation ([#1087](https://github.com/consensys/gnark/issues/1087))
   588  - groth16 uses precomputed lines for all curves
   589  - mark the result of `builder.IsZero` as boolean to save constraints when used in future ([#977](https://github.com/consensys/gnark/issues/977))
   590  - smaller backrefs
   591  - faster compression by reducing search space
   592  - avoid some additions in jointScalarMulGLV
   593  - bw6 glv with smaller loop
   594  - small optim in jointScalarMulGLV
   595  - save 4 scs in lookup2 api
   596  - big optim for JointScalarMul and MSM
   597  - isolate trival add/mul by 0/1 in plonk verifier and kzg
   598  - rewrite Hayashida et al. hard part
   599  - non-native modular multiplication ([#749](https://github.com/consensys/gnark/issues/749))
   600  - implement unified addition in 2-chains
   601  - mutualize bit decomposition when same scalar used is ScalarMul
   602  - reduce mem alloc when init suffix array
   603  - use JointScalarMul in plonk recursion
   604  - bounded scalar multiplication ([#934](https://github.com/consensys/gnark/issues/934))
   605  - use G2 precomputed lines for Miller loop ([#930](https://github.com/consensys/gnark/issues/930))
   606  - replace sort.Search
   607  - don't use 0 as symbol delimiter
   608  - lookup blueprint compile time improvement ([#899](https://github.com/consensys/gnark/issues/899))
   609  - use new fixed-arg pairing in kzg
   610  - use new fixed-arg pairing in kzg (WIP)
   611  - **2-chain:** handle edge cases in varScalarMul
   612  - **2-chain:** optimize varScalarMul
   613  - **2-chain:** small scs optim to doubleAndAdd
   614  - **2-chain:** save 1 add in varScalarMul in G2
   615  - **2-chain:** optimize folded MSM
   616  - **2-chains:** small optim in varScalarMul and JointScalarMul
   617  - **2-chains:** apply fast path for constScalarMul edge cases
   618  - **2-chains:** save an addition per iteration in ScalarMul
   619  - **bls12-377:** implement a variant of Karabina cyclo square
   620  - **bls24:** optimize varScalarMul
   621  - **bn254:** mul lines 2-by-2 in fixed-arg pairing for KZG when bit=0
   622  - **bw6:** manually reducing E12 at some places yields better perf
   623  - **bw6:** lines-by-acc mul gives better results than line-by-line mul
   624  - **bw6:** implement a variant of Karabina cyclo square
   625  - **bw6:** use optimized DoublePairFixedQ in kzg
   626  - **bw6:** optimize final exponentiation
   627  - **bw6:** use more efficient addchains
   628  - **bw6-761:** save 1 ScalarMul in subgroup membership tests
   629  - **ecdsa:** use GLV in JointScalarMulBase
   630  - **ecmul:** use GLV with safe handling of edge cases in EVM ecmul
   631  - **ecrecover:** save 1 MulMod in ecrecover
   632  - **emulated:** huge optim scalarMulGLV
   633  - **emulated:** ScalarMulBase with GLV is better
   634  - **emulated:** save 1 add in scalarMulGLV
   635  - **emulated:** optimize GLV hint
   636  - **emulated:** big optim jointScalarMulGLV
   637  - **emulated:** big optim scalarMulGLV
   638  - **kzg:** remove folding and shrinked scalars options in MSM
   639  - **kzg:** use MSM instead of two SM in CheckOpeningProof
   640  - **plonkVerif:** manually reduce wrong-field elements here and there
   641  - **sw_emulated:** optimize jointScalarMulGeneric
   642  
   643  ### Refac
   644  - compression modes
   645  - remove useless functions
   646  
   647  ### Refactor
   648  - some refactoring
   649  - address PR review
   650  - compile 600KB
   651  - use safe version in precompile
   652  - merge safe implementation
   653  - ScalarMulSafe and ScalarMul
   654  - work on pointer values
   655  - use existing modulus value
   656  - use emulated pointer to avoid init when no GLV
   657  - make newG2Aff private
   658  - use line evaluation references for avoiding copies
   659  - hardcode glv values instead of exporting from gnark-crypto
   660  - remove SameScalarMul from interface
   661  - plonk.Setup takes kzg srs in canonical and lagrange form ([#953](https://github.com/consensys/gnark/issues/953))
   662  - reconcile with master
   663  - rename precompute to compute when done in-circuit
   664  - clean comments
   665  - algebra interface and pairing
   666  - use external compressor repo ([#942](https://github.com/consensys/gnark/issues/942))
   667  - consolidate emulated bw6-761 pairing with other curves
   668  - consolidate bw6-761 tower + fix GT exp tests
   669  - apply PR review suggestions
   670  - simplify hint overloading for api.Commit ([#919](https://github.com/consensys/gnark/issues/919))
   671  - re-introduce points in KZG verification key
   672  - kill backend.PLONK_FRI ([#1075](https://github.com/consensys/gnark/issues/1075))
   673  - use variable point in tests for precomputeLines
   674  - lzssv2 -> lzss
   675  - kill backend.PLONK_FRI
   676  - use lineEvaluation type instead of field elements
   677  - use emulated.FieldParams as type parameter to generic Curve and Pairing ([#901](https://github.com/consensys/gnark/issues/901))
   678  - bls24 also uses size 4 lines
   679  - lots of cleanup. one failing test remaining
   680  - keep one version + multi-pairing
   681  - get rid of lzssv1
   682  - no need for outAt
   683  - packing as stream feature
   684  - simplify packing
   685  - do not use internal objects
   686  - massive simplification of lzssv1 compression
   687  - consolidate pairing implementations
   688  - remove log heads
   689  - cleaning tests
   690  - **2-chain:** precomputed lines in pairing + KZG + plonk verifier
   691  - **2-chain bls24:** precomputed lines in pairing+KZG+plonk verifier
   692  - **2-chains:** use gnark-crytpo fixed-arg pairing
   693  - **2-chains:** remove Jacobian coordiantes code
   694  - **bls12-381:** precomputed lines embedded in G2Affine struct
   695  - **bn254:** precomputed lines embedded in G2Affine struct
   696  - **bw6:** remove some unnecessary computations
   697  - **bw6 pairing:** use MillerLoopOptAte in gnark-crypto for test
   698  - **bw6-761:** use revisited Ate pairing instead of Tate
   699  - **emulated:** use gnark-crytpo fixed-arg pairing
   700  - **kzg:** lazy precomputation of lines
   701  
   702  ### Revert
   703  - kill IsNonZero
   704  - map.keys/values to be private as before
   705  - uncrowd the pr
   706  - remove TestCompressWithContext
   707  - strange uppercase
   708  - dfa search was counterproductive
   709  
   710  ### Style
   711  - code cleaning
   712  - code cleaning
   713  - costmetics
   714  - remove prints
   715  - clean and document the code
   716  - remove redundant checks
   717  
   718  ### Test
   719  - decompression works; must go about packing differently
   720  - plonk verifier with precomputed lines
   721  - add tests for all types of hints
   722  - update stats
   723  - add regression test for zero mul duplicate
   724  - compress_tests pass
   725  - keep test curve
   726  - pack
   727  - bypassing decompression works
   728  - updates fuzz test with new API
   729  - fuzz
   730  - actual calldata
   731  - 253-254-255 fails
   732  - trying to recreate the length bug
   733  - add testdata/ fuzzer dir
   734  - average batch
   735  - compression roundtrip passes w merged stream utils
   736  - marshal test
   737  - add scalar marshal+hash
   738  - add g1 marshal + hash test
   739  - add test case for not recording zero mul constraint
   740  - update stats
   741  - add emulated pairing circuits to stats ([#1031](https://github.com/consensys/gnark/issues/1031))
   742  - reactivate other for cmp
   743  - added BenchmarkAverageBatch
   744  - added average batch test case
   745  - bw6 emulated kzg
   746  - a couple
   747  - failing test for cs loading
   748  - single symbol test
   749  - add huffman estimated gains
   750  - decompression snark
   751  - twoBackrefsAfterNonzero fails
   752  - actually, 257zerosAfterNonzero fails
   753  - twoZerosAfterNonzero
   754  - zeroAfterNonzero added, fixed
   755  - more, failing "8zerosAfterNonzero"
   756  - more state machine tests. failing
   757  - print compressed file size
   758  - some logging
   759  - **bw6:** recude multi-pairing size in tests
   760  
   761  ### Pull Requests
   762  - Merge pull request [#1044](https://github.com/consensys/gnark/issues/1044) from Consensys/feat/plonk_update
   763  - Merge pull request [#1085](https://github.com/consensys/gnark/issues/1085) from Consensys/perf/ec-arithmetic-2chain
   764  - Merge pull request [#1061](https://github.com/consensys/gnark/issues/1061) from Consensys/perf/ec-arithmetic
   765  - Merge pull request [#1080](https://github.com/consensys/gnark/issues/1080) from Consensys/feat/emulated-nativehint
   766  - Merge pull request [#1077](https://github.com/consensys/gnark/issues/1077) from shramee/faster-fq6-01
   767  - Merge pull request [#1076](https://github.com/consensys/gnark/issues/1076) from shramee/faster-fq6-01-01
   768  - Merge pull request [#1068](https://github.com/consensys/gnark/issues/1068) from Consensys/fix/recorded-scs
   769  - Merge pull request [#1030](https://github.com/consensys/gnark/issues/1030) from Consensys/feat/bw6-subgroupcheck
   770  - Merge pull request [#1049](https://github.com/consensys/gnark/issues/1049) from Consensys/perf/jointScalarMulGeneric
   771  - Merge pull request [#1023](https://github.com/consensys/gnark/issues/1023) from Consensys/fix/ec-edgecases
   772  - Merge pull request [#1016](https://github.com/consensys/gnark/issues/1016) from Consensys/perf/g16-circuit
   773  - Merge pull request [#976](https://github.com/consensys/gnark/issues/976) from Consensys/perf/ecmul-precompile
   774  - Merge pull request [#992](https://github.com/consensys/gnark/issues/992) from GoodDaisy/master
   775  - Merge pull request [#975](https://github.com/consensys/gnark/issues/975) from Consensys/perf/ecdsa
   776  - Merge pull request [#949](https://github.com/consensys/gnark/issues/949) from Consensys/perf/plonk-verifier
   777  - Merge pull request [#928](https://github.com/consensys/gnark/issues/928) from Consensys/feat/plonk_exit_if_error
   778  - Merge pull request [#933](https://github.com/consensys/gnark/issues/933) from Consensys/perf/karabina-cycloSq
   779  - Merge pull request [#931](https://github.com/consensys/gnark/issues/931) from Consensys/perf/bw6-finalExp
   780  - Merge pull request [#924](https://github.com/consensys/gnark/issues/924) from Consensys/feat/bypass-compression
   781  - Merge pull request [#891](https://github.com/consensys/gnark/issues/891) from Consensys/feat/marshal_g1_scalar
   782  - Merge pull request [#889](https://github.com/consensys/gnark/issues/889) from secure12/master
   783  - Merge pull request [#876](https://github.com/consensys/gnark/issues/876) from Consensys/feat/bw6761-fixed-pairing
   784  - Merge pull request [#878](https://github.com/consensys/gnark/issues/878) from Consensys/chore/example-cleanup
   785  - Merge pull request [#868](https://github.com/consensys/gnark/issues/868) from Consensys/fix/decompressKarabina
   786  - Merge pull request [#866](https://github.com/consensys/gnark/issues/866) from Consensys/feat/bw6761-kzg
   787  - Merge pull request [#846](https://github.com/consensys/gnark/issues/846) from Consensys/feat/bw6761-pairing
   788  
   789  
   790  <a name="v0.9.1"></a>
   791  ## [v0.9.1] - 2023-10-16
   792  ### Chore
   793  - go.mod tidy
   794  - update import paths
   795  - remove excessive comment
   796  
   797  ### Ci
   798  - update mod download tpl for prettier errors
   799  - remove gotestfmt for push to master workflow
   800  - new attempt to fix push to master workflow
   801  - grmpf
   802  - use runner.os
   803  - fix ubuntu ref
   804  - fix push workflow
   805  - fix push workflow
   806  
   807  ### Docs
   808  - add example docs
   809  - add example docs
   810  - add package documentation
   811  - add package documentation
   812  
   813  ### Feat
   814  - add BLS12-381 and BLS24-315 support to Groth16 gadget
   815  - add one more type parameter for witness initialisation
   816  - add BLS12-381 and BLS24-315 support to KZG gadget
   817  - add Curve and Pairing compatiblity for BLS24-315
   818  - add placeholder generating functions
   819  - add default pairing and curve getter
   820  - add witness assignment function
   821  - add helper methods to native pairing
   822  - add generic Groth16 implementation
   823  - add MSM and GT equality to generic interfaces
   824  - add generic KZG polynomial commitment verification
   825  - add generic Curve and Pairing interfaces
   826  
   827  ### Fix
   828  - cast bls12377 GT element coords to bw6 fr
   829  - fixed fold_state
   830  
   831  ### Perf
   832  - a special case for mulacc ([#859](https://github.com/consensys/gnark/issues/859))
   833  
   834  ### Refactor
   835  - remove typed KZG and Groth16 verifiers
   836  - rename KZG tests
   837  - use only KZG VK part
   838  - implement fully generic kzg verifier
   839  - use name type parameter types
   840  - add Scalar type alias
   841  - fix types
   842  - implement generic pairing and curve for bls12377
   843  - add Add to emulated SW
   844  
   845  ### Test
   846  - rename subtests
   847  - add ValueOf tests
   848  - full generic groth16 verifier
   849  - implement inner circuit without commitment
   850  - implement recursion test
   851  - add generic groth16 test (broken)
   852  - add KZG test for BLS12377
   853  - update version tag ([#841](https://github.com/consensys/gnark/issues/841))
   854  
   855  ### Pull Requests
   856  - Merge pull request [#840](https://github.com/consensys/gnark/issues/840) from Consensys/refactor/generic-kzg
   857  - Merge pull request [#820](https://github.com/consensys/gnark/issues/820) from Consensys/fix/fold_state
   858  
   859  
   860  <a name="v0.9.0"></a>
   861  ## [v0.9.0] - 2023-09-19
   862  ### Build
   863  - fix linter warning
   864  - update PR template and CI actions
   865  - generify bsb22 comm fs move
   866  
   867  ### Ci
   868  - cosmetic change
   869  - remove ubuntu specifics from windows / macOS path
   870  - adjust test on non-ubuntu target
   871  - avoid running std/ test on macOS CI
   872  
   873  ### Feat
   874  - add bounded comparator functions ([#530](https://github.com/consensys/gnark/issues/530))
   875  - add sha3 primitive ([#817](https://github.com/consensys/gnark/issues/817))
   876  
   877  ### Fix
   878  - assert that the binary decomposition of a variable is less than the modulus ([#835](https://github.com/consensys/gnark/issues/835))
   879  - remove panic when iterating constraints
   880  - don't bind bsb22 comm to gamma
   881  - move bsb22 comm fs in plonk prover
   882  - fs bsb22 commitment fs right before needed
   883  - plonk must commit to Qcp
   884  
   885  ### Perf
   886  - improve plonk prover memory footprint ([#815](https://github.com/consensys/gnark/issues/815))
   887  
   888  ### Refactor
   889  - **pairing:** remove bls24 bench + remove bn254 duplicate line
   890  
   891  ### Pull Requests
   892  - Merge pull request [#816](https://github.com/consensys/gnark/issues/816) from Consensys/perf/pairing-neg
   893  - Merge pull request [#812](https://github.com/consensys/gnark/issues/812) from Consensys/fix/plonk-bsb-challenge
   894  
   895  
   896  <a name="v0.9.0-alpha"></a>
   897  ## [v0.9.0-alpha] - 2023-08-18
   898  ### Bench
   899  - gkr inefficient
   900  - merkle tree
   901  
   902  ### Build
   903  - update direct dependencies
   904  - go gen
   905  - generify the changes
   906  - generify bn254 changes
   907  - generify
   908  - some generification and remove commented code
   909  - generify plonk refactor
   910  - generify commitment hashing
   911  - generify batch verification
   912  - generify serialization fix
   913  - merge named hint PR
   914  - generify some
   915  - remove debugging modifications
   916  - generify bn254 changes
   917  - generify bn254 changes
   918  - update gnark-crypto dependency
   919  - update gnark-crypto dep
   920  - go generate
   921  - update ci script
   922  - update stats
   923  - go get gnark-crypto[@develop](https://github.com/develop)
   924  - generify hashing pi2
   925  - generify public var fix
   926  - generify verifier changes
   927  - generify prover changes
   928  - generify setup changes
   929  - go generate
   930  - generify verifier changes
   931  - generify prover changes
   932  - generify setup changes
   933  - generify constraint changes
   934  - generify mpcsetup for all curves
   935  - upgraded github.com/stretchr/testify v1.8.1 => v1.8.2
   936  - gnark-crypto[@develop](https://github.com/develop)
   937  - generify
   938  - generify bn254/gkr changes
   939  - reran go generate
   940  - make linter happy
   941  
   942  ### Chore
   943  - update gnark-crypto dependency ([#790](https://github.com/consensys/gnark/issues/790))
   944  - make staticcheck happy
   945  - merge changes
   946  - more accurate field name, remove some dead code
   947  - rm deadcd, improve verifier mem, some docs
   948  - document hollow, remove in-house search
   949  - clean up tests
   950  - delete unnecessary test cases
   951  - go get gnark-crypto[@develop](https://github.com/develop)
   952  - point to gnark-crypto[@develop](https://github.com/develop)
   953  - git ignore go workspace ([#635](https://github.com/consensys/gnark/issues/635))
   954  - remove debug printing code
   955  - remove training wheels
   956  - update gnark-crypto dependency for exported towers
   957  - remove heavy profiling and compiling
   958  - some efforts from before christmas break
   959  
   960  ### Ci
   961  - allow weak rng in marshaling tests
   962  - ensure linter runs on generated files + adjustements ([#677](https://github.com/consensys/gnark/issues/677))
   963  
   964  ### Clean
   965  - removed dead code + double comments
   966  - removed dead code
   967  - even more deadcode
   968  - removed more dead code
   969  - removed dead code
   970  
   971  ### Dep
   972  - newer gnark-crypto
   973  - gnark-crypto
   974  
   975  ### Doc
   976  - explain commitment constraint
   977  - explain committed constraint
   978  
   979  ### Docs
   980  - clarify some comments
   981  - fix select description in field emulation
   982  - GKR API
   983  - comment fixed pairing
   984  - point at infinity
   985  - better names and a link to hackMd
   986  - explain the optionality of f in AddSolverHint
   987  - typo
   988  - subgroup check in doc-example
   989  - comment about AddUnified
   990  - typo
   991  - godoc linking
   992  - explain that r1cs.NewBuilder returns frontend.Committer
   993  - update pr template
   994  - make long equation codeblock
   995  - correct comment
   996  - comment about subgroup membership
   997  - comment about subgroup membership
   998  - update version in README.md
   999  - make href in godoc
  1000  - correct `WithNbDigits` description ([#522](https://github.com/consensys/gnark/issues/522))
  1001  - add documentation to std/algebra packages
  1002  - implement lookup2 comment
  1003  - fix docs, make links
  1004  - make documentation of weierstrass/ better
  1005  - add comments to sw_emulated
  1006  - add package documentation and example
  1007  - **fixed-emulated-pairing:** add some comments
  1008  
  1009  ### Feat
  1010  - hint name options
  1011  - use AssertIsOnG2 for ECPAIR precompile + comments
  1012  - calldatacopy in compute_gamma_kzg
  1013  - calldata ok
  1014  - compute_commitment_linearised_polynomial calldata ok
  1015  - fold_h calldata ok
  1016  - verify_quotient_poly_eval_at_zeta calldata ok
  1017  - pi contribution in calldata ok
  1018  - sum_pi_wo_commit calldata ok
  1019  - derive challenges calldata ok
  1020  - sanity checks in calldata Ok
  1021  - put function calls at the beginning of Verify
  1022  - verifier in one assembly block
  1023  - zeta to the n minus 1 extracted from compute_pi
  1024  - one single assembly block ok
  1025  - check_input_size in main block
  1026  - challenges derivation in the main block
  1027  - compute_pi in main assembly block ok
  1028  - compute_pi assembly ok
  1029  - hash_fr in assembly + removed Utils
  1030  - staticcall fails -> revert immediately instead of updated state_success
  1031  - zeta_power_n_minus_one save and reused in compute_pi
  1032  - [PLONK_AUDIT_4-15] fixes 757
  1033  - status of staticcalls are checked, fixes [#753](https://github.com/consensys/gnark/issues/753)
  1034  - added plonk.ProvingKey WriteRawTo and UnsafeReadFrom ([#746](https://github.com/consensys/gnark/issues/746))
  1035  - [PLONK_AUDIT_4-8] fixes [#743](https://github.com/consensys/gnark/issues/743)
  1036  - [PLONK_AUDIT_4-4] fixes [#741](https://github.com/consensys/gnark/issues/741)
  1037  - restored comments
  1038  - [PLONK_AUDIT_4-9] fixes 738
  1039  - "named gate"
  1040  - [PLONK_AUDIT_4-11] fixes [#735](https://github.com/consensys/gnark/issues/735)
  1041  - gkr-api for plonk
  1042  - update plonk solidity template ([#729](https://github.com/consensys/gnark/issues/729))
  1043  - added dummy setup part for g16 multi commit ([#725](https://github.com/consensys/gnark/issues/725))
  1044  - implement add-only Joye scalarMul
  1045  - groth16 commitmetInfo experiments
  1046  - in-place-ish DivideByThresholdOrList
  1047  - add sha2 primitive ([#689](https://github.com/consensys/gnark/issues/689))
  1048  - commitment info in groth16.vk[bn254] serialization
  1049  - commitment placeholder -> randomness
  1050  - lazy line initialising
  1051  - define precomputed lines only if initalising
  1052  - filterHeap for unsorted lists
  1053  - groth16 multicommit setup bn254, hopefully
  1054  - batch pedersen poks
  1055  - implement NIST P-256 and P-384 curves ([#697](https://github.com/consensys/gnark/issues/697))
  1056  - differentiate ecrecover with strict and lax check for s ([#656](https://github.com/consensys/gnark/issues/656))
  1057  - no commitments -> vanilla groth16
  1058  - prover with no commitment act like vanilla groth16
  1059  - reflect pedersen changes in bn254
  1060  - emulated pairing 2-by-2 fixed circuit for EVM
  1061  - verifier template ok
  1062  - prover template ok
  1063  - modification opening order kzg bn254
  1064  - plonk provingkey marshaling with muticommits
  1065  - introduce constraint blueprints. improve memory usage, enables custom gates and group of constraints ([#641](https://github.com/consensys/gnark/issues/641))
  1066  - sr1cs multicommits
  1067  - compilation side - plonk multicommits
  1068  - described zpnmo parameter + reuse zpnmo in compute_alpha_square_lagrange_0 (forgot to push it)
  1069  - use state instead of mload(0x40)
  1070  - bn254 plonk multicommit backend
  1071  - log-derivative vector lookups ([#620](https://github.com/consensys/gnark/issues/620))
  1072  - multi-commits in constraint system data structures
  1073  - add modular square root in field emulation ([#623](https://github.com/consensys/gnark/issues/623))
  1074  - plonkVk.WriteRawTo
  1075  - serialize minimal commitmentinfo with plonk vk
  1076  - use Brier-Joye unified add for evm ecadd
  1077  - experiments with solving
  1078  - development done for bn254. to test and generify
  1079  - "generic" top sort
  1080  - simple compilation test passes
  1081  - support more operations
  1082  - codegen
  1083  - yet more codegen
  1084  - add n to 1 MUX and MAP ([#475](https://github.com/consensys/gnark/issues/475))
  1085  - add EVM precompiles ([#488](https://github.com/consensys/gnark/issues/488))
  1086  - add PairingCheck function
  1087  - store api in pairing structs
  1088  - add simple key value storage
  1089  - embed key-value storage in R1CS and SCS
  1090  - embed key-value storage in test engine
  1091  - add gadget for enabling multiple commitments in-circuit ([#562](https://github.com/consensys/gnark/issues/562))
  1092  - isZero in field emulation ([#609](https://github.com/consensys/gnark/issues/609))
  1093  - range checks using log derivative, fixes [#581](https://github.com/consensys/gnark/issues/581) ([#583](https://github.com/consensys/gnark/issues/583))
  1094  - implement commit for test engine
  1095  - set default compression threshold ([#599](https://github.com/consensys/gnark/issues/599))
  1096  - add IsOnCurve to sw_bn254/g2
  1097  - add IsOnCurve to sw_emulated
  1098  - add bls12-381 to std/algebra/emulated
  1099  - blind commitment
  1100  - add a partition selector ([#486](https://github.com/consensys/gnark/issues/486))
  1101  - reintroduce hints for field emulation ([#547](https://github.com/consensys/gnark/issues/547))
  1102  - some bsb22 proving in plonk
  1103  - range check gadget ([#472](https://github.com/consensys/gnark/issues/472))
  1104  - plonk frontend filter common cases of duplicate constraints ([#539](https://github.com/consensys/gnark/issues/539))
  1105  - add calling hints to field emulation
  1106  - commitment verification - plonk bn254
  1107  - gnark/profile now filter frontend private method for clarity and return a tree as txt repr ([#538](https://github.com/consensys/gnark/issues/538))
  1108  - BN254 pairing ([#411](https://github.com/consensys/gnark/issues/411))
  1109  - compute table on init once
  1110  - add defer to the Compiler interface ([#483](https://github.com/consensys/gnark/issues/483))
  1111  - compilation, setup and commitment done; proof and verification next
  1112  - update gnark version to v0.8.0
  1113  - add equality assertion for GT elements
  1114  - add BN254 pairing using field emulation
  1115  - **fields_bn254:** add IsZero in extensions
  1116  - **fields_bn254:** add Select in extensions
  1117  - **fields_bn254:** add String helpers
  1118  - **pairing:** check points are on curve and twist
  1119  - **sw_bls12381:** add AssertIsOnG1 and AssertIsOnG2
  1120  - **sw_bls12381:** G1 and G2 membership without hints
  1121  - **sw_bn254:** add AssertIsOnG2
  1122  - **sw_bn254:** G2 membership without hints
  1123  - **sw_bn254:** endomorphism optims for G2 membership
  1124  - **sw_emulated:** AddSafe for input points equal or not
  1125  - **sw_emulated:** infinity as (0,0) edge-cases in UnifiedAdd
  1126  - **sw_emulated:** infinity as (0,0) edge-cases in ScalarMul
  1127  
  1128  ### Feat
  1129  - Export multicommit ([#789](https://github.com/consensys/gnark/issues/789))
  1130  
  1131  ### Fix
  1132  - use jacobain double for test
  1133  - fixed [#761](https://github.com/consensys/gnark/issues/761)
  1134  - fixed kzg G1 srs in template :/
  1135  - compute_kzg fixed calldata
  1136  - update develop version ([#776](https://github.com/consensys/gnark/issues/776))
  1137  - update circuits stats
  1138  - do not accumulate terms with zero coefficient for addition ([#763](https://github.com/consensys/gnark/issues/763))
  1139  - use AddUnified in ECRecover
  1140  - create full-length slice for gkr value ([#751](https://github.com/consensys/gnark/issues/751))
  1141  - removed deadcode
  1142  - loop counter corrected fixes [#755](https://github.com/consensys/gnark/issues/755)
  1143  - fixed pairing check (wait for 4-5 to check staticcall using dedicated function)
  1144  - range checks for quotient + linearised polynomials openigns
  1145  - plonk scs serialization issues ([#747](https://github.com/consensys/gnark/issues/747))
  1146  - compute_pi takes the proof only when commit is called
  1147  - Verify is public
  1148  - fixed visibilities, changed library to contract
  1149  - replace hints bn254
  1150  - emulated ToBits ([#731](https://github.com/consensys/gnark/issues/731))
  1151  - K -> Z
  1152  - nil -> empty slice
  1153  - the previous fix
  1154  - bn254 multicommit proving keys
  1155  - commitmentInfo serialization
  1156  - committed commitment folding bug
  1157  - groth16 tests pass
  1158  - bellman test vk
  1159  - make linter happy
  1160  - randomize fake commitments
  1161  - groth16 works. plonk fuzzer fails
  1162  - remove unnecessary import
  1163  - test double fixed pairing
  1164  - commitment to commitment works
  1165  - single commitments work again
  1166  - attempt at commitment hint input filtering
  1167  - two indep commitments work for bn254
  1168  - using loop counter in lambda
  1169  - single commits work for bn254
  1170  - no commitments case for bn254
  1171  - empty commitments vector
  1172  - no private committed bug
  1173  - groth16 commit verification error handling
  1174  - gorth16 commit compile bug
  1175  - re uploading solidity template
  1176  - removed solidity folder
  1177  - remove dead file
  1178  - removed non used code
  1179  - removed commented code
  1180  - fixes [#672](https://github.com/consensys/gnark/issues/672)
  1181  - fixed kzg serialisation on bn254
  1182  - init elements in arrays and slices if have init hook ([#695](https://github.com/consensys/gnark/issues/695))
  1183  - PI2 renaming in marshal
  1184  - failing vk serialization test
  1185  - newNamedHint bug
  1186  - one commit works
  1187  - claimed quotient
  1188  - no commit test passes
  1189  - prover no longer errors; unexpected quotient for 2-commit
  1190  - Proving key serialization
  1191  - proof serialization
  1192  - fix race condition when compiling circuits in parallel ([#676](https://github.com/consensys/gnark/issues/676))
  1193  - added missing cbor tags for BlueprintSparseR1CBool
  1194  - register commitment func with new name
  1195  - HasCommitment -> NbCommitments
  1196  - multi-commit unsupported error messages
  1197  - in case no commitment
  1198  - private -> public
  1199  - assert oddity of y coordinate from v instead of high bit ([#655](https://github.com/consensys/gnark/issues/655))
  1200  - companion to pedersen breakup
  1201  - field emulation subtract padding compute ([#603](https://github.com/consensys/gnark/issues/603))
  1202  - add (0,0) case to curve membership
  1203  - fixed double comments
  1204  - fixes [#768](https://github.com/consensys/gnark/issues/768)
  1205  - one omitted change
  1206  - finalExp when element is 1 in torus
  1207  - restore reference plonk circuit size
  1208  - don't set comm to 0; it might be inverted
  1209  - filter constants
  1210  - use frontend.Committer properly
  1211  - plonk.Commit race condition
  1212  - remove an ineffectual assign in E6
  1213  - update stats
  1214  - marshaling tests - plonk
  1215  - double blind commitment
  1216  - add pi2 to fs - bn254
  1217  - bsb22 in plonk with public vars
  1218  - match latest backend changes in bw6-761
  1219  - minor mistake in setup generification
  1220  - make linter happy
  1221  - disastrous typo
  1222  - subtraction overflow computation bug ([#579](https://github.com/consensys/gnark/issues/579))
  1223  - circuit-efficient Expt
  1224  - open qcp commitment
  1225  - qcp formats
  1226  - computing t(X) requires lagrange coset input
  1227  - handle nested Define signature in call stack for profile
  1228  - pass canonical version of pi2 to computeLinearizedPolynomial
  1229  - use mocked api.Commit also in Windows tests ([#560](https://github.com/consensys/gnark/issues/560))
  1230  - fix [#516](https://github.com/consensys/gnark/issues/516) compiler detects api.AssertIsDifferent(x,x) with better error ([#552](https://github.com/consensys/gnark/issues/552))
  1231  - do not pass limb width enforcement for consts in AssertIsEqual ([#550](https://github.com/consensys/gnark/issues/550))
  1232  - append solver options to prover options in tests
  1233  - fix profile example to not compare expected output with varying line numbers
  1234  - allow unreplaced BSB22 commitment hint in solver ([#507](https://github.com/consensys/gnark/issues/507))
  1235  - stable levelbuilder hint mapping ([#533](https://github.com/consensys/gnark/issues/533))
  1236  - initialize new variable if field emulation multiplication check ([#534](https://github.com/consensys/gnark/issues/534))
  1237  - handle stack traces with deferred function ([#521](https://github.com/consensys/gnark/issues/521))
  1238  - update path to algebra/native/twistededwards
  1239  - update path to algebra/native
  1240  - update path to algebra/native
  1241  - use sw_emulated instead of weierstrass
  1242  - remove pairing_bn254
  1243  - restrict constants in field emulation to width ([#518](https://github.com/consensys/gnark/issues/518))
  1244  - closes [#509](https://github.com/consensys/gnark/issues/509) api did not handle AssertIsLessOrEqual with constant as first param ([#511](https://github.com/consensys/gnark/issues/511))
  1245  - remove profiling
  1246  - used keyed struct fields, silence linter
  1247  - scs.MarkBoolean missing return w/ constant ([#491](https://github.com/consensys/gnark/issues/491))
  1248  - allocate new variable in engine.MulAcc ([#482](https://github.com/consensys/gnark/issues/482))
  1249  - update version ([#477](https://github.com/consensys/gnark/issues/477))
  1250  - remove printfs
  1251  - witness-related functions no longer return ptrs
  1252  - reflect gkr changes in gnark-crypto
  1253  - log correction
  1254  - avoid overlogging
  1255  - dumping error and solver test
  1256  - solving bug - bn254
  1257  - bn254 mem pool
  1258  - a small bug and some new benchmarks
  1259  - go mod tidy
  1260  - mod tidy
  1261  - no defineGkrHints for tinyfield and more
  1262  - no gkr for tinyfield
  1263  - minor stuff, some code generation
  1264  - small mimc test
  1265  - race condition
  1266  - propagating gkrInfo
  1267  - import cycle
  1268  - solver works. prover doesn't. possibly deeper gkr issue
  1269  - solving works on the simplest example
  1270  - inconsistencies re assignments alignment
  1271  - more `ToBigIntRegular` => `BigInt`
  1272  - **add-only scalarMul:** handle 0-scalar and (0,0) edge-cases
  1273  - **ecadd:** add y1+y2=0 edge case
  1274  - **sw_bn254:** fix size of 2-naf table of the seed
  1275  
  1276  ### Perf
  1277  - ScalarMulBase for sw_bls12377 on G2
  1278  - ELM03+Joye07 for emulated scalarMul
  1279  - special E12 squaring in the second ML iteration
  1280  - replace Add(Mul) by MulAdd
  1281  - async parallel plonk pr read ([#748](https://github.com/consensys/gnark/issues/748))
  1282  - add a generalized version of binary selection ([#636](https://github.com/consensys/gnark/issues/636))
  1283  - use ScalarMulAddOnly is ecrecover and ecmul precompiles
  1284  - use ScalarMulAddOnly is ecrecover and ecmul precompiles
  1285  - add frontend.WithCompressThreshold in compile test opts
  1286  - replace intSet by bitset
  1287  - use cpt in topo sort
  1288  - optimise one sub
  1289  - factorize MultiLin.Evaluate hot loop
  1290  - reflect new gc gkr opts and parallelize solving
  1291  - ScalarMulBase with pre-computed points + use in ecdsa
  1292  - use `api.Lookup2` for constructing 4 to 1 mux
  1293  - use `api.Select` for 2 to 1 mux
  1294  - ScalarMulBase for sw_bls12377
  1295  - optimize final exp (Fuentes et al.)
  1296  - save 1 Select at each iteration in the emulated scalar mul
  1297  - reduce mem allocs in scs frontend ([#654](https://github.com/consensys/gnark/issues/654))
  1298  - special E24 squaring in the second ML iteration
  1299  - ScalarMulBase for sw_bls24315 G1/G2 + KZG in-circuit
  1300  - plonk ccs serialization ([#557](https://github.com/consensys/gnark/issues/557))
  1301  - **bls381-pairing:** optimize Frobenius and FrobeniusSquare
  1302  - **bn254-pair:** MulByNonResidueInverse using hints
  1303  - **bn254-pair:** optimize fields ops + cleaning
  1304  - **bn254-pair:** optimize Halve using hints
  1305  - **bn254-pair:** optimize FrobeniusSquare computations
  1306  - **bn254-pair:** use hinted Div in tower instead of plain inv+mul
  1307  - **bn254-pairing:** isolate i=63 in MillerLoop to save a doubleStep
  1308  - **bn254-pairing:** test and optimize MultiMillerLoop
  1309  - **bn254-pairing:** some missed small optims
  1310  - **bn254-pairing:** Mul lines between them before mul by accumulator
  1311  - **ecdsa:** JoinScalarMulBase avoids 0 edge-cases
  1312  - **pairing-bn254:** optimize emulated pairing over BN254
  1313  - **pairing-bn254:** optimize Miller loop (last line out of loop)
  1314  - **pairing-bn254:** optimize doubleStep (mulByConst 3)
  1315  - **pairings:** switch to no edge-cases when single pairing
  1316  - **scalarMul:** saves computation in last two iterations
  1317  - **scalarMulBase:** lookup2 for the first 2 bits
  1318  - **sw_bn254:** use 2-NAF for fixed scalar Mul on G2
  1319  - **sw_bn254:** optim of fixed scalar Mul on G2
  1320  - **sw_bn254:** use addchain/doubleAndAdd for fixed scalar mul
  1321  
  1322  ### Perf
  1323  - Improve MultiLin.Eval number of constraints ([#788](https://github.com/consensys/gnark/issues/788))
  1324  
  1325  ### Refactor
  1326  - use select instead of lookup2
  1327  - renaming as per robot overlords
  1328  - inputs check are in a proper function
  1329  - use gnark-crypto gate registries
  1330  - apply suggested edits
  1331  - compactify commitment tests ([#728](https://github.com/consensys/gnark/issues/728))
  1332  - remove api from ScalarMulAddOnly arguments
  1333  - reflect commitmentInfo changes in plonk
  1334  - reflect changes in plonk prover
  1335  - bn254 groth16 commitmentinfo
  1336  - separate groth16 commitmentInfo experiments
  1337  - do not pass api in pairing
  1338  - FindInSlice use
  1339  - make native precomputed lines private
  1340  - remove profiler code
  1341  - use c.CommitmentWireIndexes in Plonk backend
  1342  - eliminate GetNbCommitments
  1343  - groth16 and plonk tests to hollow circuits themselves
  1344  - test utils to another file
  1345  - emulation parameters ([#696](https://github.com/consensys/gnark/issues/696))
  1346  - get the input length for pair lengths
  1347  - end-to-end commitment tests
  1348  - rename PI2
  1349  - reuse dummy one
  1350  - remove HintIds struct
  1351  - NewNamedHint not taking hint function input
  1352  - r1cs NewNamedHint not taking hint func
  1353  - commitmentInfo array for groth16 bn254
  1354  - commitmentInfo array in plonk setup
  1355  - commitmentinfo array in plonk prover
  1356  - get rid of CommittedAndCommitment
  1357  - limit commitment info in groth16 ver
  1358  - in method work with pointers instead of values
  1359  - init b of twist once
  1360  - use assertIsOnCurve from sw_emulated
  1361  - init point at return
  1362  - g2 gadget as pointer
  1363  - init emulated constants once
  1364  - make double, add, triple and doubleAndAdd private
  1365  - remove DivSpecial
  1366  - do not include committed wires indexes in plonk vk
  1367  - more adapting to separated kzg srs
  1368  - use separated kzg pk, vk
  1369  - separate final exp into safe and unsafe
  1370  - gkrAPI is no longer a frontend.API
  1371  - rename ScalarMulAddOnly to ScalarMul and ditch old
  1372  - remove duplicate test utils
  1373  - do not pass api in towers
  1374  - embed api and init emulation in tower
  1375  - same bsb22 placeholder for groth16 and plonk
  1376  - make E6 double public
  1377  - remove dead code (Frobenius and GS cyclosq)
  1378  - remove profiler in test
  1379  - remove profiler in test
  1380  - make lineEvaluation private
  1381  - make all hints private
  1382  - unify calling interfaces
  1383  - made some util func private
  1384  - expose all typed backends in gnark/backend (moved from internal/) ([#561](https://github.com/consensys/gnark/issues/561))
  1385  - minor code cleaning
  1386  - move utils in mpcsetup; limit api surface
  1387  - setup -> mpcsetup
  1388  - flatten mpc structure, idomify APIs
  1389  - expose all typed backends in gnark/backend (moved from internal/)
  1390  - compute lagrange basis from scratch
  1391  - dont need nativemod in emulated hint unwrapper
  1392  - solving and compilation in accordance with commitmentInfo struct changes
  1393  - SparceCS.CommitmentConstraint instead of C; more "honest" constraints
  1394  - take api.Commit to api.go
  1395  - algebra into native (2-chain) and emulated
  1396  - use generator from gnark-crypto to init points
  1397  - make internal methods private
  1398  - use generator from gnark-crypto to init points
  1399  - rename methods for getting tables
  1400  - lazy compute the base tables on init
  1401  - plonk uses constraint/ and couple of fixes closes [#467](https://github.com/consensys/gnark/issues/467) ([#493](https://github.com/consensys/gnark/issues/493))
  1402  - latest gnark-crypto, use FFT signature change with opts ([#485](https://github.com/consensys/gnark/issues/485))
  1403  - make methods private
  1404  - remove Commit from Compiler, make optional interface
  1405  - some cleanup - bn254 only
  1406  - hint-lite, has import cycle
  1407  - use mostly no-ptr data. better information silos
  1408  - improved, simplified solver; compiler to match
  1409  - all in one package
  1410  - MSM takes Montgomery only - Plonk
  1411  - groth16 backend tests pass
  1412  - no non-mont on bls12-377
  1413  - **pairing-bn254:** remove dead code (fields_e2)
  1414  - **pairing-bn254:** remove dead code (E2 Halve)
  1415  - **pairing-bn254:** remove dead code
  1416  
  1417  ### Refactor
  1418  - std/algebra ([#526](https://github.com/consensys/gnark/issues/526))
  1419  
  1420  ### Remove
  1421  - unused func
  1422  - some unused code
  1423  
  1424  ### Revert
  1425  - special case for empty slice
  1426  - forced conversion
  1427  - remove extra testing funcs
  1428  - unexport cs.system
  1429  - unnecessary stylistic change
  1430  - unnecessary stylistic changes
  1431  - bn254/gkr changes
  1432  
  1433  ### Style
  1434  - remove prints
  1435  - remove comment
  1436  - subscript group index
  1437  - remove commented import
  1438  - unused input -> _
  1439  - correct some comments
  1440  - fewer vars
  1441  - remove unnecessary stylistic changes
  1442  - academic style reference for documentation
  1443  - rename addStepLineOnly to lineCompute
  1444  - rename variables
  1445  - apply suggested edits
  1446  - public-value-defining constraints as -x + c = 0 for consistency
  1447  - **fields_bn254:** clean hints
  1448  - **pairing-bn254:** add comments
  1449  - **pairing-bn254:** add comments
  1450  
  1451  ### Test
  1452  - product of pairings on bls12-381
  1453  - print some linpoly arguments
  1454  - more for bsb22 plonk
  1455  - add failing test for round trip pk serialization
  1456  - handle all cases in a single parametric circuit
  1457  - proof is correct. verification failing
  1458  - print solution
  1459  - public values
  1460  - don't parallelize
  1461  - print commitment
  1462  - pi is computed correctly
  1463  - failing on parallel
  1464  - JointScalarMulBase
  1465  - use assertless sampling
  1466  - use deep.Equal in Plonk roundtrip
  1467  - fails. pointer issue
  1468  - add bn254 and bl12381 test of AssertIsOnCurve
  1469  - test bls12-381 in sw_emulated + comments
  1470  - add safe final exp tests
  1471  - test also unsafe final exp
  1472  - multi commits in scs
  1473  - added failing test for groth16 pk serialization round trip
  1474  - added missing integration test for round trip serialization
  1475  - remove profiling test
  1476  - remove blindings and hashes, simplest no-commitment test that fails
  1477  - added reference benchmark
  1478  - ensure phase2 serialization is tested
  1479  - solver error found
  1480  - with dependency. err: inputs are modified
  1481  - add emulated Fp12 tests
  1482  - add emulated Fp6 tests
  1483  - add emulated Fp2 tests
  1484  - basic permutation tests passing
  1485  - only the gkr solver
  1486  - more instances
  1487  - with dependency
  1488  - "doubling" circuit passes
  1489  - end-to-end: can't use test engine (for now)
  1490  - **emulated:** ScalarMul with random scalars
  1491  - **fields_bn254:** add remaing tests
  1492  - **fields_bn254:** clean tests
  1493  - **sw_emulated:** infinity as (0,0) edge-cases in ScalarMul
  1494  
  1495  ### Pull Requests
  1496  - Merge pull request [#814](https://github.com/consensys/gnark/issues/814) from Consensys/develop
  1497  - Merge pull request [#804](https://github.com/consensys/gnark/issues/804) from Consensys/feat/revert_staticcall
  1498  - Merge pull request [#796](https://github.com/consensys/gnark/issues/796) from Consensys/feat/calldata_pi_proof
  1499  - Merge pull request [#795](https://github.com/consensys/gnark/issues/795) from Consensys/feat/clean_compute_pi
  1500  - Merge pull request [#794](https://github.com/consensys/gnark/issues/794) from Consensys/feat/clean_hash_fr
  1501  - Merge pull request [#792](https://github.com/consensys/gnark/issues/792) from Consensys/perf/solidity-cached-array-index
  1502  - Merge pull request [#783](https://github.com/consensys/gnark/issues/783) from Consensys/perf/emulated-scalarMul
  1503  - Merge pull request [#775](https://github.com/consensys/gnark/issues/775) from Consensys/fix/plonk_audit_4-23
  1504  - Merge pull request [#772](https://github.com/consensys/gnark/issues/772) from Consensys/perf/pairing-add0
  1505  - Merge pull request [#760](https://github.com/consensys/gnark/issues/760) from Consensys/perf/emulated-scalarMul
  1506  - Merge pull request [#769](https://github.com/consensys/gnark/issues/769) from Consensys/fix/plonk_contract_i_768
  1507  - Merge pull request [#762](https://github.com/consensys/gnark/issues/762) from Consensys/fix/i_761
  1508  - Merge pull request [#758](https://github.com/consensys/gnark/issues/758) from Consensys/fix/plonk_audit_4-15
  1509  - Merge pull request [#754](https://github.com/consensys/gnark/issues/754) from Consensys/fix/plonk_audit_4-5
  1510  - Merge pull request [#756](https://github.com/consensys/gnark/issues/756) from Consensys/fix/plonk_audit_4-13
  1511  - Merge pull request [#742](https://github.com/consensys/gnark/issues/742) from Consensys/fix/plonk_audit_4-4
  1512  - Merge pull request [#744](https://github.com/consensys/gnark/issues/744) from Consensys/fix/plonk_audit_4-8
  1513  - Merge pull request [#714](https://github.com/consensys/gnark/issues/714) from Consensys/perf/emulated-pairing
  1514  - Merge pull request [#698](https://github.com/consensys/gnark/issues/698) from Consensys/evm/ecpair
  1515  - Merge pull request [#726](https://github.com/consensys/gnark/issues/726) from Consensys/emulated/scalarMul
  1516  - Merge pull request [#708](https://github.com/consensys/gnark/issues/708) from Consensys/feat/fixed-pairing
  1517  - Merge pull request [#739](https://github.com/consensys/gnark/issues/739) from Consensys/fix/plonk_audit_4-9
  1518  - Merge pull request [#736](https://github.com/consensys/gnark/issues/736) from Consensys/fix/plonk_audit_4-11
  1519  - Merge pull request [#737](https://github.com/consensys/gnark/issues/737) from Consensys/feat/gkr-custom-gates
  1520  - Merge pull request [#443](https://github.com/consensys/gnark/issues/443) from Consensys/feat/gkr-api
  1521  - Merge pull request [#733](https://github.com/consensys/gnark/issues/733) from Consensys/refactor/gkr-notfrontend-api
  1522  - Merge pull request [#723](https://github.com/consensys/gnark/issues/723) from ConsenSys/fix/serialization
  1523  - Merge pull request [#702](https://github.com/consensys/gnark/issues/702) from ConsenSys/feat/g16-multicommits
  1524  - Merge pull request [#712](https://github.com/consensys/gnark/issues/712) from ConsenSys/fix/plonk-commit0
  1525  - Merge pull request [#707](https://github.com/consensys/gnark/issues/707) from ConsenSys/perf/scalarMul-2chain
  1526  - Merge pull request [#706](https://github.com/consensys/gnark/issues/706) from ConsenSys/perf/scalarMul-2chain
  1527  - Merge pull request [#694](https://github.com/consensys/gnark/issues/694) from ConsenSys/feat/change_opening_order_kzg
  1528  - Merge pull request [#701](https://github.com/consensys/gnark/issues/701) from ConsenSys/fix/672
  1529  - Merge pull request [#668](https://github.com/consensys/gnark/issues/668) from ConsenSys/feat/plonk-multicommit
  1530  - Merge pull request [#666](https://github.com/consensys/gnark/issues/666) from ConsenSys/feat/hint-naming-options
  1531  - Merge pull request [#661](https://github.com/consensys/gnark/issues/661) from ConsenSys/perf/ecdsa
  1532  - Merge pull request [#629](https://github.com/consensys/gnark/issues/629) from ConsenSys/feat/emulated/subgroup-check
  1533  - Merge pull request [#658](https://github.com/consensys/gnark/issues/658) from ConsenSys/perf/kzg-verify
  1534  - Merge pull request [#632](https://github.com/consensys/gnark/issues/632) from ConsenSys/refactor/kzg-srs-breakup-companion
  1535  - Merge pull request [#633](https://github.com/consensys/gnark/issues/633) from ConsenSys/plonk-commitment-info
  1536  - Merge pull request [#631](https://github.com/consensys/gnark/issues/631) from ConsenSys/feat/AddSafe
  1537  - Merge pull request [#625](https://github.com/consensys/gnark/issues/625) from aybehrouz/perf/mux
  1538  - Merge pull request [#613](https://github.com/consensys/gnark/issues/613) from ConsenSys/fix-605
  1539  - Merge pull request [#586](https://github.com/consensys/gnark/issues/586) from ConsenSys/406-bsb22-commitments-plonk
  1540  - Merge pull request [#591](https://github.com/consensys/gnark/issues/591) from ConsenSys/feat/bls12-381-pairing
  1541  - Merge pull request [#594](https://github.com/consensys/gnark/issues/594) from ConsenSys/perf/bn254-FinalExp
  1542  - Merge pull request [#566](https://github.com/consensys/gnark/issues/566) from ConsenSys/perf/bn254-pairing
  1543  - Merge pull request [#563](https://github.com/consensys/gnark/issues/563) from ConsenSys/stage/bnb/groth16setup
  1544  - Merge pull request [#519](https://github.com/consensys/gnark/issues/519) from ConsenSys/refactor/remove-profiling
  1545  - Merge pull request [#514](https://github.com/consensys/gnark/issues/514) from ConsenSys/refactor/weierstrass-scalarmulbase
  1546  - Merge pull request [#506](https://github.com/consensys/gnark/issues/506) from ConsenSys/perf/kzg-in-circuit
  1547  - Merge pull request [#497](https://github.com/consensys/gnark/issues/497) from ConsenSys/perf/ecdsa
  1548  - Merge pull request [#503](https://github.com/consensys/gnark/issues/503) from ConsenSys/docs/emulated-select
  1549  - Merge pull request [#481](https://github.com/consensys/gnark/issues/481) from ConsenSys/refactor/commit-interface
  1550  - Merge pull request [#480](https://github.com/consensys/gnark/issues/480) from ConsenSys/feat/kvstore
  1551  
  1552  
  1553  <a name="v0.8.1"></a>
  1554  ## [v0.8.1] - 2023-07-11
  1555  ### Chore
  1556  - update CHANGELOG
  1557  - update version
  1558  - update gnark-crypto dependency
  1559  
  1560  ### Pull Requests
  1561  - Merge pull request [#771](https://github.com/consensys/gnark/issues/771) from Consensys/release/v0.8.1
  1562  
  1563  
  1564  <a name="v0.8.0"></a>
  1565  ## [v0.8.0] - 2023-02-14
  1566  ### Build
  1567  - update to latest gnark-crypto
  1568  - update to latest gnark-crypto
  1569  - make linter happy remove deprecated call
  1570  - updated to feat/commitment branch on gnark-crypto ([#408](https://github.com/consensys/gnark/issues/408))
  1571  - test only on go 1.18 for now
  1572  - re-ran go generate
  1573  - update CI ([#318](https://github.com/consensys/gnark/issues/318))
  1574  
  1575  ### Ci
  1576  - fix slack integration + adds golanglint-ci ([#316](https://github.com/consensys/gnark/issues/316))
  1577  
  1578  ### Clean
  1579  - remove deadcode and kill `api.Tag` and `api.Counter` ([#353](https://github.com/consensys/gnark/issues/353))
  1580  
  1581  ### Docs
  1582  - updated README.md
  1583  - remove logo references
  1584  - update doc link
  1585  - describe limb regrouping for equality
  1586  - add method documentation
  1587  - add explainer
  1588  - comments
  1589  - add method docs
  1590  
  1591  ### Feat
  1592  - added serialization header to CS and debug info to all constraints with -tags=debug ([#347](https://github.com/consensys/gnark/issues/347))
  1593  - checkpoint 3, computations are correct, some commitments are failing
  1594  - add cs.GetConstraint with examples, and pretty printer helpers ([#452](https://github.com/consensys/gnark/issues/452))
  1595  - cleaned plonk constraints evaluation
  1596  - code gen + cleaned code
  1597  - update gnark version to v0.8.0
  1598  - plonk constraints captured using Expressions
  1599  - code gen
  1600  - Evalute is used instead of manually evaluatin
  1601  - removed printings
  1602  - fixed verifier
  1603  - add automatic non-native witness element limb constraining ([#446](https://github.com/consensys/gnark/issues/446))
  1604  - cleaned code
  1605  - addition of missing commitments and openings in vk and pk
  1606  - checkpoint 2
  1607  - checkpoint refactor
  1608  - add ECDSA signature verification ([#372](https://github.com/consensys/gnark/issues/372))
  1609  - adds `api.MAC(..)` ([#427](https://github.com/consensys/gnark/issues/427))
  1610  - keccak-f permutation function ([#401](https://github.com/consensys/gnark/issues/401))
  1611  - add debug.SymbolTable into constraint system for storage efficiency of debug info ([#421](https://github.com/consensys/gnark/issues/421))
  1612  - split field in field emulation into Field and FieldAPI ([#395](https://github.com/consensys/gnark/issues/395))
  1613  - testing options and clearer errors
  1614  - add linear expression packing for R1CS ([#418](https://github.com/consensys/gnark/issues/418))
  1615  - merge develop
  1616  - add inherit circuit tag ([#387](https://github.com/consensys/gnark/issues/387))
  1617  - add gnark tags
  1618  - gkr verifier is NOT a witness object
  1619  - some sumcheck experiments
  1620  - poly functions and some tests
  1621  - gkr verifier
  1622  - some sumcheck experiments
  1623  - replaced full bit decomposition by rshift in emulated/assertIsEqual ([#354](https://github.com/consensys/gnark/issues/354))
  1624  - cleaned code
  1625  - add test.NoFuzzing() testing option ([#296](https://github.com/consensys/gnark/issues/296))
  1626  - map in snark
  1627  - add fake API for emulated arithmetics
  1628  - split add/mul/sub into cond and op
  1629  - addition of dynamic test for kzg bls24315
  1630  - addition of dynamic test kzg bls12377
  1631  - size of fiat shamir data is harcoded
  1632  - count fields in first schema parsing
  1633  - add VariableCount method to builder
  1634  - implement AssertIsLessEqualThan
  1635  - binary composition
  1636  - add Params.isEqual
  1637  - implement Lookup2 and select
  1638  - add panicking constant init
  1639  - added verifier (forgot to commit it)
  1640  - merge develop
  1641  - addition of proximity tests
  1642  - uncomment integration tests
  1643  - only mul is tested for plonk fri
  1644  - addition of plonkfri in test package
  1645  - code gen
  1646  - addition of templates
  1647  - Fiat Shamir done
  1648  - re activated blinding
  1649  - removed dead code + old commented code
  1650  - removed mock commitment scheme
  1651  - verification of Z, Zshifted
  1652  - addition of proofs for s1,s2,s3 and ccircuit coefficients
  1653  - **frontend:** add builder wrapper compile opt
  1654  - **hint:** allow registering multiple hints
  1655  - **plonk:** addition of skeleton prover with non homomorphic PCS
  1656  - **std:** KZG verifier gadget bls24-315 (with static witness)
  1657  
  1658  ### Fix
  1659  - mark and output boolean ([#459](https://github.com/consensys/gnark/issues/459))
  1660  - mimc pow7
  1661  - prover-verifier work with blinding
  1662  - handle recursive hints in level builder ([#441](https://github.com/consensys/gnark/issues/441))
  1663  - verifier working \o/
  1664  - pack full limbs for quotient ([#439](https://github.com/consensys/gnark/issues/439))
  1665  - add shortcut for const input in MulConst ([#438](https://github.com/consensys/gnark/issues/438))
  1666  - closes [#434](https://github.com/consensys/gnark/issues/434) returns a copy of the input slice when filtering groth16+commitment ([#435](https://github.com/consensys/gnark/issues/435))
  1667  - fix previous commit
  1668  - closes [#400](https://github.com/consensys/gnark/issues/400) path trimming correct, example with unix path separators
  1669  - tests expected to fail
  1670  - engine.Println to take strings ([#419](https://github.com/consensys/gnark/issues/419))
  1671  - verifier input building
  1672  - idiotic load circuit bug
  1673  - update test vector proofs to proper size, some bugs
  1674  - fix [#400](https://github.com/consensys/gnark/issues/400) with trim path handling in profile report ([#409](https://github.com/consensys/gnark/issues/409))
  1675  - fixed Lagrange polynomials construction ([#389](https://github.com/consensys/gnark/issues/389))
  1676  - staticcheck
  1677  - multi-fan-out input bug
  1678  - update test vectors, hash finalevalproofs
  1679  - less elegant "hollow", but it works
  1680  - some problems in sumcheck and gkr
  1681  - TestTranscript works
  1682  - Xor(var, constant) in scs corrected
  1683  - simple sumcheck test passes
  1684  - IsZero throws panic on ([#367](https://github.com/consensys/gnark/issues/367))
  1685  - fixes [#359](https://github.com/consensys/gnark/issues/359) missing fields in plonk serialized format ([#364](https://github.com/consensys/gnark/issues/364))
  1686  - Sumcheck verifier usable as circuit
  1687  - InterpolateOnRange works even when it doesn't really have to "inerpolate"
  1688  - extra nosec G404 in test file
  1689  - minor typo
  1690  - misspelled ("decsribes" ->  "describes") ([#339](https://github.com/consensys/gnark/issues/339))
  1691  - remove leq overwrite
  1692  - reduce element when init from const
  1693  - fixed comments
  1694  - kzg verifier test
  1695  - rebase on develop
  1696  - reduce div integration circuit
  1697  - remove broken equality fast-path
  1698  - remove subtraction padding optimisation
  1699  - use BaseField() to get modulus
  1700  - use scalar field bitlength directly
  1701  - change hint definitions
  1702  - reduce given argument not inline
  1703  - ToBits return nb of bits
  1704  - ToBits edge case for overflow=0
  1705  - consider carries in bit decomposition
  1706  - return element
  1707  - add/set use argument nb of limbs
  1708  - set overflow after reduce
  1709  - remove unused method
  1710  - more precise padding computation
  1711  - make conversion functions private
  1712  - remove debug calls
  1713  - multiplication top limb width
  1714  - remove second high limb exception in sub padding
  1715  - added DecomposeScalarG2 to std.RegisterHints
  1716  - enfore width after inverse and div
  1717  - remove api from constant init
  1718  - ignore plonk_fri in internal/stats for now
  1719  - remove unused error return
  1720  - check unchecked error
  1721  - copy instead of loop
  1722  - fixed position of the shifted opening
  1723  - fixed size Iop (error due to the blinding)
  1724  - fixed opening Merkle path
  1725  - fixed vanilla plonk fri
  1726  - removed unused debug function
  1727  - **emulated:** enforce widths of packed limbs ([#368](https://github.com/consensys/gnark/issues/368))
  1728  - **nonnative:** off by one error
  1729  - **plonk:** fixed generic verifier
  1730  
  1731  ### Fix
  1732  - minor typo ([#360](https://github.com/consensys/gnark/issues/360))
  1733  
  1734  ### Perf
  1735  - more precomputation in plonk/iop ([#471](https://github.com/consensys/gnark/issues/471))
  1736  - mimc on bls12-377/fr uses x^17 as a permutation
  1737  - api.IsZero generate less constraints ([#356](https://github.com/consensys/gnark/issues/356))
  1738  - minor improvments to big.Int test engine ([#344](https://github.com/consensys/gnark/issues/344))
  1739  - allocate less in test engine
  1740  - remove width enforcement in Reduce()
  1741  - lazy reduction
  1742  - constrain main bits in equality diff to be only zeros
  1743  - optimize equality check
  1744  
  1745  ### Refactor
  1746  - update to latest gnark crypto
  1747  - keeping up
  1748  - gnark-crypto iop 1
  1749  - clean up witness package, introduces clean `witness.Witness` interface ([#450](https://github.com/consensys/gnark/issues/450))
  1750  - emulated clean up fixes [#448](https://github.com/consensys/gnark/issues/448) ([#449](https://github.com/consensys/gnark/issues/449))
  1751  - reflect gnark-crypto gkr changes, debug pending
  1752  - add constraint package and improve memory management in frontend ([#412](https://github.com/consensys/gnark/issues/412))
  1753  - use polynomial package
  1754  - std/math/nonnative -> std/math/emulated ([#345](https://github.com/consensys/gnark/issues/345))
  1755  - remove in-method reductions
  1756  - use field in schema leaf handler
  1757  - Compile(ecc.ID) -> Compile(field *big.Int) ([#328](https://github.com/consensys/gnark/issues/328))
  1758  - VerifyFri -> Verify
  1759  
  1760  ### Refactor
  1761  - remove geth dependency ([#440](https://github.com/consensys/gnark/issues/440))
  1762  
  1763  ### Style
  1764  - clean up unused functions
  1765  - remove questions
  1766  - Multilin -> MultiLin
  1767  - Multilin -> MultiLin
  1768  - comment about scalar fields of in-circuit KZG
  1769  - moved kzg in circuit in commitment/ folder
  1770  - removed dead code
  1771  - removed dead comments
  1772  - factored code in integration_test
  1773  - remove dead code
  1774  - remove irrelevant TODOs
  1775  - typos
  1776  - rename n to r
  1777  - inline test struct init
  1778  - cleanup test comments
  1779  - change field to params in tests
  1780  - test name update
  1781  - remove unused documentation file
  1782  - removed dead debug printings
  1783  - uncomment verify.go in generic plonk
  1784  - removed printing functions
  1785  
  1786  ### Test
  1787  - add four-instance test case
  1788  - all pass except "two_input_single_identity_gate_two_instances"
  1789  - trying to feed proof as circuit input, reflect errors
  1790  - routine developed for gkr
  1791  - Transcript fails
  1792  - doubleMap works
  1793  - singleMap works
  1794  - fix incorrect proof
  1795  - circuit and witness cannot be the same object
  1796  - counter start from 2
  1797  - all parts of witness get unconstrained error
  1798  - sumcheck in circuit, getting errors
  1799  - pass
  1800  - sumcheck in circuit, getting errors
  1801  - add Goldilocks tests
  1802  - add fake API tests
  1803  - bench kzg verifier with plonk
  1804  - add test/solver_test.go ([#329](https://github.com/consensys/gnark/issues/329))
  1805  - binary composition test
  1806  - implement lookup2 test
  1807  - implement constant test
  1808  - fewer test cases
  1809  - implement large computation circuit
  1810  - implement select test
  1811  
  1812  ### Pull Requests
  1813  - Merge pull request [#469](https://github.com/consensys/gnark/issues/469) from ConsenSys/fix/mimc-pow7
  1814  - Merge pull request [#451](https://github.com/consensys/gnark/issues/451) from ConsenSys/feat/iop_refactor
  1815  - Merge pull request [#455](https://github.com/consensys/gnark/issues/455) from ConsenSys/develop
  1816  - Merge pull request [#453](https://github.com/consensys/gnark/issues/453) from ConsenSys/mimx/nb-rounds-bls12377
  1817  - Merge pull request [#393](https://github.com/consensys/gnark/issues/393) from ConsenSys/feat/gkr
  1818  - Merge pull request [#361](https://github.com/consensys/gnark/issues/361) from ConsenSys/feat/polynomial
  1819  - Merge pull request [#363](https://github.com/consensys/gnark/issues/363) from ConsenSys/fix/lde-0div
  1820  - Merge pull request [#362](https://github.com/consensys/gnark/issues/362) from ConsenSys/fix/mathrand
  1821  - Merge pull request [#250](https://github.com/consensys/gnark/issues/250) from ConsenSys/feat/plonk_generic
  1822  - Merge pull request [#325](https://github.com/consensys/gnark/issues/325) from ConsenSys/feat/emulated-api
  1823  - Merge pull request [#331](https://github.com/consensys/gnark/issues/331) from ConsenSys/perf/test-engine
  1824  - Merge pull request [#332](https://github.com/consensys/gnark/issues/332) from ConsenSys/refactor/schema-parsing
  1825  - Merge pull request [#334](https://github.com/consensys/gnark/issues/334) from ConsenSys/fix/nonnative-offbyone
  1826  - Merge pull request [#320](https://github.com/consensys/gnark/issues/320) from ConsenSys/perf/nonnative
  1827  - Merge pull request [#307](https://github.com/consensys/gnark/issues/307) from ConsenSys/feat/std/kzg-verifier
  1828  - Merge pull request [#302](https://github.com/consensys/gnark/issues/302) from ConsenSys/feat/nonnative-ff
  1829  
  1830  
  1831  <a name="v0.7.1"></a>
  1832  ## [v0.7.1] - 2022-04-14
  1833  ### Build
  1834  - fix gosec warnings
  1835  - updated to gnark-crypto v0.7.0
  1836  
  1837  ### Ci
  1838  - updated github actions
  1839  - test against go1.17 and go1.18 ([#288](https://github.com/consensys/gnark/issues/288))
  1840  
  1841  ### Clean
  1842  - std/groth16 uses same notation as out-of-circuit groth16 ([#304](https://github.com/consensys/gnark/issues/304))
  1843  - remove PairingContext and Extension objects from api calls in std/.../pairing ([#286](https://github.com/consensys/gnark/issues/286))
  1844  
  1845  ### Docs
  1846  - added security policy, gnark-announce and twitter link
  1847  - updated DOI
  1848  - updated README.md with same warning as in docs
  1849  - added Deprecated comments in front of APIs moved to Compiler interface
  1850  - clean up hint interface comment
  1851  - updated DOI
  1852  
  1853  ### Feat
  1854  - implement PR suggestions in std/math/bits
  1855  - disable logger in tests by default, unless debug tag present
  1856  - adds std/math/bits/ToNAF
  1857  - added VerifyingKey.Assign methods in std/groth16 ([#306](https://github.com/consensys/gnark/issues/306))
  1858  - add gnark/logger
  1859  - remove offset shifts in plonk compile
  1860  - remove post-compile offset id in R1CS builder
  1861  - added internal/stats package
  1862  - hint.NbOuputs should not be used at solve time, only at compile time
  1863  - added ivokub suggestion on logging duration values
  1864  - adds gnark logger. closes [#202](https://github.com/consensys/gnark/issues/202)
  1865  - added ToTernary closes [#269](https://github.com/consensys/gnark/issues/269)
  1866  - moved api.FromBinary to std/math/bits
  1867  - add ToBinary in std/math/bits
  1868  - added std.GetHints for convenience. fixes [#264](https://github.com/consensys/gnark/issues/264). error message when hint is missing now has hint name
  1869  - added NBits hint
  1870  - make nboutputs of a hint explicit at compile time
  1871  - **std:** added AssertIsTrit
  1872  
  1873  ### Fix
  1874  - move init() behind sync.Once. remove verbose option in stats binary
  1875  - fix previous commit
  1876  - err instead of panic when recursively solving hints
  1877  - add whitespace between vars in test.Println
  1878  - closes [#293](https://github.com/consensys/gnark/issues/293) and enables recursive hints solving
  1879  - replace stats snippet signature with newVariable() instead of fixed variable
  1880  - restored logger format
  1881  - re generated stats
  1882  - fixes [#266](https://github.com/consensys/gnark/issues/266) by adding constant path in Lookup2 and Select
  1883  - incorrect handling of nbBits == 1 in api.ToBinary
  1884  - gosec errors
  1885  - uncomment fuzz part of test
  1886  - std.GetHints() return bits.NNAF
  1887  - **stats:** fix pairing stats. added run flag for stats binary to filter with regexp
  1888  
  1889  ### Perf
  1890  - restored frontend.WithCapacity option...
  1891  - **plonk:** IsConstant -> ConstantValue
  1892  - **sw:** no need for Lookup2 in constScalarMul
  1893  - **tEd:** Add -1C
  1894  
  1895  ### Refactor
  1896  - delete dead code (TripleMillerLoop)
  1897  - std/pairing have more consistent apis
  1898  - std/pairing bls12377 api more coherent
  1899  - remove StaticHint wrapper, log duplicate hints ([#289](https://github.com/consensys/gnark/issues/289))
  1900  - backend.WithOutput -> backend.WithCircuitLogger
  1901  - remove all internal circuits from stats, keep important snippets only
  1902  - move circuit_stats_test.go into internal/stats
  1903  - move NBits hint to math/bits
  1904  - move ntrits hint to std/math/bits
  1905  - make api.ToBinary point to math/bits/ToBinary
  1906  - revert Builder -> Compiler internal name change
  1907  - compiler -> r1cs and scs internally
  1908  - start moving api.ToBinary to std/math/bits/
  1909  - compiled.Variable -> compiled.LinearExpression
  1910  - factorize coeff table initialization
  1911  - frontend/cs subpackages to match new interfaces
  1912  - split compiler, api and builder interface into interfaces
  1913  - remove IsBoolean from R1CS variables
  1914  - preparing frontend.Compiler interface
  1915  - frontend.Compile now takes a builder instead of backendID as parameter
  1916  - moved internal/compiled to frontend/compiled
  1917  - remove nb inputs from hint declaration
  1918  
  1919  ### Style
  1920  - code cleaning in std/pairing
  1921  - code cleaning
  1922  - added clearer error message for groth16 verifier missing init in circuit
  1923  - remove dead code
  1924  - remove duplicate import in template
  1925  - code cleaning
  1926  - remove dead code
  1927  - code cleaning
  1928  
  1929  ### Test
  1930  - add failing test for [#293](https://github.com/consensys/gnark/issues/293)
  1931  
  1932  ### Pull Requests
  1933  - Merge pull request [#298](https://github.com/consensys/gnark/issues/298) from ConsenSys/fix/hint-panic
  1934  - Merge pull request [#295](https://github.com/consensys/gnark/issues/295) from ConsenSys/fix/test-println
  1935  - Merge pull request [#294](https://github.com/consensys/gnark/issues/294) from ConsenSys/fix/recursivehhints
  1936  - Merge pull request [#291](https://github.com/consensys/gnark/issues/291) from ConsenSys/refactor/std/pairing
  1937  - Merge pull request [#281](https://github.com/consensys/gnark/issues/281) from ConsenSys/feat/logger
  1938  - Merge pull request [#280](https://github.com/consensys/gnark/issues/280) from ConsenSys/simplify-r1cs-compile
  1939  - Merge pull request [#279](https://github.com/consensys/gnark/issues/279) from ConsenSys/feat/statistics
  1940  - Merge pull request [#276](https://github.com/consensys/gnark/issues/276) from ConsenSys/feat-math-bits
  1941  - Merge pull request [#278](https://github.com/consensys/gnark/issues/278) from ConsenSys/perf-constant-lookup2
  1942  - Merge pull request [#272](https://github.com/consensys/gnark/issues/272) from ConsenSys/refactor-hint
  1943  - Merge pull request [#275](https://github.com/consensys/gnark/issues/275) from ConsenSys/refactor-compiler-builder
  1944  - Merge pull request [#271](https://github.com/consensys/gnark/issues/271) from ConsenSys/refactor-compiled
  1945  - Merge pull request [#267](https://github.com/consensys/gnark/issues/267) from ConsenSys/perf/tEd-add
  1946  - Merge pull request [#265](https://github.com/consensys/gnark/issues/265) from ConsenSys/perf/SW-constScalarMul
  1947  
  1948  
  1949  <a name="v0.6.5"></a>
  1950  ## [v0.6.5] - 2022-04-13
  1951  ### Fix
  1952  - **plonk:** security vuln in fiat-shamir inputs
  1953  
  1954  
  1955  <a name="v0.7.0"></a>
  1956  ## [v0.7.0] - 2022-03-25
  1957  ### Build
  1958  - fix gosec warnings
  1959  - updated to gnark-crypto v0.7.0
  1960  
  1961  ### Ci
  1962  - updated github actions
  1963  - test against go1.17 and go1.18 ([#288](https://github.com/consensys/gnark/issues/288))
  1964  
  1965  ### Clean
  1966  - remove PairingContext and Extension objects from api calls in std/.../pairing ([#286](https://github.com/consensys/gnark/issues/286))
  1967  
  1968  ### Docs
  1969  - updated README.md with same warning as in docs
  1970  - added Deprecated comments in front of APIs moved to Compiler interface
  1971  - clean up hint interface comment
  1972  - updated DOI
  1973  
  1974  ### Feat
  1975  - adds std/math/bits/ToNAF
  1976  - remove offset shifts in plonk compile
  1977  - added ivokub suggestion on logging duration values
  1978  - add gnark/logger
  1979  - hint.NbOuputs should not be used at solve time, only at compile time
  1980  - remove post-compile offset id in R1CS builder
  1981  - added internal/stats package
  1982  - added ToTernary closes [#269](https://github.com/consensys/gnark/issues/269)
  1983  - adds gnark logger. closes [#202](https://github.com/consensys/gnark/issues/202)
  1984  - disable logger in tests by default, unless debug tag present
  1985  - implement PR suggestions in std/math/bits
  1986  - moved api.FromBinary to std/math/bits
  1987  - add ToBinary in std/math/bits
  1988  - added std.GetHints for convenience. fixes [#264](https://github.com/consensys/gnark/issues/264). error message when hint is missing now has hint name
  1989  - added NBits hint
  1990  - make nboutputs of a hint explicit at compile time
  1991  - **std:** added AssertIsTrit
  1992  
  1993  ### Fix
  1994  - add whitespace between vars in test.Println
  1995  - closes [#293](https://github.com/consensys/gnark/issues/293) and enables recursive hints solving
  1996  - replace stats snippet signature with newVariable() instead of fixed variable
  1997  - move init() behind sync.Once. remove verbose option in stats binary
  1998  - re generated stats
  1999  - gosec errors
  2000  - fixes [#266](https://github.com/consensys/gnark/issues/266) by adding constant path in Lookup2 and Select
  2001  - uncomment fuzz part of test
  2002  - std.GetHints() return bits.NNAF
  2003  - incorrect handling of nbBits == 1 in api.ToBinary
  2004  - **stats:** fix pairing stats. added run flag for stats binary to filter with regexp
  2005  
  2006  ### Perf
  2007  - restored frontend.WithCapacity option...
  2008  - **plonk:** IsConstant -> ConstantValue
  2009  - **sw:** no need for Lookup2 in constScalarMul
  2010  - **tEd:** Add -1C
  2011  
  2012  ### Refactor
  2013  - std/pairing have more consistent apis
  2014  - std/pairing bls12377 api more coherent
  2015  - remove StaticHint wrapper, log duplicate hints ([#289](https://github.com/consensys/gnark/issues/289))
  2016  - backend.WithOutput -> backend.WithCircuitLogger
  2017  - remove all internal circuits from stats, keep important snippets only
  2018  - move circuit_stats_test.go into internal/stats
  2019  - move NBits hint to math/bits
  2020  - move ntrits hint to std/math/bits
  2021  - make api.ToBinary point to math/bits/ToBinary
  2022  - revert Builder -> Compiler internal name change
  2023  - compiler -> r1cs and scs internally
  2024  - start moving api.ToBinary to std/math/bits/
  2025  - compiled.Variable -> compiled.LinearExpression
  2026  - factorize coeff table initialization
  2027  - frontend/cs subpackages to match new interfaces
  2028  - split compiler, api and builder interface into interfaces
  2029  - remove IsBoolean from R1CS variables
  2030  - preparing frontend.Compiler interface
  2031  - frontend.Compile now takes a builder instead of backendID as parameter
  2032  - moved internal/compiled to frontend/compiled
  2033  - remove nb inputs from hint declaration
  2034  
  2035  ### Style
  2036  - code cleaning
  2037  - added clearer error message for groth16 verifier missing init in circuit
  2038  - remove dead code
  2039  - remove duplicate import in template
  2040  - code cleaning
  2041  - remove dead code
  2042  - code cleaning
  2043  
  2044  ### Test
  2045  - add failing test for [#293](https://github.com/consensys/gnark/issues/293)
  2046  
  2047  ### Pull Requests
  2048  - Merge pull request [#295](https://github.com/consensys/gnark/issues/295) from ConsenSys/fix/test-println
  2049  - Merge pull request [#294](https://github.com/consensys/gnark/issues/294) from ConsenSys/fix/recursivehhints
  2050  - Merge pull request [#291](https://github.com/consensys/gnark/issues/291) from ConsenSys/refactor/std/pairing
  2051  - Merge pull request [#281](https://github.com/consensys/gnark/issues/281) from ConsenSys/feat/logger
  2052  - Merge pull request [#280](https://github.com/consensys/gnark/issues/280) from ConsenSys/simplify-r1cs-compile
  2053  - Merge pull request [#279](https://github.com/consensys/gnark/issues/279) from ConsenSys/feat/statistics
  2054  - Merge pull request [#276](https://github.com/consensys/gnark/issues/276) from ConsenSys/feat-math-bits
  2055  - Merge pull request [#278](https://github.com/consensys/gnark/issues/278) from ConsenSys/perf-constant-lookup2
  2056  - Merge pull request [#272](https://github.com/consensys/gnark/issues/272) from ConsenSys/refactor-hint
  2057  - Merge pull request [#275](https://github.com/consensys/gnark/issues/275) from ConsenSys/refactor-compiler-builder
  2058  - Merge pull request [#271](https://github.com/consensys/gnark/issues/271) from ConsenSys/refactor-compiled
  2059  - Merge pull request [#267](https://github.com/consensys/gnark/issues/267) from ConsenSys/perf/tEd-add
  2060  - Merge pull request [#265](https://github.com/consensys/gnark/issues/265) from ConsenSys/perf/SW-constScalarMul
  2061  
  2062  
  2063  <a name="v0.6.4"></a>
  2064  ## [v0.6.4] - 2022-02-15
  2065  ### Build
  2066  - update to gnark-crpto v0.6.1
  2067  - updatd to latezst gnarkcrypto
  2068  
  2069  ### Docs
  2070  - updated changelog for v0.6.4
  2071  - updated README.md with playground link
  2072  
  2073  ### Feat
  2074  - plonk adapted to kzg modifications
  2075  - udpate gnark-crypto
  2076  - code gen for plonk
  2077  - polynomial --> []frElement
  2078  - groth16 prover adapted to new fft OK
  2079  - **plonk:** beta is dervied using Fiat Shamir
  2080  - **tEd:** implements double-base scalar mul
  2081  
  2082  ### Fix
  2083  - fixed trace and println tests
  2084  - fixed wrong bigInt op in plonk api
  2085  - resolve comments
  2086  - restored commented code blinding polynomial
  2087  - fixed verifier
  2088  - verifier obtains correct quotient
  2089  - missing beta in linearized polynomial
  2090  - linearized polynomial OK
  2091  - correct up to quotient
  2092  - fixed plonk up to permutation polynomial
  2093  - **tEd:** case when scalar size is odd
  2094  - **tEd:** case when scalar size is odd
  2095  
  2096  ### Perf
  2097  - sparse R1CS solver is parallel
  2098  - R1CS solver may now run in parallel
  2099  - **EdDSA:** eddsa gadget using double-base scalar mul
  2100  - **bandersnatch:** apply tEd perf changes to Bandersnatch
  2101  
  2102  ### Refactor
  2103  - **eddsa:** rearrange eddsa verif as cofactor clearing counts
  2104  
  2105  ### Style
  2106  - code cleaning
  2107  - removed debug comments
  2108  
  2109  ### Test
  2110  - **tEd:** test scalarMul for all curves and schemes
  2111  
  2112  ### Pull Requests
  2113  - Merge pull request [#259](https://github.com/consensys/gnark/issues/259) from ConsenSys/perf-parallel-solver
  2114  - Merge pull request [#261](https://github.com/consensys/gnark/issues/261) from ConsenSys/feat/kzg_updated
  2115  - Merge pull request [#257](https://github.com/consensys/gnark/issues/257) from ConsenSys/perf/EdDSA
  2116  - Merge pull request [#253](https://github.com/consensys/gnark/issues/253) from ConsenSys/feat/fft_cosets
  2117  
  2118  
  2119  <a name="v0.6.3"></a>
  2120  ## [v0.6.3] - 2022-02-13
  2121  ### Build
  2122  - make staticcheck happy
  2123  
  2124  ### Docs
  2125  - updated changelog for v0.6.3
  2126  - updated example in README.md
  2127  
  2128  ### Feat
  2129  - updated gnark-crypto
  2130  - removed seed in mimc
  2131  - mimc implem corresponds to ethereum implem
  2132  
  2133  ### Fix
  2134  - fixes [#255](https://github.com/consensys/gnark/issues/255) variable visibility inheritance regression
  2135  - mod reduce input in solve with hint when coming from interface
  2136  - counter was set with PLONK backend ID in R1CS
  2137  - fixed conflicts
  2138  - assign a, b, c to solution and div by coeff instead of mul
  2139  - use uint64 for cbor unmarshal and cast
  2140  - fixed mimc example
  2141  
  2142  ### Perf
  2143  - replace big int pool in hint solver by tmp slice
  2144  - r1cs solver faster linear expression eval
  2145  - r1cs solver 40% faster by avoiding redudnant check
  2146  
  2147  ### Test
  2148  - benchmark solve r1cs with large linear exp
  2149  - added r1cs solve benchmark
  2150  
  2151  ### Pull Requests
  2152  - Merge pull request [#256](https://github.com/consensys/gnark/issues/256) from ConsenSys/fix-bug-compile-visibility
  2153  - Merge pull request [#249](https://github.com/consensys/gnark/issues/249) from ConsenSys/perf-ccs-hint
  2154  - Merge pull request [#248](https://github.com/consensys/gnark/issues/248) from ConsenSys/perf-ccs-solver
  2155  - Merge pull request [#247](https://github.com/consensys/gnark/issues/247) from ConsenSys/fix/plonk_cbor
  2156  
  2157  
  2158  <a name="v0.6.2"></a>
  2159  ## [v0.6.2] - 2022-01-28
  2160  ### Fix
  2161  - r1cs.GetConstraint bad alloc
  2162  
  2163  
  2164  <a name="v0.6.1"></a>
  2165  ## [v0.6.1] - 2022-01-28
  2166  ### Build
  2167  - go 1.16 to go 1.17
  2168  - github workflow against go 1.17 only
  2169  - github workflow against go 1.17 and go 1.18
  2170  
  2171  ### Clean
  2172  - better errors in witness
  2173  
  2174  ### Docs
  2175  - updated CHANGELOG.md with v0.6.1 changes
  2176  - update backend/witness godoc
  2177  - added bibtex citation
  2178  - **backend:** unify documentation for options
  2179  - **frontend:** unify docs for options
  2180  - **test:** unify documentation for options
  2181  
  2182  ### Feat
  2183  - added ccs.GetConstraints
  2184  - added witness.Public() to return Public part of the witness
  2185  - addition of Cmp in the API
  2186  - added GetSchema in CompiledConstraintSystem
  2187  - witness unmarshal uses limit reader if schema is set
  2188  - schema now stores nbPublic and nbSecret
  2189  - add optional omitempty tag in json generated schema
  2190  - prepare new witness API
  2191  - added frontend/schema to build circuit and witness schemas
  2192  
  2193  ### Fix
  2194  - handle array of array of array... in schema
  2195  - remove limit reader when parsing json
  2196  - deal with zero value in partial JSON witness
  2197  - added witness MarshalJSON working test. few ugly hacks to remove
  2198  - implemented pr suggestions. restored, fixed and addded sub tests in tags_test.go
  2199  - remove gnark embed tag in example rollup
  2200  - remove embbed struct tag
  2201  - typo in hint fn name
  2202  
  2203  ### Perf
  2204  - minimize allocations in ccs.GetConstraints
  2205  
  2206  ### Refactor
  2207  - compiled.Visbility -> schema.Visibiility
  2208  - added IsSolved API on the CompiledConstraintSystem interface
  2209  - backend/witness has no more dependency on frontend
  2210  - reduce frontend dependency in witness and remove most of type switches
  2211  - witness.WriteSequence -> schema.WriteSequence
  2212  - CopyTo -> VectorToAssignment
  2213  - factorize code in witness_test
  2214  - rename some variables from witness to assignment to avoid confusion
  2215  - cleaned internal/witness unused code
  2216  - killed ReadAndProve and ReadAndVerify (plonk)
  2217  - killed ReadAndProve and ReadAndVerify (groth16)
  2218  
  2219  ### Style
  2220  - replace â‘   by 1
  2221  - change main/companion to outer/inner curve
  2222  - clean up unsatisfied constraint error paths
  2223  - return constraint formatted as in the paper
  2224  - experiment 2 constraint str
  2225  - experiment 1 plonk constraint string repr
  2226  - plonk human readable constraint A+M+k == O
  2227  - constraint is not satified err -> constraint #id is not satisfied
  2228  - cosmetics in sparseR1C repr
  2229  - constraint cosmetics string repr. remove ToHTML deadcode
  2230  - code cleaning
  2231  - code cleaning, error refactoring
  2232  - code clean up, pr review changes
  2233  - remove defers in test/assert.go
  2234  - group WitnessOption under same type, implements PR review
  2235  - clean some todo
  2236  - **frontend:** create CompileOption type
  2237  - **frontend:** use functional opts for witness
  2238  - **test:** create TestingOption type for function opts
  2239  
  2240  ### Test
  2241  - added assert.marshalWitness subtest to ensure round trip json and binary serialization test coverage
  2242  
  2243  ### Tests
  2244  - run marshalling tests as subtests
  2245  
  2246  ### Pull Requests
  2247  - Merge pull request [#244](https://github.com/consensys/gnark/issues/244) from ConsenSys/plonk-human-readable
  2248  - Merge pull request [#237](https://github.com/consensys/gnark/issues/237) from ConsenSys/ccs-get-constraints
  2249  - Merge pull request [#233](https://github.com/consensys/gnark/issues/233) from ConsenSys/feat/api_cmp
  2250  - Merge pull request [#235](https://github.com/consensys/gnark/issues/235) from ConsenSys/witness-public-api
  2251  - Merge pull request [#232](https://github.com/consensys/gnark/issues/232) from ConsenSys/cleanup-231-group-options
  2252  - Merge pull request [#230](https://github.com/consensys/gnark/issues/230) from ConsenSys/ccs-schema
  2253  - Merge pull request [#229](https://github.com/consensys/gnark/issues/229) from ConsenSys/ccs-issolved-api
  2254  - Merge pull request [#228](https://github.com/consensys/gnark/issues/228) from ConsenSys/witness-json
  2255  - Merge pull request [#226](https://github.com/consensys/gnark/issues/226) from ConsenSys/feat-circuit-schema
  2256  - Merge pull request [#227](https://github.com/consensys/gnark/issues/227) from ConsenSys/build-update-go1.17
  2257  - Merge pull request [#222](https://github.com/consensys/gnark/issues/222) from ConsenSys/perf/std-sw-glv
  2258  
  2259  
  2260  <a name="v0.6.0"></a>
  2261  ## [v0.6.0] - 2022-01-04
  2262  ### Build
  2263  - update to latest gnark-crypto with fix for empty addchain folders
  2264  - updated to latest gnark-crypto
  2265  
  2266  ### Clean
  2267  - remove TotalInputs
  2268  
  2269  ### Docs
  2270  - updated changelog.md
  2271  - updated README.md example
  2272  - draft release notes for v0.6.0
  2273  - zkteam -> gnark
  2274  - add suggestion to error
  2275  
  2276  ### Feat
  2277  - extended the Add test
  2278  - internal/parser handles interface values and outputs warning when a struct is non adressable [#169](https://github.com/consensys/gnark/issues/169)
  2279  - added explicit warning when parser encounters unadressable struct field [#169](https://github.com/consensys/gnark/issues/169)
  2280  - addition of test for mul
  2281  - lighter stack trace by default for circuits, more verbose when -tags=debug provided
  2282  - added api.Tag and api.AddCounter to measure number of constraints in portion of circuit
  2283  - add debug info for SparseR1CS inverse
  2284  - add option to define newBuilder
  2285  - register frontend for backends
  2286  - register frontend compilers
  2287  - removed txt logs
  2288  - handle non zero divisor in Div
  2289  - addition of boolean table for sparseR1cs
  2290  - restored  options (forgot to commit the file)
  2291  - extended select test
  2292  - addition of test for select api
  2293  - api.AddCounter now measure new plonk constraints too
  2294  - made inv test explicit
  2295  - test circuits specifiy curves (useful for Div,Inv)
  2296  - addition of test for final exp in sw_bls24315
  2297  - cleaned  frontend/
  2298  - code uses new Compile from compile.go
  2299  - hint inptus LinearExpression -> interface
  2300  - closes [#197](https://github.com/consensys/gnark/issues/197) FromInterface supports uintXX and intXX types
  2301  - extended add test
  2302  - addition of Compile method on System interface
  2303  - addition of tests in r1cs/
  2304  - addition of Tag, Counter in plonk/ and r1cs/
  2305  - populated r1cs/ plonk/ for separating schemes
  2306  - finished assertions plonk
  2307  - completion of API (except rangeCheck, lookup2, Hints)
  2308  - started the addition of plonk secific cs
  2309  - added frontend.IsConstant and ConstantValue apis
  2310  - added api.CurveID()
  2311  - boolean constraint are handled separately
  2312  - restored plonk/groth16 switch in frontend
  2313  - add new curve bw6-633
  2314  - triplePairing test uses 3 different pairs
  2315  - counters accesible through CompiledConstraintSystem
  2316  - **frontend:** add lookup2 API method
  2317  - **frontend:** NewHint returns multiple outputs
  2318  - **integration_test:** add variable-input/output hint test
  2319  - **std:** fields, SW and pairing over BLS24-315 in BW6-633 circuit
  2320  - **test:** add Run for running as subtests
  2321  - **test:** add Log method for logging in subtests
  2322  - **test:** solve multi-output hints in engine
  2323  
  2324  ### Fix
  2325  - fixed mul
  2326  - addition of mod reduction in plonk api to bound bigInt
  2327  - re-exposed compiled.ConstraintSystem (internal) as frontend.CompiledConstraintSystem
  2328  - fixed examples/plonk
  2329  - reduce variables modulo scalar order
  2330  - hint solver was not returning objects to pool
  2331  - use sr1cs debug representation
  2332  - restored check unconstrained inputs when compiling
  2333  - fixed staticcheck
  2334  - fixes [#168](https://github.com/consensys/gnark/issues/168) adds context to a non-deterministic compilation error in the Assert object
  2335  - fixed staticheck
  2336  - removed unused file
  2337  - ran go generate
  2338  - fixed signature of addPlonkConstraint
  2339  - fixed bigInt passed by copy in plonk api
  2340  - mul test for all curves
  2341  - pairing test on Plonk + Groth16
  2342  - removed dead folder
  2343  - fixed mul test
  2344  - fixed AssertIsEqual when an argument is constant
  2345  - fixed mul by zero
  2346  - fixed Div (plonk)
  2347  - fixed Div(constant, var)
  2348  - plonk solver handles both L and R to solve
  2349  - Div -> DivUnchecked test div
  2350  - fixed code gen
  2351  - fixed range_constant plonk
  2352  - restored simpler version for range_constant r1cs
  2353  - fixed lookup2
  2354  - fixed isZero
  2355  - fixed assertIsEqual
  2356  - fixed assertion (AssertIsEqual missing return)
  2357  - fixed AssertIsBoolean in plonk (mul by constant failed)
  2358  - fixes [#169](https://github.com/consensys/gnark/issues/169) ensure frontend.Circuit methods are defined on pointer receiver
  2359  - extended sub test
  2360  - fixed Groth16 integration tests
  2361  - restored bootloader
  2362  - removed Compile() method in engine
  2363  - fixed API missing methods
  2364  - incorrect handling of hints in r1cs solver
  2365  - fixes [#178](https://github.com/consensys/gnark/issues/178) by adding cbor.MaxMapPairs options when reading R1CS
  2366  - merge with develop branch
  2367  - remove deadcode (csfuzz targets)
  2368  - go:generate bw6633 and updated circuit stats
  2369  - fixed code gen :/
  2370  - fixed gosec
  2371  - ran gofmt
  2372  - set variable to Solved after Or,And,Xor when compiling to plonk
  2373  - handled nbBits=1 in toBinary
  2374  - fixed comments
  2375  - resolve comments
  2376  - fixed Div
  2377  - fixed tests in cs_api_test
  2378  - restored log in parser
  2379  - fixed XOR, OR, mustBeLessOrEqCst
  2380  - fixed select to reduce nb of plonk constraints
  2381  - fixed ToBinary
  2382  - fixed toSparseR1CS, removed dead code
  2383  - fixed Select constraint
  2384  - **debug_test:** reverse trace and expected trace order
  2385  - **examples:** omit unnecessary api call
  2386  - **frontend:** reduce constant by modulus
  2387  - **frontend:** set only hint internal variables constrained
  2388  - **init.stats:** update circuit statistics
  2389  - **integration_test:** remove fuzzing call
  2390  
  2391  ### Frontend
  2392  - update hint documentation
  2393  
  2394  ### Perf
  2395  - **std:** bls24 Miller loop in 2NAF + opt. Final exp
  2396  
  2397  ### Refactor
  2398  - frontend.Variable -> cs.Variable
  2399  - simplified cs_to_r1cs_sparse algo
  2400  - Variable is now an interface. std/ wip
  2401  - moved compile in compiler/
  2402  - std/ uses Variable interface{}
  2403  - remove api.Constant. can now assign directly
  2404  - move GetWitnessValue to internal test engine func
  2405  - unpublish frontend/cs/ structures
  2406  - rename frontend/R1CSRefactor to frontend/R1CS
  2407  - use compile option to define builder
  2408  - cs.Variable -> frontend.Variable
  2409  - rename frontend.System to frontend.Builder
  2410  - TotalOutputs -> NbOutputs
  2411  - use internal util
  2412  - move frontend util to internal
  2413  - use frontend.Compile
  2414  - added frontend.IsConstant and ConstantValue apis
  2415  - Define(curveID, api) -> Define(api); api.CurveId()
  2416  - modified definition of Variable in zkpScheme
  2417  - compiled.CompiledConstraintSystem -> compiled.ConstraintSystem
  2418  - move definitions to frontend
  2419  - changed Variable definition in cs.go and compiled/
  2420  - remove curve from system Compile
  2421  - frontend.Variable -> cs.Variable
  2422  - interface --> Variable
  2423  - CurveID() --> Curve() in API
  2424  - cleaning hierarchy of constraints systems
  2425  - addition of compiler for both systems
  2426  - constraintSystme -> R1CS
  2427  - Hint takes []LinearExpression as input
  2428  - VariableID -> WireID
  2429  - use subtests in backend serialization tests
  2430  - simplifed wire tracking in a cs
  2431  - api interface allows access to backendID
  2432  - refactored  frontend
  2433  - modified cs_api.go
  2434  - **frontend:** move Tag to frontend/
  2435  - **frontend:** add compiler registry
  2436  - **integration_test:** run as subtests
  2437  - **lookup2:** use multiple witnesses for tests
  2438  - **stats:** use subassert for errors
  2439  - **stats:** run as subtests
  2440  - **test:** use Tag
  2441  - **test:** run assert subtests using Run
  2442  
  2443  ### Style
  2444  - added few comments
  2445  - removed dead code
  2446  - remove counter example in std/
  2447  - remove unused displayCounters boolean
  2448  - remove frontend.DisplayCounters option
  2449  - remove witnessValue method
  2450  - remove bls377tobw761 conv func
  2451  - remove bls377tobw761 conv func
  2452  - error strings should not end with punctuation or a newline
  2453  - **Miller loop:** for loop instead of addition chain
  2454  
  2455  ### Test
  2456  - use BN254 in modulus-dependent tests for speed
  2457  - added failing test with multiple hints in one R1C
  2458  - **lookup2:** add integration test
  2459  
  2460  ### Pull Requests
  2461  - Merge pull request [#192](https://github.com/consensys/gnark/issues/192) from ConsenSys/multi-hint
  2462  - Merge pull request [#220](https://github.com/consensys/gnark/issues/220) from ConsenSys/feat-from-interface
  2463  - Merge pull request [#217](https://github.com/consensys/gnark/issues/217) from ConsenSys/fix-internal-compiled
  2464  - Merge pull request [#191](https://github.com/consensys/gnark/issues/191) from ConsenSys/assert-subtests
  2465  - Merge pull request [#200](https://github.com/consensys/gnark/issues/200) from ConsenSys/refactor/frontend
  2466  - Merge pull request [#205](https://github.com/consensys/gnark/issues/205) from ConsenSys/fix/constant-mod-reduction
  2467  - Merge pull request [#186](https://github.com/consensys/gnark/issues/186) from ConsenSys/fix/plonk_constraints
  2468  - Merge pull request [#185](https://github.com/consensys/gnark/issues/185) from ConsenSys/feat/bw6-633
  2469  - Merge pull request [#189](https://github.com/consensys/gnark/issues/189) from ConsenSys/lookup2
  2470  - Merge pull request [#183](https://github.com/consensys/gnark/issues/183) from ivokub/hint-registry
  2471  - Merge pull request [#182](https://github.com/consensys/gnark/issues/182) from ConsenSys/std/pairing
  2472  - Merge pull request [#176](https://github.com/consensys/gnark/issues/176) from ConsenSys/feat-constraint-counter
  2473  - Merge pull request [#180](https://github.com/consensys/gnark/issues/180) from ConsenSys/refactor-variable-interface
  2474  - Merge pull request [#173](https://github.com/consensys/gnark/issues/173) from ConsenSys/feat-debug-tag
  2475  
  2476  
  2477  <a name="v0.5.2"></a>
  2478  ## [v0.5.2] - 2021-11-03
  2479  ### Build
  2480  - updated to gnark-crypto v0.5.3
  2481  - fix fuzz target compile error
  2482  - fix fuzz target compile error
  2483  - updated to latest gnark-crypto
  2484  - updated to latest gnark-crypto
  2485  - updated to gnark-crypto v0.5.2
  2486  - updated test timeout, while we improve plonk compile speeds
  2487  - fix staticcheck warning
  2488  - updated to latest gnark-crypto
  2489  - fix unchecked errors
  2490  - fix gofuzz target
  2491  - re-ran go generate
  2492  - fix gofuzz build
  2493  
  2494  ### Docs
  2495  - updated CHANGELOG.md for v0.5.2
  2496  - added pull requests in changelog.md
  2497  - added doc to frontend.API interface
  2498  - added documentation to new test pacakge
  2499  
  2500  ### Feat
  2501  - Sub matches Add api in circuit
  2502  - attempt at reducing nb constraints for ML by working in affine
  2503  - added frontend compile options to handle capacity and unconstrained inputs ignore flag
  2504  - added gcd for int64 coeff values in splitR1C, untested
  2505  - added test engine support for hints
  2506  - added UnsafeReadFrom for groth16 Proving and Verifying keys
  2507  - GetKey now returns an ID of a primitive linear expression
  2508  - added DivUnchecked. start factorizing some frontend.API with better Constant cases
  2509  - added post-compile check to ensure all inputs are constrained fixes [#163](https://github.com/consensys/gnark/issues/163)
  2510  - ignore zero coefficients for variable constraint check
  2511  - added frontend.API interface
  2512  - added fuzzing. div now takes 2 constraints
  2513  - caching test srs for faster tests
  2514  - added TestableCircuit interface
  2515  - added debugInfo for ToBinary API
  2516  - unset variables error message comes with a stack trace
  2517  - frontend bits operation adjusted to fr.Bits real size
  2518  - ml with short addition chain (13245cs -> 12297, marginal gain)
  2519  - **std:** add bandersnatch
  2520  
  2521  ### Fix
  2522  - fixes [#155](https://github.com/consensys/gnark/issues/155) slow compiling with plonk frontend
  2523  - don't check if one wire is constrained
  2524  - restore std/algebra/sw g1ScalarMul test circuit
  2525  - bug in Select when parameters are constant
  2526  - regenerated stats.
  2527  - remove unneeded mod operations in api
  2528  - fixed constraints blow up for plonk
  2529  - test engine mod reduce range check bound if not constant
  2530  - introduced bug in refactoring
  2531  - fix toHTML
  2532  - reduce duplicate when splitting r1c
  2533  - plonk build permutation index out of bounds
  2534  - std/twistededwards remove A
  2535  - std/twistededwards remove A
  2536  - added markBoolean on inplace boolean constraints to avoid duplicated constraints
  2537  
  2538  ### Perf
  2539  - fast path with int64 in divide linear expression
  2540  - cs.coeffID with gobencode
  2541  - fast path for coeffID when coeff is int64
  2542  - sparseR1CS reduce improvments
  2543  - plonk frontend split and reduce improvments
  2544  - plonk compile, replace sha256 with fast lookup with collisions
  2545  - minor perf adjustement on big.Int operations and allocations
  2546  - reduced redundant constraints in range check
  2547  
  2548  ### Refactor
  2549  - delete old curve typed hint functions
  2550  - hint function signature uses big.Int, no more ID from name
  2551  - splitBis -> split
  2552  - h and record are now part of scs
  2553  - moved testing in assert, code cleaning
  2554  - moved testing in assert, code cleaning
  2555  - reverted gnark to api in Define()
  2556  - all circuits use frontend.API in place of *frontend.ConstraintSystem
  2557  - in circuits *frontend.ConstraintSystem to frontend.API
  2558  - factorized assert helper accross curves and backends
  2559  
  2560  ### Style
  2561  - remove unused code (nSquare)
  2562  - removed commented code
  2563  - removed code for used for debugging purposes
  2564  - clean up std/algebra/g1
  2565  - removed useless lines in g1 Double
  2566  - clean up std/fp2
  2567  - use ecc.Info() where possible to get modulus or field size
  2568  - std/twisted edwards code cleaning
  2569  - std/fiat-shamir clean up
  2570  - cleaned up some TODO
  2571  - move stats tests in circuitstats_test.go
  2572  - remove plonk and groth16 assert.go
  2573  - added comment in range check
  2574  - remove code no longer used in the pairing
  2575  - commented ml test used to diplay nb constraints
  2576  
  2577  ### Test
  2578  - groth16 marshal 10 round only
  2579  - passing
  2580  - bypass fuzz test of frontend for now
  2581  
  2582  ### Tests
  2583  - added add and sub internal test circuits
  2584  - minor adjustements or better fuzzing
  2585  
  2586  ### Pull Requests
  2587  - Merge pull request [#159](https://github.com/consensys/gnark/issues/159) from ConsenSys/std/bandersnatch
  2588  - Merge pull request [#164](https://github.com/consensys/gnark/issues/164) from ConsenSys/perf-scs-compile
  2589  - Merge pull request [#161](https://github.com/consensys/gnark/issues/161) from ConsenSys/test-engine-with-hints
  2590  - Merge pull request [#162](https://github.com/consensys/gnark/issues/162) from ConsenSys/std/pairing
  2591  - Merge pull request [#160](https://github.com/consensys/gnark/issues/160) from ConsenSys/perf-unsafe-decoding
  2592  - Merge pull request [#156](https://github.com/consensys/gnark/issues/156) from ConsenSys/std/twistedEdwards
  2593  - Merge pull request [#151](https://github.com/consensys/gnark/issues/151) from ConsenSys/testable-circuits
  2594  - Merge pull request [#153](https://github.com/consensys/gnark/issues/153) from ConsenSys/fix/plonk_constraints_blowup
  2595  - Merge pull request [#146](https://github.com/consensys/gnark/issues/146) from ConsenSys/feat/ml-snark-pairing
  2596  - Merge pull request [#148](https://github.com/consensys/gnark/issues/148) from ConsenSys/perf-range-check
  2597  
  2598  
  2599  <a name="v0.5.1"></a>
  2600  ## [v0.5.1] - 2021-09-21
  2601  ### Build
  2602  - go mod tidy
  2603  - remove dead code, makes staticcheck happier
  2604  - comment fuzz test part that depends on assertions
  2605  - increased CI test timeout and run race test on ubuntu only
  2606  - fix gosec unhandled error warning
  2607  
  2608  ### Docs
  2609  - added release notes for v0.5.1 in CHANGELOG.md
  2610  
  2611  ### Feat
  2612  - added ToHTML on R1CS
  2613  - cs.Println and debugInfo supported in groth16 and plonk
  2614  - add witness reconstruction methods. closes [#135](https://github.com/consensys/gnark/issues/135)
  2615  - added sanity check in frontend.Compile to ensure constraint validity
  2616  - add witness.WriteSequence to export expected witness sequence
  2617  - hintFunction now returns an error instead of panic
  2618  - added sanity checks in plonk solver
  2619  - plonk support for hints ok
  2620  - added Hints data struct in SparseR1CS
  2621  - added ToHTML on SparseR1CS
  2622  -  debugInfoComputation and debugInfoAssertion in a cs
  2623  - cs.Println now supports structures with Variables
  2624  - added assertions in ToHTML template
  2625  - debug info is displayed when div by 0 happens (Groth16 only)
  2626  - test circuit for AssertIsDifferent
  2627  - added skelleton for hintFunctions in r1cs
  2628  - IsZero is now implemented with 3 constraints fixes [#132](https://github.com/consensys/gnark/issues/132)
  2629  - **frontend:** added cs.NewHint
  2630  - **groth16:** added dummyInifinty counts for dummySetup accurate sizes generation of pk
  2631  - **plonk:** isZero with advice wire OK, binaryDec NOK
  2632  - **r1cs:** replaced isZero solver path by solver hint
  2633  - **r1cs:** removed binaryDec solving method in favor of cs.NewHint
  2634  
  2635  ### Fix
  2636  - hint functions use compiled.Term instead of variable IDs only
  2637  - fix previous fix
  2638  - remove debug stack trace from frontend error
  2639  - ProvingKey marshaling test with infinity flags, fixes [#141](https://github.com/consensys/gnark/issues/141)
  2640  - return empty slice when R1CS.Solve fails
  2641  - remove references to assertions in html templates
  2642  - sparseR1CS rebuilds hint map when deserializing
  2643  - ensure frontend.ConstraintSystem is not modified by compile process
  2644  - added Virtual variables to avoid creating wires for boolean constraints
  2645  - comment fuzz test
  2646  - fix serialization test. ensure we init hints when reading R1CS
  2647  - fixed error msg in Inverse, Div for groth16 fuzzer
  2648  - initialize InfinityX in dummy setup
  2649  - can constraint linear expressions to be boolean fixes [#136](https://github.com/consensys/gnark/issues/136)
  2650  - BinaryDecomposition solving assumes bits are in L, which is fine
  2651  - removed fmt.Println trace in setup
  2652  - **eddsa:** addition of isOnCurve check
  2653  - **eddsa:** S not splitted (s<r) + 2,3 Double instead of [cofactor]G
  2654  - **groth16:** Prove with force flag wasn't doing much since msm had lots of zeroes in input
  2655  - **test:** integration test failing due to missing witness assignment
  2656  
  2657  ### Frontend
  2658  - **groth16:** ensure R (as in LRO) as less variables than L
  2659  
  2660  ### Perf
  2661  - **groth16:** filter wire values after solve in go routines
  2662  - **groth16:** filter A and B for infinity points
  2663  - **groth16:** use batch invert in groth16.Setup
  2664  
  2665  ### Refactor
  2666  - groth16.Prove and plonk.Prove takes backend.ProverOption as parameter
  2667  - save hints in a map in ConstraintSystem instead of slice
  2668  - factorized structs between compiled.SparseR1Cs and compiled.R1CS
  2669  - remove NbConstraints from R1CS
  2670  - move mHints to compiled R1CS and SparseR1CS
  2671  - factorize logging between R1CS and SparseR1CS
  2672  - separated hint functions in their own file
  2673  - factorizing code between R1CS and SparseR1CS
  2674  - introduced solution struct shared between R1CS and SparseR1CS
  2675  - remove assertions in Groth16 R1CS
  2676  - remove Assertions in compiled sparseR1CS
  2677  - removed r1c.SolvingMethod in favor of cs.NewHint
  2678  - moved assertions in cs_assertions.go
  2679  - cs.IsZero doesn't need curveID anymore
  2680  
  2681  ### Style
  2682  - printArg doesn't return error
  2683  - code cleaning in cs_to_r1cs_sparse.go
  2684  - fixed comment in popConstant
  2685  - cleaned eddsa
  2686  - in-place filtering of points in setup
  2687  - fixed comments on S in eddsa
  2688  - cleaned eddsa_test
  2689  
  2690  ### Test
  2691  - ensure frontend.Compile is deterministic
  2692  - added non regression for cs.Println and debugInfo traces
  2693  - integration test remove Public in favor of Good in test circuits
  2694  - replaced Fatal by Error in stat check test
  2695  - added circuit statistic non regression tests
  2696  - added plonk path to integration_test.go
  2697  - fix gofuzz compile error
  2698  - added test from [#136](https://github.com/consensys/gnark/issues/136)
  2699  
  2700  ### Pull Requests
  2701  - Merge pull request [#142](https://github.com/consensys/gnark/issues/142) from ConsenSys/frontend-println-tests
  2702  - Merge pull request [#139](https://github.com/consensys/gnark/issues/139) from ConsenSys/cs-hint
  2703  - Merge pull request [#134](https://github.com/consensys/gnark/issues/134) from ConsenSys/is-zero
  2704  - Merge pull request [#130](https://github.com/consensys/gnark/issues/130) from ConsenSys/groth16-setup-filter-inf
  2705  - Merge pull request [#131](https://github.com/consensys/gnark/issues/131) from ConsenSys/fix/i_128
  2706  - Merge pull request [#129](https://github.com/consensys/gnark/issues/129) from ConsenSys/fix/reduce_constraints_eddsa
  2707  
  2708  
  2709  <a name="v0.5.0"></a>
  2710  ## [v0.5.0] - 2021-08-23
  2711  ### Build
  2712  - updated to latest gnark-crypto
  2713  - remove 32bit test for now, add timeout for github action
  2714  - updated to latest gnark-crypto. use ecc.NextPowerOfTwo
  2715  - updated to latest gnark-crypto
  2716  - add github CI action checks
  2717  - updated to latest gnark-crypto
  2718  - updated to msm-cpus branh of gnark-crypto
  2719  - updated to latest gnark-crypto
  2720  - updated to latest gnark-crypto
  2721  - updated to latest gnark crypto. fixes [#120](https://github.com/consensys/gnark/issues/120)
  2722  - updated to latest gnark-crypto
  2723  - updated to latest gnark-crypto
  2724  - run go mod tidy
  2725  - updated to gnark-crypto v0.5.0
  2726  - make gosec happy by handling un-handled errors
  2727  - run go generate
  2728  - updated to latest gnark-crypto
  2729  - restored gnark-crypto version
  2730  - updated to latest gnark-crypto. kzg api refactor
  2731  - updated to latest gnark-crypto
  2732  - updated to latest gnark-crypto. plonk Setup now takes kzg SRS, and re-uses fft domain
  2733  - updated to latest gnark-crypto
  2734  - ran go:generate for bls24 after merging develop into sself
  2735  - ran go:generate for bls24-315 plonk marshal
  2736  - re-ran go:generate
  2737  - **staticheck:** commented debugInfoUnsetVariable
  2738  
  2739  ### Chore
  2740  - cleaned plonk bn254, removed old version
  2741  
  2742  ### Ci
  2743  - added -mod=mod fix, maybe?
  2744  - replace go test sum by go test, CI check
  2745  
  2746  ### Clean
  2747  - cosmetics in plonk.Verify
  2748  
  2749  ### Cleanup
  2750  - removed to_delete.go file
  2751  
  2752  ### Docs
  2753  - fix go report card link
  2754  - prepare release notes for v0.5.0
  2755  - fix go report card link
  2756  - updated doc link and logo on README.md
  2757  
  2758  ### Feat
  2759  - plonk as-in-the-paper implem for bn254
  2760  - LinearExpression implements Sort interface. replaced quickSort() by sort.Sort(...)
  2761  - remove term.CoeffValue and use constant coeff ID for special values instead
  2762  - addition of circuit to test determinism
  2763  - update gnark-crypto[@feat](https://github.com/feat)/kzg/multi_points
  2764  - addition of FiatShamir in std
  2765  - updated go.mod
  2766  - modified example/benchmark with setup and run options
  2767  - updated go.sum, use of external hash function in plonk
  2768  - plonk verifier uses kzg BatchVerifyMultiPoints
  2769  - remove serialization test by default in assert helper
  2770  - replaced individual ScalarMul by MultiExp in plonk.Verify
  2771  - addition of unit test for cyclo square in std/../e12.go
  2772  - add bls24-315 to gnark
  2773  - added example for plonk (exponentiate circuit)
  2774  - added NewCS and NewPublicData on plonk package, with io.ReaderFrom and io.WriterTo unimplemented interfaces
  2775  - blind of a, b, c OK for bn254
  2776  - added reference benchmarks for plonk
  2777  - added NbG1 and NbG2 apis on groth16 Proving and Verifying keys closes [#116](https://github.com/consensys/gnark/issues/116)
  2778  - call stack displayed when AssertIsEqual fails
  2779  - gnarkd circuit data structure extension to support both groth16 and plonk
  2780  - added PublicRaw marhsal methods, ignoring KZG for now
  2781  - added WriteTo and ReadFrom to SparseR1CS objects
  2782  - added Neg on frontend API, cleaned Neg in twistededwards
  2783  - official implem of plonk, verifier in progress
  2784  - moving to strongly typed kzg
  2785  - **plonk:** code gen, started modifying backend interfaces
  2786  - **plonk:** added convenient method to create a kzg SRS from a compiled constraint system
  2787  - **plonk:** setup check srs size against fft domain cardinality
  2788  - **plonk:** added VerifyingKey serialization
  2789  - **plonk:** added VerifyingKey serialization with test
  2790  - **plonk:** added ProvingKey serialization
  2791  - **plonk:** modified folded commitment of h
  2792  - **plonk:** blinded z, modified test circuits to have nbConstraints>8
  2793  - **plonk:** code gen for proof blinding
  2794  - **plonk:** added ProvingKey serialization test
  2795  - **plonk:** added InitKZG methods on ProvingKey and VerifyingKey
  2796  
  2797  ### Fix
  2798  - fixed gnarkd tests for kzg srs
  2799  - shuffleVariables in fuzz testing with bad offset
  2800  - restore benchmark/main.go
  2801  - don't close channels that are use in the select as they become always ready to receive
  2802  - groth16 prove missing chan close in one path
  2803  - groth16.Prove handles multiExp error returns
  2804  - fixed conflicts
  2805  - fixed conflicts
  2806  - restored benchmark/main.go
  2807  - avoid code gen for bw633 until feat/bw633 is merged
  2808  - invalid gnark struct tag options return error at compile time fixes [#111](https://github.com/consensys/gnark/issues/111)
  2809  - kzg srs size +3
  2810  - r1cs compilation is deterministic, fixes [#90](https://github.com/consensys/gnark/issues/90)
  2811  - fixes [#112](https://github.com/consensys/gnark/issues/112)
  2812  - removed unused error variable
  2813  - make go vet happy
  2814  - use of doubling formula instead of add(x,x) fixes [#114](https://github.com/consensys/gnark/issues/114)
  2815  - updated go.mod
  2816  - go.mod points to gnark-crypto[@develop](https://github.com/develop), fixes [#96](https://github.com/consensys/gnark/issues/96)
  2817  - SetupDummyCommitment calls with Proving and Verifying key in return
  2818  - added BLS24_315 in plonk constructors
  2819  - backend plonk bls24 process error
  2820  - create cbor decoder with MaxArrayElements set to max value
  2821  - regenerated code
  2822  - **frontend:** restored isBoolean logic to avoid dupplicate constraints. remove dangling variable thing
  2823  - **frontend:** set initial capacity for constraint system slices to 0
  2824  - **gnarkd:** kzg srs generation in test cases with correct size
  2825  - **plonk:** fixed error in ComputeH  when nbConstraints+nbPublicInputs<6
  2826  
  2827  ### Perf
  2828  - start computeZ earlier
  2829  - plonk prove remove most fft.BitReverse
  2830  - replaced string concat in frontend with strings.Builder
  2831  - remove clone in computeLinearizedPoly
  2832  - minor optim
  2833  - use batch inversion in plonk.computeZ
  2834  - plonk.computeLinearizedPolynomial with less polynomial clones
  2835  - improving parallelism in prover
  2836  - minor change
  2837  - make constraint slice initalCapacity an optional paremeter in compile
  2838  - plonk frontend replace map by slice, avoid few allocs and useless slice copies
  2839  - frontend.ConstraintSystem special values fast path for coefficients
  2840  - plonk frontend fast path for -1, 0 and 1 as coeffs
  2841  - reduced memory allocations in plonk frontend
  2842  - evalIDCosets shiftEval done in parallel, better trace
  2843  - shiftZ in parallel with other stuff
  2844  - remove useless copy in computeH
  2845  - sparseR1CS.Solve few times faster by avoiding Div at constraint solving
  2846  - hunting memallocs - remove evaluid and uuid in evalConstraint
  2847  - blinded polynomials re-use input polynomial memory
  2848  - remove polynomial clone in foldedH computation
  2849  - remove bitReverse in evalIDCosets
  2850  - use ecc.CPUSemaphore in kzg.Commit to ensure pretty trace
  2851  - remove one additional plynomoial clone
  2852  - parralelize computeH
  2853  - **experimental:** start too many go routines in Prover
  2854  - **frontend:** rewrote linear expression reduce in place instead of multiple map allocs
  2855  - **frontend:** minor adjustements
  2856  - **frontend:** rewrote cs.ToBinary to avoid unecessary func calls
  2857  - **plonk:** shiftEval done without copy or bitReverse
  2858  - **plonk:** compute shifted Z element on the fly without allocating a new polynomial
  2859  - **plonk:** partly parallel computeBlindedZ
  2860  - **plonk:** when doing fft on domainH with coset, don't scale zero values
  2861  - **plonk:** minor tweaks, removing un-needed bitreverse and mem allocs
  2862  - **scs:** rewrote solve O
  2863  - **scs:** sparse r1cs have fast path for special coeffs operations
  2864  - **std:** adds E2/E12 square and cyclo square in E12 (used FinalExp)
  2865  
  2866  ### Refactor
  2867  - removed gnarkd and examples/benchmark
  2868  - mimc uses Write(data) then Sum() instead of Sum(data)
  2869  - Hash-->Sum in mimc gadget
  2870  - added deriveRandomness utility func in plonk verifier
  2871  - strongly typed KZG, Plonk test passing
  2872  - renamed Groth16 protobuf service to ZKSnark
  2873  - **groth16:** SizePublicWitness to NbPublicWitness
  2874  
  2875  ### Style
  2876  - cleaning plonk.prove
  2877  - renamed GetCurveID() to CurveID() on groth16 objects
  2878  - minor change
  2879  - more cleaning in cs_to_r1cs_sparse.go
  2880  - start clean up cs_to_r1cs_sparse.go
  2881  - replaced very long suite of if else by switch
  2882  - remove Bis suffixes in plonk prover
  2883  - moved derivedrandomness
  2884  - cleaning plonk APIs
  2885  - go fmt
  2886  - modified comment on reduce
  2887  - **kzg:** factorized some methods in the prover
  2888  - **plonk:** use close(chan) instead of send twice on it
  2889  
  2890  ### Test
  2891  - test for Fiat Shamir gadget
  2892  - added reference frontend.Compile benchmarks
  2893  - fix circuitID path
  2894  - **gnarkd:** plonk end to end pass
  2895  - **gnarkd:** gRPC test run in parallel w multiple curves
  2896  
  2897  ### Pull Requests
  2898  - Merge pull request [#126](https://github.com/consensys/gnark/issues/126) from ConsenSys/develop
  2899  - Merge pull request [#124](https://github.com/consensys/gnark/issues/124) from ConsenSys/groth16-stats-pk-vk
  2900  - Merge pull request [#113](https://github.com/consensys/gnark/issues/113) from ConsenSys/feat/gnarkd/plonk
  2901  - Merge pull request [#117](https://github.com/consensys/gnark/issues/117) from ConsenSys/perf/recursive-proof
  2902  - Merge pull request [#108](https://github.com/consensys/gnark/issues/108) from ConsenSys/feat/plonk/clean_verifier
  2903  - Merge pull request [#104](https://github.com/consensys/gnark/issues/104) from ConsenSys/bls24-315
  2904  - Merge pull request [#95](https://github.com/consensys/gnark/issues/95) from ConsenSys/fix/deterministic_r1cs
  2905  
  2906  
  2907  <a name="v0.4.0"></a>
  2908  ## [v0.4.0] - 2021-04-29
  2909  ### Build
  2910  - updated gnark-crypto in go.mod
  2911  - updated to latest bavard and gnark-crypto
  2912  - updated to latest gnark-crypto
  2913  - moved solidity integration tests in github.com/consensys/gnark-tests
  2914  - updated .gitignore
  2915  - added .gitlint file
  2916  
  2917  ### Ci
  2918  - added integration fuzz test in backend/groth16/fuzz_test.go
  2919  
  2920  ### Doc
  2921  - fixed typo ([#63](https://github.com/consensys/gnark/issues/63)) in README.md
  2922  
  2923  ### Docs
  2924  - preparing v0.4.0 release with new README.md and CHANGELOG.md
  2925  - added comments for the splitting of S in eddsa
  2926  - updated package level godoc
  2927  - fixed comments on wire ordering for sparse r1cs
  2928  - **plonk:** fixed doc for computeH
  2929  
  2930  ### Eddsa
  2931  - bw761 blinding factor and private key size are consistant with the field size
  2932  
  2933  ### Feat
  2934  - added funcitons for proving PLONK's claim 1 (bn256), not tested
  2935  - mock polynomial commitments for all curves + templates
  2936  - added code gen for placeholder feature
  2937  - added Fiat Shamir for plonk
  2938  - added intefaces for polynomial commitments
  2939  - updated go.mod (points to gnark-crypto[@hotfix](https://github.com/hotfix)/issue_36)
  2940  - support for batch proofs opening at single point
  2941  - **fft:** fft/fftInv now works on abitrary cosets (bounded by maxOrder)
  2942  - **gnarkd:** exposing gnark APIs through RPCs ([#54](https://github.com/consensys/gnark/issues/54))
  2943  - **gnarkd:** added optional TTL in CreateProveJobRequest
  2944  - **gnarkd:** added CancelProveJob method
  2945  - **gnarkd:** added ListProveJob method
  2946  - **plonk:** addition of placeholders to handle public inputs
  2947  - **plonk:** proof that Z starts at 1 done, tests ok (bn256)
  2948  - **plonk:** added commitments verification in plonk's verifier
  2949  - **plonk:** plonk tests are now executed via generic code in assert
  2950  - **plonk:** proof of permutation done (bn256), tests ok
  2951  - **plonk:** templates for plonk setup/prove/verify
  2952  - **plonk:** permutation proof part implemented, to be tested
  2953  - **plonk:** claim 1 of plonk prover works correctly(bn256)
  2954  - **plonk:** templates for testing prover (to be moved to backend/plonk)
  2955  - **plonk:** addition of templates + code gen for computing Z
  2956  - **plonk:** applying previous commit on all curves with code gen
  2957  - **plonk:** code gen for the previous fix
  2958  - **plonk:** addition of plonk generic code in backend/
  2959  - **plonk:** addition of the permutation in the setup
  2960  - **plonk:** H is split as h1+X**m*h2+X**2m*h3
  2961  - **plonk:** polynomial accumulating partial permutation OK (bn256)
  2962  - **plonk cs:** adding functionality to convert a constraint system to PLONK constraints ([#56](https://github.com/consensys/gnark/issues/56))
  2963  
  2964  ### Fix
  2965  - cs.Println doesn't trigger panic anymore
  2966  - fixed Groth16 snark circuit according to previous commit
  2967  - inverse and div in frontend had some variable ID offset issues ([#62](https://github.com/consensys/gnark/issues/62))
  2968  - fixed snark circuit for bls377 pairing
  2969  - removed dead function (getOneWire) in cs.go
  2970  - fixes [#88](https://github.com/consensys/gnark/issues/88)
  2971  - go mod update + fix bad import path with gofuzz build tag
  2972  - bn256 -> bn254
  2973  - updated go.mod to latest gnark-crypto on develop
  2974  - r1cs serialization test doesn't need to check logger io.Writer output
  2975  - ensure that L.id=M[0].id and R.id=M[1].id in a sparse_r1c
  2976  - added go.sum
  2977  - removed unreachable code piece
  2978  - typo in readme.md fixes [#60](https://github.com/consensys/gnark/issues/60)
  2979  - **fft:** fixed the ordering of cosets factor according to DIF/DIT
  2980  - **gnarkd:** ListProveJob test didn't account for other test adding jobs to the queue
  2981  - **plonk:** removed useless multiplication by L in the prover
  2982  - **plonk:** fixed size of permutation, it's now a power of 2
  2983  - **plonk:** fixed formula for Li->Li+1 in verify ... (bn256)
  2984  - **r1cs:** TestSerialization running sequentially
  2985  - **r1cs:** moved bytes.Buffer in t.Run (TestSerialization)
  2986  - **r1cs_sparse:** ensure that Solve never returns nil, err
  2987  
  2988  ### Groth16
  2989  - VerifyingKey data structure change to ensure compatibility with other impl and Solidity in Ethereum. Serialization format change.
  2990  
  2991  ### Integration_test
  2992  - added witness serialization tests
  2993  
  2994  ### Refactor
  2995  - gurvy -> gnark-crypto
  2996  - use gnark-crypto polynomial and accumulator packages
  2997  - bls381 -> bls12381
  2998  - bls377 -> bls12377
  2999  - templates for groth16 are in a dedicated folder
  3000  - moved crypto/utils in frontend/, for now
  3001  - bw761 -> bw6761
  3002  - bn256 -> bn254, bls377 -> bls12-377, etc. following gnark-crypto v0.4.0
  3003  - bn256 -> bn254
  3004  - first step for gurvy -> gnark-crypto
  3005  - removed the Curve field in the R part of eddsa signature
  3006  - verification of openings return an error instead of bool
  3007  - removed challenge for batch opening/verifying poly commit
  3008  - claimed value is inside an opening proof
  3009  - added method ClaimedValue on Proof interface
  3010  - **fft:** nbCosets --> Depth, easier for interpreting cosets
  3011  - **plonk:** lrozh (in the proof) are now in a single slice
  3012  - **plonk:** challenges are built in init() until Fiat Shamir
  3013  - **plonk:** suffix raw added to plonk API
  3014  - **plonk:** setup, prove, verify take frontend.Circuit as witness
  3015  - **plonk:** prove, verifiy now return error
  3016  
  3017  ### Style
  3018  - simplified findUnsolvedVariable in SparseR1CS
  3019  - untrack to_delete_bn256.go (used for printing stuff)
  3020  - removed comments of the previous fft in groth16 prove
  3021  - **plonk:** removed comments (used for testing) in setup
  3022  
  3023  ### Test
  3024  - added frontend and backend fuzz.go, go-fuzz compatible format
  3025  - added cs.Println must not panic base test
  3026  
  3027  ### Pull Requests
  3028  - Merge pull request [#94](https://github.com/consensys/gnark/issues/94) from ConsenSys/develop
  3029  - Merge pull request [#93](https://github.com/consensys/gnark/issues/93) from ConsenSys/hotfix/fft_groth16
  3030  - Merge pull request [#92](https://github.com/consensys/gnark/issues/92) from ConsenSys/feat/fiat_shamir
  3031  - Merge pull request [#89](https://github.com/consensys/gnark/issues/89) from ConsenSys/fix/eddsa
  3032  - Merge pull request [#86](https://github.com/consensys/gnark/issues/86) from ConsenSys/docs/godoc
  3033  - Merge pull request [#65](https://github.com/consensys/gnark/issues/65) from ConsenSys/refactor/gnark-crypto
  3034  - Merge pull request [#64](https://github.com/consensys/gnark/issues/64) from ConsenSys/feat/plonk_prover
  3035  - Merge pull request [#58](https://github.com/consensys/gnark/issues/58) from ConsenSys/feat/fft_cosets
  3036  - Merge pull request [#57](https://github.com/consensys/gnark/issues/57) from ConsenSys/feature/gnarkd
  3037  - Merge pull request [#53](https://github.com/consensys/gnark/issues/53) from ConsenSys/serialization/witness
  3038  - Merge pull request [#51](https://github.com/consensys/gnark/issues/51) from ConsenSys/eddsa_cleanup
  3039  - Merge pull request [#46](https://github.com/consensys/gnark/issues/46) from ConsenSys/experimental/solidity
  3040  - Merge pull request [#48](https://github.com/consensys/gnark/issues/48) from ConsenSys/issue_45
  3041  
  3042  
  3043  <a name="v0.3.8"></a>
  3044  ## [v0.3.8] - 2020-12-23
  3045  
  3046  <a name="v0.3.7"></a>
  3047  ## [v0.3.7] - 2020-12-22
  3048  
  3049  <a name="v0.3.6"></a>
  3050  ## [v0.3.6] - 2020-12-22
  3051  ### Features
  3052  - **profiling:** Adds a way to print the number of constraints in the circuit
  3053  
  3054  ### Fix
  3055  - **typo:** insertion -> assertion
  3056  
  3057  ### R1cs
  3058  - implemented serialization interfaces
  3059  
  3060  ### Serialization
  3061  - using gurvy.Encoder and gurvy.Decoder. Added benchmark and assert helpers
  3062  - added proving key
  3063  - added for fft domain
  3064  - replaced some int by uint64 to avoid ambiguity in serialization protocols
  3065  - gnark object implement io.ReaderFrom and io.WriterTo
  3066  
  3067  ### Wip
  3068  - updating to latest gurvy
  3069  
  3070  ### Pull Requests
  3071  - Merge pull request [#42](https://github.com/consensys/gnark/issues/42) from ConsenSys/linearexp
  3072  - Merge pull request [#41](https://github.com/consensys/gnark/issues/41) from AlexandreBelling/feature/cs-nb-constraints
  3073  - Merge pull request [#38](https://github.com/consensys/gnark/issues/38) from ConsenSys/hotfix/discard_secret
  3074  
  3075  
  3076  <a name="v0.3.5"></a>
  3077  ## [v0.3.5] - 2020-10-19
  3078  
  3079  <a name="v0.3.4"></a>
  3080  ## [v0.3.4] - 2020-10-19
  3081  
  3082  <a name="v0.3.3"></a>
  3083  ## [v0.3.3] - 2020-09-23
  3084  
  3085  <a name="v0.3.1"></a>
  3086  ## [v0.3.1] - 2020-09-22
  3087  
  3088  <a name="v0.3.0"></a>
  3089  ## [v0.3.0] - 2020-09-22
  3090  
  3091  <a name="v0.3.0-alpha"></a>
  3092  ## [v0.3.0-alpha] - 2020-09-15
  3093  ### Backend
  3094  - interface to big.Int added minimalist test
  3095  - moved  generated curve specific backends into internal to forbid library user to directly import it
  3096  
  3097  ### Backends
  3098  - restored bw761 groth16 code generation path
  3099  
  3100  ### Circleci
  3101  - added step to ensure no generated files are modified by hand
  3102  - change cache key
  3103  - new workflow with more insight on unit tests
  3104  
  3105  ### Encoding
  3106  - switch from gob to cbor
  3107  
  3108  ### Frontend
  3109  - remove Context object, mostly used as a curve.ID wrapper
  3110  - added frontend.Compile benchmark for reference in further modifications
  3111  - allocate slice capacity when known
  3112  - added Circuit and CircuitVariable interfaces. Can now assign values with compiler check (no more strings). Rollup tests OK
  3113  
  3114  ### Gnark
  3115  - fixing few staticcheck warnings
  3116  - input file is now json. accepts 0x hex and decimal repr for assignment to a circuit
  3117  
  3118  ### Groth16
  3119  - updated to latest gurvy and added go routines in prover workflow. WIP need to be benchmarked
  3120  - reorganize Setup to use gurvy.BatchScalarMultiplication api
  3121  - prover, removed appends in prover that resulted in array copies
  3122  - added test for reference circuit (non short path)
  3123  - restored reference circuit for benchmarking purposes
  3124  - fix possible starvation issue in Prover -- there existed a world were go routine may wait for ever for the tokenn causing a timeout in tests
  3125  
  3126  ### R1cs
  3127  - added GetNbCoefficients and GetNbWires to interface
  3128  - Solve takes typed arguments
  3129  
  3130  ### Refactor
  3131  - remove Gadget suffix from many structs
  3132  - checkpoint
  3133  
  3134  ### Wip
  3135  - investigating millerloop result in snark circuit
  3136  - frontend.NewConstraintSystem is now private. ToR1CS() is private. test circuits moved to internal. gadgets and test circuits use frontend.Compile()
  3137  
  3138  ### Pull Requests
  3139  - Merge pull request [#26](https://github.com/consensys/gnark/issues/26) from ConsenSys/gadget_cleanup
  3140  - Merge pull request [#23](https://github.com/consensys/gnark/issues/23) from ConsenSys/tagless_refactor
  3141  
  3142  
  3143  <a name="v0.2.1-alpha"></a>
  3144  ## [v0.2.1-alpha] - 2020-06-18
  3145  
  3146  <a name="v0.2.0-alpha"></a>
  3147  ## [v0.2.0-alpha] - 2020-06-05
  3148  ### Backend
  3149  - cleaned asserts
  3150  - generating backend/static/CURVE submodules from same template
  3151  - remove curve generated code, keep only build tag version
  3152  
  3153  ### Circleci
  3154  - added missing goimports indirect dependency
  3155  - run go generate to ensure repo consistency in CI
  3156  - test full repo with each build tag
  3157  
  3158  ### Cmd
  3159  - removed wip export command for now
  3160  
  3161  ### Examples
  3162  - back at root of repo
  3163  
  3164  ### Frontend
  3165  - fixed division-by-constant constraint
  3166  
  3167  ### Gnark
  3168  - integration test now uses test circuits defined in internal/tests/circuits
  3169  
  3170  ### Groth16
  3171  - fix reference to large reference test circuit in groth16
  3172  - remove assertion when checking number of inputs and fix missing curve in testdata path
  3173  - add point check infinity in assert
  3174  - VerifyingKey stores K in Affine, not Jacobian. Fixes [#18](https://github.com/consensys/gnark/issues/18)
  3175  
  3176  ### Integration_test
  3177  - be nice with circleci, do not add large circuit into integration test
  3178  
  3179  ### Refactor
  3180  - separated frontend and backend, code generate typed backend and tests for groth16. yes that's a big commit
  3181  
  3182  ### Templates
  3183  - minor code cleaning
  3184  
  3185  ### WIP
  3186  - using big.Int in frontend to avoid build tags
  3187  
  3188  ### Pull Requests
  3189  - Merge pull request [#22](https://github.com/consensys/gnark/issues/22) from ConsenSys/refactor
  3190  - Merge pull request [#21](https://github.com/consensys/gnark/issues/21) from Mikerah/patch-1
  3191  
  3192  
  3193  <a name="v0.1.0-alpha"></a>
  3194  ## v0.1.0-alpha - 2020-03-06
  3195  ### Pull Requests
  3196  - Merge pull request [#11](https://github.com/consensys/gnark/issues/11) from nkeywal/exGadget
  3197  - Merge pull request [#8](https://github.com/consensys/gnark/issues/8) from ConsenSys/internal-curve-tests
  3198  - Merge pull request [#7](https://github.com/consensys/gnark/issues/7) from ConsenSys/develop Fixed [#6](https://github.com/consensys/gnark/issues/6)
  3199  - Merge pull request [#5](https://github.com/consensys/gnark/issues/5) from ConsenSys/go1.14_deps
  3200  
  3201  
  3202  [v0.11.0]: https://github.com/consensys/gnark/compare/v0.10.0...v0.11.0
  3203  [v0.10.0]: https://github.com/consensys/gnark/compare/v0.9.1...v0.10.0
  3204  [v0.9.1]: https://github.com/consensys/gnark/compare/v0.9.0...v0.9.1
  3205  [v0.9.0]: https://github.com/consensys/gnark/compare/v0.9.0-alpha...v0.9.0
  3206  [v0.9.0-alpha]: https://github.com/consensys/gnark/compare/v0.8.1...v0.9.0-alpha
  3207  [v0.8.1]: https://github.com/consensys/gnark/compare/v0.8.0...v0.8.1
  3208  [v0.8.0]: https://github.com/consensys/gnark/compare/v0.7.1...v0.8.0
  3209  [v0.7.1]: https://github.com/consensys/gnark/compare/v0.6.5...v0.7.1
  3210  [v0.6.5]: https://github.com/consensys/gnark/compare/v0.7.0...v0.6.5
  3211  [v0.7.0]: https://github.com/consensys/gnark/compare/v0.6.4...v0.7.0
  3212  [v0.6.4]: https://github.com/consensys/gnark/compare/v0.6.3...v0.6.4
  3213  [v0.6.3]: https://github.com/consensys/gnark/compare/v0.6.2...v0.6.3
  3214  [v0.6.2]: https://github.com/consensys/gnark/compare/v0.6.1...v0.6.2
  3215  [v0.6.1]: https://github.com/consensys/gnark/compare/v0.6.0...v0.6.1
  3216  [v0.6.0]: https://github.com/consensys/gnark/compare/v0.5.2...v0.6.0
  3217  [v0.5.2]: https://github.com/consensys/gnark/compare/v0.5.1...v0.5.2
  3218  [v0.5.1]: https://github.com/consensys/gnark/compare/v0.5.0...v0.5.1
  3219  [v0.5.0]: https://github.com/consensys/gnark/compare/v0.4.0...v0.5.0
  3220  [v0.4.0]: https://github.com/consensys/gnark/compare/v0.3.8...v0.4.0
  3221  [v0.3.8]: https://github.com/consensys/gnark/compare/v0.3.7...v0.3.8
  3222  [v0.3.7]: https://github.com/consensys/gnark/compare/v0.3.6...v0.3.7
  3223  [v0.3.6]: https://github.com/consensys/gnark/compare/v0.3.5...v0.3.6
  3224  [v0.3.5]: https://github.com/consensys/gnark/compare/v0.3.4...v0.3.5
  3225  [v0.3.4]: https://github.com/consensys/gnark/compare/v0.3.3...v0.3.4
  3226  [v0.3.3]: https://github.com/consensys/gnark/compare/v0.3.1...v0.3.3
  3227  [v0.3.1]: https://github.com/consensys/gnark/compare/v0.3.0...v0.3.1
  3228  [v0.3.0]: https://github.com/consensys/gnark/compare/v0.3.0-alpha...v0.3.0
  3229  [v0.3.0-alpha]: https://github.com/consensys/gnark/compare/v0.2.1-alpha...v0.3.0-alpha
  3230  [v0.2.1-alpha]: https://github.com/consensys/gnark/compare/v0.2.0-alpha...v0.2.1-alpha
  3231  [v0.2.0-alpha]: https://github.com/consensys/gnark/compare/v0.1.0-alpha...v0.2.0-alpha