Bump MSRV to Rust version 1.56.1
Rust version 1.56.0 introduced edition 2021. Shortly afterwards, on October 21 2021 Rust version 1.56.1 was released. Debian stable is currently shipping `rustc 1.63.0`. Our stated MSRV policy is: In Debian stable and at least 2 years old. Therefore our MSRV policy is met by Rust version 1.56.1 and we can strat to bump our MSRV org wide. Start by bumping the `rust-bitcoin` and `hashes` MSRV to Rust 1.56.1, includes: - Update docs. - Update CI and remove pinning. - Update the build files and remove now stale cfg attributes rust_v_1_x for values less than the new MSRV. - Use new `IntoIterator` for arrays so we no longer need to allocate a vector to iterate. Links: - https://blog.rust-lang.org/2021/11/01/Rust-1.56.1.html - https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html - https://packages.debian.org/stable/rust/rustc
This commit is contained in:
parent
ba318f167a
commit
d9cc724187
|
@ -66,7 +66,7 @@ jobs:
|
||||||
run: ./contrib/test.sh
|
run: ./contrib/test.sh
|
||||||
|
|
||||||
MSRV:
|
MSRV:
|
||||||
name: Test - 1.48.0 toolchain
|
name: Test - 1.56.1 toolchain
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
@ -76,7 +76,7 @@ jobs:
|
||||||
- name: Checkout Toolchain
|
- name: Checkout Toolchain
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@stable
|
||||||
with:
|
with:
|
||||||
toolchain: "1.48.0"
|
toolchain: "1.56.1"
|
||||||
- name: Running test script
|
- name: Running test script
|
||||||
env:
|
env:
|
||||||
DO_FEATURE_MATRIX: true
|
DO_FEATURE_MATRIX: true
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<a href="https://github.com/rust-bitcoin/rust-bitcoin/blob/master/LICENSE"><img alt="CC0 1.0 Universal Licensed" src="https://img.shields.io/badge/license-CC0--1.0-blue.svg"/></a>
|
<a href="https://github.com/rust-bitcoin/rust-bitcoin/blob/master/LICENSE"><img alt="CC0 1.0 Universal Licensed" src="https://img.shields.io/badge/license-CC0--1.0-blue.svg"/></a>
|
||||||
<a href="https://github.com/rust-bitcoin/rust-bitcoin/actions?query=workflow%3AContinuous%20integration"><img alt="CI Status" src="https://github.com/rust-bitcoin/rust-bitcoin/workflows/Continuous%20integration/badge.svg"></a>
|
<a href="https://github.com/rust-bitcoin/rust-bitcoin/actions?query=workflow%3AContinuous%20integration"><img alt="CI Status" src="https://github.com/rust-bitcoin/rust-bitcoin/workflows/Continuous%20integration/badge.svg"></a>
|
||||||
<a href="https://docs.rs/bitcoin"><img alt="API Docs" src="https://img.shields.io/badge/docs.rs-bitcoin-green"/></a>
|
<a href="https://docs.rs/bitcoin"><img alt="API Docs" src="https://img.shields.io/badge/docs.rs-bitcoin-green"/></a>
|
||||||
<a href="https://blog.rust-lang.org/2020/02/27/Rust-1.48.0.html"><img alt="Rustc Version 1.48.0+" src="https://img.shields.io/badge/rustc-1.48.0%2B-lightgrey.svg"/></a>
|
<a href="https://blog.rust-lang.org/2020/02/27/Rust-1.56.1.html"><img alt="Rustc Version 1.56.1+" src="https://img.shields.io/badge/rustc-1.56.1%2B-lightgrey.svg"/></a>
|
||||||
<a href="https://gnusha.org/bitcoin-rust/"><img alt="Chat on IRC" src="https://img.shields.io/badge/irc-%23bitcoin--rust%20on%20libera.chat-blue"></a>
|
<a href="https://gnusha.org/bitcoin-rust/"><img alt="Chat on IRC" src="https://img.shields.io/badge/irc-%23bitcoin--rust%20on%20libera.chat-blue"></a>
|
||||||
<a href="https://github.com/model-checking/kani"><imp alt="kani" src="https://github.com/rust-bitcoin/rust-bitcoin/actions/workflows/kani.yaml/badge.svg"></a>
|
<a href="https://github.com/model-checking/kani"><imp alt="kani" src="https://github.com/rust-bitcoin/rust-bitcoin/actions/workflows/kani.yaml/badge.svg"></a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -69,7 +69,7 @@ For more information please see `./CONTRIBUTING.md`.
|
||||||
|
|
||||||
## Minimum Supported Rust Version (MSRV)
|
## Minimum Supported Rust Version (MSRV)
|
||||||
|
|
||||||
This library should always compile with any combination of features on **Rust 1.48.0**.
|
This library should always compile with any combination of features on **Rust 1.56.1**.
|
||||||
|
|
||||||
To build with the MSRV you will likely need to pin a bunch of dependencies, see `./contrib/test.sh`
|
To build with the MSRV you will likely need to pin a bunch of dependencies, see `./contrib/test.sh`
|
||||||
for the current list.
|
for the current list.
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
# unreleased
|
||||||
|
|
||||||
|
- Bump MSRV to Rust 1.56.1
|
||||||
|
|
||||||
# 0.31.1 - 2023-10-18
|
# 0.31.1 - 2023-10-18
|
||||||
|
|
||||||
- Bump MSRV to Rust 1.48.0 [#1729](https://github.com/rust-bitcoin/rust-bitcoin/pull/1729)
|
- Bump MSRV to Rust 1.48.0 [#1729](https://github.com/rust-bitcoin/rust-bitcoin/pull/1729)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const MSRV_MINOR: u64 = 48;
|
const MSRV_MINOR: u64 = 56;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let rustc = std::env::var_os("RUSTC");
|
let rustc = std::env::var_os("RUSTC");
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
use core::convert::{TryFrom, TryInto};
|
use core::convert::{TryFrom, TryInto};
|
||||||
use core::fmt;
|
use core::fmt;
|
||||||
#[cfg(rust_v_1_53)]
|
use core::ops::{
|
||||||
use core::ops::Bound;
|
Bound, Index, Range, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive,
|
||||||
use core::ops::{Index, Range, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive};
|
};
|
||||||
|
|
||||||
use hashes::Hash;
|
use hashes::Hash;
|
||||||
use secp256k1::{Secp256k1, Verification};
|
use secp256k1::{Secp256k1, Verification};
|
||||||
|
@ -653,7 +653,6 @@ delegate_index!(
|
||||||
RangeTo<usize>,
|
RangeTo<usize>,
|
||||||
RangeFull,
|
RangeFull,
|
||||||
RangeInclusive<usize>,
|
RangeInclusive<usize>,
|
||||||
RangeToInclusive<usize>
|
RangeToInclusive<usize>,
|
||||||
|
(Bound<usize>, Bound<usize>)
|
||||||
);
|
);
|
||||||
#[cfg(rust_v_1_53)]
|
|
||||||
delegate_index!((Bound<usize>, Bound<usize>));
|
|
||||||
|
|
|
@ -16,10 +16,8 @@ pub use self::primitive::*;
|
||||||
/// break invariants. Therefore auditing this module should be sufficient.
|
/// break invariants. Therefore auditing this module should be sufficient.
|
||||||
mod primitive {
|
mod primitive {
|
||||||
use core::convert::{TryFrom, TryInto};
|
use core::convert::{TryFrom, TryInto};
|
||||||
#[cfg(rust_v_1_53)]
|
|
||||||
use core::ops::Bound;
|
|
||||||
use core::ops::{
|
use core::ops::{
|
||||||
Index, Range, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive,
|
Bound, Index, Range, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::PushBytesError;
|
use super::PushBytesError;
|
||||||
|
@ -105,10 +103,9 @@ mod primitive {
|
||||||
RangeTo<usize>,
|
RangeTo<usize>,
|
||||||
RangeFull,
|
RangeFull,
|
||||||
RangeInclusive<usize>,
|
RangeInclusive<usize>,
|
||||||
RangeToInclusive<usize>
|
RangeToInclusive<usize>,
|
||||||
|
(Bound<usize>, Bound<usize>)
|
||||||
);
|
);
|
||||||
#[cfg(rust_v_1_53)]
|
|
||||||
delegate_index!((Bound<usize>, Bound<usize>));
|
|
||||||
|
|
||||||
impl Index<usize> for PushBytes {
|
impl Index<usize> for PushBytes {
|
||||||
type Output = u8;
|
type Output = u8;
|
||||||
|
|
|
@ -1845,7 +1845,7 @@ mod test {
|
||||||
let tree_info = builder.finalize(&secp, internal_key).unwrap();
|
let tree_info = builder.finalize(&secp, internal_key).unwrap();
|
||||||
let output_key = tree_info.output_key();
|
let output_key = tree_info.output_key();
|
||||||
|
|
||||||
for script in vec![a, b, c, d, e] {
|
for script in [a, b, c, d, e] {
|
||||||
let ver_script = (script, LeafVersion::TapScript);
|
let ver_script = (script, LeafVersion::TapScript);
|
||||||
let ctrl_block = tree_info.control_block(&ver_script).unwrap();
|
let ctrl_block = tree_info.control_block(&ver_script).unwrap();
|
||||||
assert!(ctrl_block.verify_taproot_commitment(
|
assert!(ctrl_block.verify_taproot_commitment(
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
msrv = "1.48.0"
|
msrv = "1.56.1"
|
||||||
too-many-arguments-threshold = 13
|
too-many-arguments-threshold = 13
|
||||||
|
|
|
@ -4,22 +4,6 @@ set -ex
|
||||||
|
|
||||||
CRATES="bitcoin hashes internals fuzz"
|
CRATES="bitcoin hashes internals fuzz"
|
||||||
DEPS="recent minimal"
|
DEPS="recent minimal"
|
||||||
MSRV="1\.48\.0"
|
|
||||||
|
|
||||||
# Test pinned versions.
|
|
||||||
if cargo --version | grep ${MSRV}; then
|
|
||||||
cargo update -p serde_json --precise 1.0.99
|
|
||||||
cargo update -p serde --precise 1.0.156
|
|
||||||
cargo update -p quote --precise 1.0.30
|
|
||||||
cargo update -p proc-macro2 --precise 1.0.63
|
|
||||||
cargo update -p serde_test --precise 1.0.175
|
|
||||||
cargo update -p schemars --precise 0.8.12
|
|
||||||
# byteorder 1.5.0 uses edition 2021
|
|
||||||
cargo update -p byteorder --precise 1.4.3
|
|
||||||
|
|
||||||
# Build MSRV with pinned versions.
|
|
||||||
cargo check --all-features --all-targets
|
|
||||||
fi
|
|
||||||
|
|
||||||
for dep in $DEPS
|
for dep in $DEPS
|
||||||
do
|
do
|
||||||
|
|
|
@ -9,7 +9,7 @@ since these are needed to display hashes anway.
|
||||||
|
|
||||||
## Minimum Supported Rust Version (MSRV)
|
## Minimum Supported Rust Version (MSRV)
|
||||||
|
|
||||||
This library should always compile with any combination of features on **Rust 1.48.0**.
|
This library should always compile with any combination of features on **Rust 1.56.1**.
|
||||||
|
|
||||||
|
|
||||||
To build with the MSRV you will need to pin `serde` (if you have either the `serde` or the
|
To build with the MSRV you will need to pin `serde` (if you have either the `serde` or the
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const MSRV_MINOR: u64 = 48;
|
const MSRV_MINOR: u64 = 56;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let rustc = std::env::var_os("RUSTC");
|
let rustc = std::env::var_os("RUSTC");
|
||||||
|
|
|
@ -47,7 +47,6 @@ mod impls {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(rust_v_1_55)]
|
|
||||||
fn try_into_de_error<E>(self, expected: Option<&dyn de::Expected>) -> Result<E, Self>
|
fn try_into_de_error<E>(self, expected: Option<&dyn de::Expected>) -> Result<E, Self>
|
||||||
where
|
where
|
||||||
E: de::Error,
|
E: de::Error,
|
||||||
|
@ -61,13 +60,5 @@ mod impls {
|
||||||
_ => Err(self),
|
_ => Err(self),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(rust_v_1_55))]
|
|
||||||
fn try_into_de_error<E>(self, _expected: Option<&dyn de::Expected>) -> Result<E, Self>
|
|
||||||
where
|
|
||||||
E: de::Error,
|
|
||||||
{
|
|
||||||
Err(self)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue