Merge rust-bitcoin/rust-secp256k1#473: Create configuration conditional "bench"

a431edb86a Create configuration conditional bench (Tobin C. Harding)
2a1c9ab4b8 Remove rand-std feature from unstable (Tobin C. Harding)
ddc108c117 Increase heading size (Tobin C. Harding)
596adff8ba Remove unneeded whitespace (Tobin C. Harding)

Pull request description:

  As we did in rust-bitcoin [0] create a configuration conditional `bench`
  that we can use to guard bench mark code. This has the benefit of
  making our features additive i.e., we can now test with `--all-features`
  with a stable toolchain (currently this fails because of our use of the
  `test` crate).

  Please note, this patch maintains the current behaviour of turning on
  the `recovery` and `rand-std` features when benching although I was
  unable to ascertain why this is needed.

  [0] - https://github.com/rust-bitcoin/rust-bitcoin/pull/1092

ACKs for top commit:
  sanket1729:
    ACK a431edb86a.
  apoelstra:
    ACK a431edb86a

Tree-SHA512: 913f5fbe0da08ec649081bf237c1d31cee58dacdac251d6030afabb99d455286c6d1dbdb6b2ac892b5d3c24584933254d1cfeec8e12f531cc420bd9d455a6531
This commit is contained in:
Andrew Poelstra 2022-07-19 21:10:50 +00:00
commit 71b47d1273
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
7 changed files with 19 additions and 12 deletions

View File

@ -18,7 +18,6 @@ features = [ "rand", "rand-std", "serde", "bitcoin_hashes", "recovery", "global-
rustdoc-args = ["--cfg", "docsrs"]
[features]
unstable = ["recovery", "rand-std"]
default = ["std"]
std = ["alloc", "secp256k1-sys/std"]
# allow use of Secp256k1::new and related API that requires an allocator

View File

@ -2,7 +2,7 @@
[Full documentation](https://docs.rs/secp256k1/)
### rust-secp256k1
## rust-secp256k1
`rust-secp256k1` is a wrapper around [libsecp256k1](https://github.com/bitcoin-core/secp256k1),
a C library by Pieter Wuille for producing ECDSA signatures using the SECG curve
@ -33,6 +33,11 @@ git config --local core.hooksPath githooks/
Alternatively add symlinks in your `.git/hooks` directory to any of the githooks we provide.
### Benchmarks
We use a custom Rust compiler configuration conditional to guard the bench mark code. To run the
bench marks use: `RUSTFLAGS='--cfg=bench' cargo +nightly bench --features=recovery`.
## Fuzzing
If you want to fuzz this library, or any library which depends on it, you will

View File

@ -98,9 +98,11 @@ if [ "$DO_ASAN" = true ]; then
cargo run --release --features=alloc --manifest-path=./no_std_test/Cargo.toml | grep -q "Verified alloc Successfully"
fi
# Bench
if [ "$DO_BENCH" = true ]; then
cargo bench --all --features="unstable"
# Bench if told to, only works with non-stable toolchain (nightly, beta).
if [ "$DO_BENCH" = true ]
then
RUSTFLAGS='--cfg=bench' cargo bench --features=recovery
fi
exit 0

View File

@ -286,7 +286,7 @@ mod tests {
}
}
#[cfg(all(test, feature = "unstable"))]
#[cfg(bench)]
mod benches {
use test::{Bencher, black_box};

View File

@ -452,8 +452,7 @@ mod tests {
}
}
#[cfg(all(test, feature = "unstable"))]
#[cfg(bench)]
mod benches {
use rand::{thread_rng, RngCore};
use test::{Bencher, black_box};

View File

@ -2433,7 +2433,7 @@ mod test {
}
}
#[cfg(all(test, feature = "unstable"))]
#[cfg(bench)]
mod benches {
use test::Bencher;
use std::collections::BTreeSet;

View File

@ -155,14 +155,16 @@
#![allow(clippy::missing_safety_doc)]
#![cfg_attr(all(not(test), not(feature = "std")), no_std)]
#![cfg_attr(all(test, feature = "unstable"), feature(test))]
// Experimental features we need.
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(bench, feature(test))]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(any(test, feature = "std"))]
extern crate core;
#[cfg(all(test, feature = "unstable"))]
#[cfg(bench)]
extern crate test;
#[macro_use]
@ -1060,7 +1062,7 @@ mod tests {
}
}
#[cfg(all(test, feature = "unstable"))]
#[cfg(bench)]
mod benches {
use test::{Bencher, black_box};