* BW scalar field is now the same as BLS base field
* add poseidon
* add merkle tree builder
* poseidon rust bindings
* implement rust bindings
* add doc comments
* remove global poseidon constants
* add custom constants API and script for generating new constants
* add the rest of the curves for poseidon
* add all the curves for real
* misname bls12-377
* typo
* partial rounds
* minor fixes
* small tweak for big performance boost
* add CHK_INIT_IF_RETURN
---------
Co-authored-by: DmytroTym <dmytrotym1@gmail.com>
* BW scalar field is now the same as BLS base field
* add poseidon
* add merkle tree builder
* poseidon rust bindings
* implement rust bindings
* add doc comments
* remove global poseidon constants
* add custom constants API and script for generating new constants
* add the rest of the curves for poseidon
* add all the curves for real
* misname bls12-377
* typo
* partial rounds
* minor fixes
* small tweak for big performance boost
* add CHK_INIT_IF_RETURN
---------
Co-authored-by: DmytroTym <dmytrotym1@gmail.com>
If domain has size 2^17, NTT on size 2^16 coset generated by `-1` fails. This happens due to index in `BatchMulKernel` overflowing, fixed by using `long` instead of `int`.
Release v1.1.0:
- Updated examples to use the new API
- [c++] Curve specific functions using macros
- [c++] Consolidate MSM and Batch MSM to single function
- [CI] Add codespell in CI
- [FIX] Windows rust build
- [FIX] G2 on rust bindings
- [FIX] Bw6 using bls12377
- Make the curve config's omegas_count conditionally accessed when creating fields
- Remove the extern C function that returns a UDT containing non-POD types and replace it with a default_config function on the Rust bindings side
refactor: consolidate msm and batch-msm implementations to one function
- now batch-msm support parallel BM accumulation in addition to large triangle accumulation
For exposed functions that are curve-specific, the expected symbol is
based on the curve name.
For example MSMCuda becomes bn254MSMCuda for CURVE=bn254.
currently it is implemented via objcopy by redefining symbols after
compilation.
This PR modifies the function names at preprocessing time instead.
For shared objects, objcopy doesn't work (since it cannot modify the
dynsym section).
* Safer smart pointer that covers host and device
* Fixed MSM test
* Scalars and points in MSM are non-mutable in all cases
* change mont API (#332)
* Some Rust doc comments
---------
Co-authored-by: ChickenLover <Romangg81@gmail.com>