Skip to content

Commit

Permalink
Merge #595: Bump MSRV to 1.48
Browse files Browse the repository at this point in the history
7bba2bc secp256k1-sys: Remove custom implementations of Eq, Ord and friends (Tobin C. Harding)
a815272 secp256k1: Remove custom implementations of Eq, Ord and friends (Tobin C. Harding)
ee83c3a Bump MSRV to 1.48 (Tobin C. Harding)
0e2579f Fix release date in changelogs (Tobin C. Harding)

Pull request description:

  As per ecosystem wide change, bump the MSRV of both crates to 1.48

  Patch 1 is a typo fix to the changelog, I don't see changelogs cached on crates.io in any way so this fix should be able to quietly go in.

  Note before this is applied there is no mention of the MSRV in secp256k1-sys, was that intentional? If not, with this applied, we have a mention in the readme.

  CI needs some more fixes (wasm job) but because patching CI often leads to me doing 300 pushes I'm leaving it to a separate PR.

ACKs for top commit:
  apoelstra:
    ACK 7bba2bc

Tree-SHA512: 4e575c7e4f7d4a36e024eee407f8a757ad35be7225d8b8de71d57248c40801b05aeb12abf27ea9ce63215561527c8edb4d1807b09388b9d1dcdb52f453cd0981
  • Loading branch information
apoelstra committed Mar 31, 2023
2 parents 11b8786 + 7bba2bc commit 1ad3107
Show file tree
Hide file tree
Showing 13 changed files with 25 additions and 73 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
rust: [stable, beta, nightly, 1.41.1]
rust: [stable, beta, nightly, 1.48.0]
steps:
- name: Checkout Crate
uses: actions/checkout@v2
Expand Down
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# 0.27.0 - 2023-13-15
# Unreleased

* Bump MSRV to 1.48
* Remove implementations of `PartialEq`, `Eq`, `PartialOrd`, `Ord`, and `Hash` from the
`impl_array_newtype` macro. Users will now need to derive these traits if they are wanted.

# 0.27.0 - 2023-03-15

* [Depend on newly release `bitcoin_hashes` v0.12](https://github.com/rust-bitcoin/rust-secp256k1/pull/588).
* [Implement `Debug` trait for `Scalar` type](https://github.com/rust-bitcoin/rust-secp256k1/pull/578).
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Contributions to this library are welcome. A few guidelines:
* Any breaking changes must have an accompanied entry in CHANGELOG.md
* No new dependencies, please.
* No crypto should be implemented in Rust, with the possible exception of hash functions. Cryptographic contributions should be directed upstream to libsecp256k1.
* This library should always compile with any combination of features on **Rust 1.41.1**.
* This library should always compile with any combination of features on **Rust 1.48.0**.

### Githooks

Expand Down
2 changes: 1 addition & 1 deletion clippy.toml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
msrv = "1.41.1"
msrv = "1.48.0"
5 changes: 0 additions & 5 deletions contrib/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@ if cargo --version | grep nightly; then
NIGHTLY=true
fi

if cargo --version | grep "1\.41"; then
# 1.8.x uses constfns which aren't supported in 1.41
cargo update -p half --precise 1.7.0
fi

# Test if panic in C code aborts the process (either with a real panic or with SIGILL)
cargo test -- --ignored --exact 'tests::test_panic_raw_ctx_should_terminate_abnormally' 2>&1 | tee /dev/stderr | grep "SIGILL\\|panicked at '\[libsecp256k1\]"

Expand Down
6 changes: 5 additions & 1 deletion secp256k1-sys/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# 0.8.1 - 2023-13-16
# Unreleased

* Bump MSRV to 1.48

# 0.8.1 - 2023-03-16

* [Implement `insecure-erase`](https://github.com/rust-bitcoin/rust-secp256k1/pull/582).

Expand Down
3 changes: 3 additions & 0 deletions secp256k1-sys/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ If you want to compile this library without using the bundled symbols (which may
be required for integration into other build systems), you can do so by adding
`--cfg=rust_secp_no_symbol_renaming'` to your `RUSTFLAGS` variable.

## Minimum Supported Rust Version

This library should always compile with any combination of features on **Rust 1.48.0**.
4 changes: 4 additions & 0 deletions secp256k1-sys/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ impl SchnorrSigExtraParams {
/// Library-internal representation of a Secp256k1 public key
#[repr(C)]
#[derive(Copy, Clone)]
#[cfg_attr(fuzzing, derive(PartialEq, Eq, PartialOrd, Ord, Hash))]
pub struct PublicKey([c_uchar; 64]);
impl_array_newtype!(PublicKey, c_uchar, 64);
impl_raw_debug!(PublicKey);
Expand Down Expand Up @@ -227,6 +228,7 @@ impl core::hash::Hash for PublicKey {
/// Library-internal representation of a Secp256k1 signature
#[repr(C)]
#[derive(Copy, Clone)]
#[cfg_attr(fuzzing, derive(PartialEq, Eq, PartialOrd, Ord, Hash))]
pub struct Signature([c_uchar; 64]);
impl_array_newtype!(Signature, c_uchar, 64);
impl_raw_debug!(Signature);
Expand Down Expand Up @@ -315,6 +317,7 @@ impl core::hash::Hash for Signature {

#[repr(C)]
#[derive(Copy, Clone)]
#[cfg_attr(fuzzing, derive(PartialEq, Eq, PartialOrd, Ord, Hash))]
pub struct XOnlyPublicKey([c_uchar; 64]);
impl_array_newtype!(XOnlyPublicKey, c_uchar, 64);
impl_raw_debug!(XOnlyPublicKey);
Expand Down Expand Up @@ -404,6 +407,7 @@ impl core::hash::Hash for XOnlyPublicKey {

#[repr(C)]
#[derive(Copy, Clone)]
#[cfg_attr(fuzzing, derive(PartialEq, Eq, PartialOrd, Ord, Hash))]
pub struct KeyPair([c_uchar; 96]);
impl_array_newtype!(KeyPair, c_uchar, 96);
impl_raw_debug!(KeyPair);
Expand Down
36 changes: 0 additions & 36 deletions secp256k1-sys/src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,42 +45,6 @@ macro_rules! impl_array_newtype {
}
}

// We cannot derive these traits because Rust 1.41.1 requires `std::array::LengthAtMost32`.

#[cfg(fuzzing)]
impl PartialEq for $thing {
#[inline]
fn eq(&self, other: &$thing) -> bool {
&self[..] == &other[..]
}
}

#[cfg(fuzzing)]
impl Eq for $thing {}

#[cfg(fuzzing)]
impl core::hash::Hash for $thing {
fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
(&self[..]).hash(state)
}
}

#[cfg(fuzzing)]
impl PartialOrd for $thing {
#[inline]
fn partial_cmp(&self, other: &$thing) -> Option<core::cmp::Ordering> {
self[..].partial_cmp(&other[..])
}
}

#[cfg(fuzzing)]
impl Ord for $thing {
#[inline]
fn cmp(&self, other: &$thing) -> core::cmp::Ordering {
self[..].cmp(&other[..])
}
}

impl AsRef<[$ty; $len]> for $thing {
#[inline]
/// Gets a reference to the underlying array
Expand Down
1 change: 1 addition & 0 deletions secp256k1-sys/src/recovery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ use core::fmt;
/// Library-internal representation of a Secp256k1 signature + recovery ID
#[repr(C)]
#[derive(Copy, Clone)]
#[cfg_attr(fuzzing, derive(PartialEq, Eq, PartialOrd, Ord, Hash))]
pub struct RecoverableSignature([c_uchar; 65]);
impl_array_newtype!(RecoverableSignature, c_uchar, 65);

Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ impl<T: hashes::sha256t::Tag> ThirtyTwoByteHash for hashes::sha256t::Hash<T> {
}

/// A (hashed) message input to an ECDSA signature.
#[derive(Copy, Clone)]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Message([u8; constants::MESSAGE_SIZE]);
impl_array_newtype!(Message, u8, constants::MESSAGE_SIZE);
impl_pretty_debug!(Message);
Expand Down
25 changes: 0 additions & 25 deletions src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,6 @@
#[macro_export]
macro_rules! impl_array_newtype {
($thing:ident, $ty:ty, $len:expr) => {
// We cannot derive these traits because Rust 1.41.1 requires `std::array::LengthAtMost32`.

impl PartialEq for $thing {
#[inline]
fn eq(&self, other: &$thing) -> bool { &self[..] == &other[..] }
}

impl Eq for $thing {}

impl core::hash::Hash for $thing {
fn hash<H: core::hash::Hasher>(&self, state: &mut H) { (&self[..]).hash(state) }
}

impl PartialOrd for $thing {
#[inline]
fn partial_cmp(&self, other: &$thing) -> Option<core::cmp::Ordering> {
self[..].partial_cmp(&other[..])
}
}

impl Ord for $thing {
#[inline]
fn cmp(&self, other: &$thing) -> core::cmp::Ordering { self[..].cmp(&other[..]) }
}

impl AsRef<[$ty; $len]> for $thing {
#[inline]
/// Gets a reference to the underlying array
Expand Down
2 changes: 1 addition & 1 deletion src/schnorr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use crate::{
};

/// Represents a schnorr signature.
#[derive(Copy, Clone)]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Signature([u8; constants::SCHNORR_SIGNATURE_SIZE]);
impl_array_newtype!(Signature, u8, constants::SCHNORR_SIGNATURE_SIZE);
impl_pretty_debug!(Signature);
Expand Down

0 comments on commit 1ad3107

Please sign in to comment.