# 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>>` instead of `Arc>>`. ### 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>` instead of `Box>`. - `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.