Skip to content

elliptic-curve: add dev::bench_projective! macro#2177

Merged
tarcieri merged 1 commit into
masterfrom
elliptic-curve/bench-projective-dev-macro
Jan 7, 2026
Merged

elliptic-curve: add dev::bench_projective! macro#2177
tarcieri merged 1 commit into
masterfrom
elliptic-curve/bench-projective-dev-macro

Conversation

@tarcieri

@tarcieri tarcieri commented Jan 7, 2026

Copy link
Copy Markdown
Member

Writes criterion benchmarks for ProjectivePoint using a macro which has been tested with both criterion v0.7 and v0.8, which means we can release on the former (for MSRV 1.85 compat) and then later upgrade to to the latter in a non-breaking manner

Writes `criterion` benchmarks for `ProjectivePoint` using a macro which
has been tested with both `criterion` v0.7 and v0.8, which means we can
release on the former (for MSRV 1.85 compat) and then later upgrade to
to the latter in a non-breaking manner
@tarcieri tarcieri merged commit f3f7feb into master Jan 7, 2026
14 checks passed
@tarcieri tarcieri deleted the elliptic-curve/bench-projective-dev-macro branch January 7, 2026 15:01
tarcieri added a commit to RustCrypto/elliptic-curves that referenced this pull request Jan 7, 2026
Uses the `elliptic_curve::bench_projective!` macro introduced in
RustCrypto/traits#2177 to run a set of benchmarks against
`ProjectivePoint`, including point addition, negation, and scalar
multiplication.

After this we can roll out all of the benchmark macros added to `bp256`
to the curves which currently don't have any, and use the macros to
replace some of the existing tests in the ones that do.
tarcieri added a commit to RustCrypto/elliptic-curves that referenced this pull request Jan 7, 2026
Uses the `elliptic_curve::bench_projective!` macro introduced in
RustCrypto/traits#2177 to run a set of benchmarks against
`ProjectivePoint`, including point addition, negation, and scalar
multiplication.

After this we can roll out all of the benchmark macros added to `bp256`
to the curves which currently don't have any, and use the macros to
replace some of the existing tests in the ones that do.
@tarcieri tarcieri mentioned this pull request Jun 23, 2026
tarcieri added a commit that referenced this pull request Jun 23, 2026
## Added
- Implement `PartialEq + Eq` for `NonIdentity` and `NonZeroScalar` (#1834)
- Implement `Zeroize` for `NonIdentity` (#1832)
- `NonIdentity::mul_by_generator()` (#1833)
- Implement `Mul<&NonZeroScalar>` for `NonIdentity` (#1852)
- Implement `Mul<NonIdentity>` for `NonZeroScalar` (#1855)
- Expose `AffineCoordinates::y` (#1891)
- Scalar macros originall from `primeorder` (#1894)
- Implement `BatchNormalize` for `NonIdentity` (#1896)
- Re-export `group::Curve` as `CurveGroup` (#1902)
- `NonIdentity`/`NonZeroScalar` casting methods (#1903)
- `AffineCoordinates::from_coordinates` (#1996)
- `getrandom` feature (#2085)
- `ctutils` traits to `arithmetic` bounds (#2166)
- `Retrieve` bound for `C::Scalar` (#2169)
- `crypto_common::Generate` support (#2173, #2208)
- Implement `crypto_common::TryKeyInit` for `SecretKey<C>` (#2174)
- `dev::bench_projective!` macro (#2177)
- Provide `Sec1Point::from/to_sec1_bytes` (#2221)
- Implement `From<SecretKey<C>>` for `PublicKey<C>` (#2247)
- `SecretKey::diffie_hellman` (#2248)
- `LinearCombination::lincomb_vartime` method (#2286)
- `ops::MulVartime` trait and bound `Scalar` (#2379)
- `ops::MulByGeneratorVartime` trait ([#2381])
- `SecretKey::from_pem` (#2387)
- `SecretKey::from_der` (#2408)
- `hazmat` module with `FieldArithmetic` trait (#2458)
- `Double::double_in_place` (#2464)

## Changed
- Migrate from `generic-array` to `hybrid-array` (#1462)
- Rename `LinearCombinationExt` => `LinearCombination`; replacing old
  trait (#1501)
- Edition changed to 2024 and MSRV bumped to 1.85 (#1759)
- Make `SecretKey::new` fallible (#1804)
- Replace `ops::Invert` trait with `crypto_bigint::Invert` (#1839)
- Rename `SecretKey::new` => `::from_scalar` (#1893)
- Replace `Reduce` trait with `crypto_bigint::Reduce` (#1949)
- Bump `serdect` dependency to v0.4 (#1978)
- Use `crypto_bigint::Odd` to represent `Curve::ORDER` (#2006)
- Bound `Curve::Uint` on `Unsigned` (#2007)
- Rename `ScalarPrimitive` => `ScalarValue` (#2008)
- Accept mixed-case hex-encoded strings in `FromStr` impl for
  `ScalarValue` (#2037)
- Deprecate `SecretKey::random` (#2086)
- Move `MockCurve` to `dev::mock_curve` (#2176)
- Bump `rand_core` to v0.10 (#2250)
- Rename `EncodedPoint` => `Sec1Point` (#2264)
- Bump `crypto-bigint` to v0.7 (#2330)
- Bump `digest` to v0.11 (#2331)
- Bump `sec1` to v0.8 (#2339)
- Bump `hkdf` dependency to v0.13 (#2349)
- Use `*Vartime` as a suffix in names (#2378)
- Bump `pkcs8` to v0.11 (#2397)
- Bump `ff` and `group` to v0.14 (#2430, #2431)
- Simplify `BatchInvert` trait (#2455)
- Replace `FieldBytesEncoding` trait with `C::FIELD_ENDIANNESS` (#2457)
- Move `Double` to `ops` module (#2465)

## Removed
- `hazmat` feature (#1599)
- `hash2curve` and `oprf` modules: moved to same-name crates (#1929)
- PKCS#8 blanket impls for SEC1 private key traits (#1930)
- `ShrAssign` bound on `Scalar`s (#1938)
- JWK support: migrated to `jose-jwk` crate (#1963)
- `weierstrass` module (#2005)
- `bits` feature (#2417)

## Fixed
- Include curve OID in SEC1 private keys (#1707, #1933)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant