bellman 0.14.0

zk-SNARK library
Documentation
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to Rust's notion of
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.14.0] - 2023-03-20
### Changed
- MSRV bumped to `1.60.0`
- Bumped dependencies to `ff 0.13`, `group 0.13`, `pairing 0.23`.

## [0.13.1] - 2022-07-05
### Added
- `bellman::groth16::batch::Verifier` now has a `verify_multicore` method (when
  the `multicore` feature is enabled) which will internally use the global rayon
  thread pool to parallelize the verification of a batch of proofs.

### Changed
- The `multicore` feature now enables the `getrandom` feature of the `rand_core`
  crate.

## [0.13.0] - 2022-05-06
### Added
- `bellman::multiexp::Exponent`

### Changed
- `bellman::multiexp::multiexp` now takes exponents as `Arc<Vec<Exponent<_>>>`
  instead of `Arc<Vec<FieldBits<_>>>`.

### Fixed
- Migrating from `bitvec 0.22` to `bitvec 1.0` caused a performance regression
  in `bellman::multiexp::multiexp`, slowing down proof creation. Some of that
  performance has been regained by refactoring `multiexp`.

## [0.12.0] - 2022-05-04
### Changed
- MSRV bumped to `1.56.0`
- Bumped dependencies to `ff 0.12`, `group 0.12`, `pairing 0.22`, `bitvec 1.0`, `blake2s_simd 1.0`.

## [0.11.2] - 2022-05-04
### Fixed
- Groth16 prover now correctly computes query densitites with respect to linear
  combinations that contain coefficients of zero.
- Fixed an infinite recursion bug in the `Display` implementation for `SynthesisError`.

## [0.11.1] - 2021-09-09
### Fixed
- Compiling with `--no-default-features --features groth16` (i.e. disabling the
  `multicore` feature flag) works again.

### Changed
- `bellman::multicore::Waiter::wait` now consumes `self` (better reflecting the
  fact that you can't wait on the same result twice), instead of taking `&self`
  with `multicore` enabled and `&mut self` with multicore disabled.

## [0.11.0] - 2021-09-08
### Added
- `bellman` now uses `rayon` for multithreading when the (default) `multicore`
  feature flag is enabled. This means that, when this flag is enabled, the
  `RAYON_NUM_THREADS` environment variable controls the number of threads that
  `bellman` will use. The default, which has not changed, is to use the same
  number of threads as logical CPUs.
- `bellman::multicore::Waiter`
- `Default` bound for `bellman::multiexp::DensityTracker`.
- `Default` bound for `bellman::gadgets::test::TestConstraintSystem`.

### Changed
- Bumped dependencies to `ff 0.11`, `group 0.11`, `pairing 0.21`.
- `bellman::multicore` has migrated from `crossbeam` to `rayon`:
  - `bellman::multicore::Worker::compute` now returns
    `bellman::multicore::Waiter`.
  - `bellman::multiexp::multiexp` now returns
    `bellman::multicore::Waiter<Result<G, SynthesisError>>` instead of
    `Box<dyn Future<Item = G, Error = SynthesisError>>`.
  - `bellman::multicore::log_num_cpus` is renamed to `log_num_threads`.
- `bellman::multiexp::SourceBuilder::new` is renamed to `SourceBuilder::build`.

### Removed
- `bellman::multicore::WorkerFuture` (replaced by `Waiter`).

## [0.10.0] - 2021-06-04
### Added
- `bellman::groth16::batch::Verifier`, for performing batched Groth16 proof
  verification.

### Changed
- Bumped dependencies to `bitvec 0.22`, `ff 0.10`, `group 0.10`, `pairing 0.20`.
- MSRV is now 1.51.0.

## [0.9.0] - 2021-01-26
### Changed
- Bumped dependencies to `bitvec 0.20`, `ff 0.9`, `group 0.9`, `pairing 0.19`,
  `rand_core 0.6`.
- MSRV is now 1.47.0.