Skip to content

Commit a8f9de2

Browse files
committed
Bump MSRV to rustc 1.63.0
.. which is a reasonable common ground, also supported by Debian stable.
1 parent d2242f6 commit a8f9de2

File tree

10 files changed

+46
-89
lines changed

10 files changed

+46
-89
lines changed

.github/workflows/build.yml

+1-13
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,7 @@ jobs:
1818
fail-fast: false
1919
matrix:
2020
platform: [ ubuntu-latest, windows-latest, macos-latest ]
21-
toolchain: [ stable, beta ]
22-
include:
23-
- toolchain: stable
24-
platform: ubuntu-latest
25-
# 1.48.0 is the MSRV for all crates except lightning-transaction-sync and Win/Mac
26-
- toolchain: 1.48.0
27-
platform: ubuntu-latest
28-
# Windows requires 1.49.0 because that's the MSRV for supported Tokio
29-
- toolchain: 1.49.0
30-
platform: windows-latest
31-
# MacOS-latest requires 1.54.0 because that's what's required for linking to work properly
32-
- toolchain: 1.54.0
33-
platform: macos-latest
21+
toolchain: [ stable, beta, 1.63.0 ] # 1.63.0 is the MSRV for all crates.
3422
runs-on: ${{ matrix.platform }}
3523
steps:
3624
- name: Checkout source code

CONTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ be covered by functional tests.
8888
When refactoring, structure your PR to make it easy to review and don't
8989
hesitate to split it into multiple small, focused PRs.
9090

91-
The Minimum Supported Rust Version (MSRV) currently is 1.41.1 (enforced by
91+
The Minimum Supported Rust Version (MSRV) currently is 1.63.0 (enforced by
9292
our GitHub Actions). Also, the compatibility for LDK object serialization is
9393
currently ensured back to and including crate version 0.0.99 (see the
9494
[changelog](CHANGELOG.md)).

ci/ci-tests.sh

+27-53
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,17 @@ HOST_PLATFORM="$(rustc --version --verbose | grep "host:" | awk '{ print $2 }')"
88
# which we do here.
99
# Further crates which appear only as dev-dependencies are pinned further down.
1010
function PIN_RELEASE_DEPS {
11-
# Tokio MSRV on versions 1.17 through 1.26 is rustc 1.49. Above 1.26 MSRV is 1.56.
12-
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p tokio --precise "1.14.1" --verbose
13-
[[ "$RUSTC_MINOR_VERSION" -gt 48 && "$RUSTC_MINOR_VERSION" -lt 56 ]] && cargo update -p tokio --precise "1.25.1" --verbose
11+
# Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0.
12+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p regex --precise "1.9.6" --verbose
1413

15-
# Sadly the log crate is always a dependency of tokio until 1.20, and has no reasonable MSRV guarantees
16-
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p log --precise "0.4.18" --verbose
17-
18-
# The serde_json crate switched to Rust edition 2021 starting with v1.0.101, i.e., has MSRV of 1.56
19-
[ "$RUSTC_MINOR_VERSION" -lt 56 ] && cargo update -p serde_json --precise "1.0.100" --verbose
14+
# The addr2line v0.21 crate (a dependency of `backtrace` starting with 0.3.69) relies on rustc 1.65
15+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p backtrace --precise "0.3.68" --verbose
2016

2117
return 0 # Don't fail the script if our rustc is higher than the last check
2218
}
2319

2420
PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
2521

26-
# The addr2line v0.20 crate (a dependency of `backtrace` starting with 0.3.68) relies on 1.55+
27-
[ "$RUSTC_MINOR_VERSION" -lt 55 ] && cargo update -p backtrace --precise "0.3.67" --verbose
28-
29-
# The quote crate switched to Rust edition 2021 starting with v1.0.31, i.e., has MSRV of 1.56
30-
[ "$RUSTC_MINOR_VERSION" -lt 56 ] && cargo update -p quote --precise "1.0.30" --verbose
31-
32-
# The syn crate depends on too-new proc-macro2 starting with v2.0.33, i.e., has MSRV of 1.56
33-
if [ "$RUSTC_MINOR_VERSION" -lt 56 ]; then
34-
SYN_2_DEP=$(grep -o '"syn 2.*' Cargo.lock | tr -d '",' | tr ' ' ':')
35-
cargo update -p "$SYN_2_DEP" --precise "2.0.32" --verbose
36-
fi
37-
38-
# The proc-macro2 crate switched to Rust edition 2021 starting with v1.0.66, i.e., has MSRV of 1.56
39-
[ "$RUSTC_MINOR_VERSION" -lt 56 ] && cargo update -p proc-macro2 --precise "1.0.65" --verbose
40-
41-
# The memchr crate switched to an MSRV of 1.60 starting with v2.6.0
42-
[ "$RUSTC_MINOR_VERSION" -lt 60 ] && cargo update -p memchr --precise "2.5.0" --verbose
43-
4422
export RUST_BACKTRACE=1
4523

4624
echo -e "\n\nBuilding and testing all workspace crates..."
@@ -59,9 +37,17 @@ cargo test --verbose --color always --features rpc-client,rest-client,tokio
5937
cargo check --verbose --color always --features rpc-client,rest-client,tokio
6038
popd
6139

62-
if [[ $RUSTC_MINOR_VERSION -gt 67 && "$HOST_PLATFORM" != *windows* ]]; then
40+
if [[ "$HOST_PLATFORM" != *windows* ]]; then
6341
echo -e "\n\nBuilding and testing Transaction Sync Clients with features"
6442
pushd lightning-transaction-sync
43+
44+
# jobserver 0.1.27 requires rustc 1.66.0
45+
[ "$RUSTC_MINOR_VERSION" -lt 66 ] && cargo update -p jobserver --precise "0.1.26" --verbose
46+
# zstd-sys 2.0.9+zstd.1.5.5 requires rustc 1.64.0
47+
[ "$RUSTC_MINOR_VERSION" -lt 64 ] && cargo update -p zstd-sys --precise "2.0.8+zstd.1.5.5" --verbose
48+
# reqwest 0.11.21 had a regression that broke its 1.63.0 MSRV
49+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p reqwest --precise "0.11.20" --verbose
50+
6551
cargo test --verbose --color always --features esplora-blocking
6652
cargo check --verbose --color always --features esplora-blocking
6753
cargo test --verbose --color always --features esplora-async
@@ -76,20 +62,16 @@ pushd lightning-background-processor
7662
cargo test --verbose --color always --features futures
7763
popd
7864

79-
if [ "$RUSTC_MINOR_VERSION" -gt 55 ]; then
80-
echo -e "\n\nTest Custom Message Macros"
81-
pushd lightning-custom-message
82-
cargo test --verbose --color always
83-
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
84-
popd
85-
fi
65+
echo -e "\n\nTest Custom Message Macros"
66+
pushd lightning-custom-message
67+
cargo test --verbose --color always
68+
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
69+
popd
8670

87-
if [ "$RUSTC_MINOR_VERSION" -gt 51 ]; then # Current `object` MSRV, subject to change
88-
echo -e "\n\nTest backtrace-debug builds"
89-
pushd lightning
90-
cargo test --verbose --color always --features backtrace
91-
popd
92-
fi
71+
echo -e "\n\nTest backtrace-debug builds"
72+
pushd lightning
73+
cargo test --verbose --color always --features backtrace
74+
popd
9375

9476
echo -e "\n\nBuilding with all Log-Limiting features"
9577
pushd lightning
@@ -100,13 +82,14 @@ popd
10082

10183
echo -e "\n\nTesting no-std flags in various combinations"
10284
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
103-
[ "$RUSTC_MINOR_VERSION" -gt 50 ] && cargo test -p $DIR --verbose --color always --no-default-features --features no-std
85+
cargo test -p $DIR --verbose --color always --no-default-features --features no-std
10486
# check if there is a conflict between no-std and the default std feature
105-
[ "$RUSTC_MINOR_VERSION" -gt 50 ] && cargo test -p $DIR --verbose --color always --features no-std
87+
cargo test -p $DIR --verbose --color always --features no-std
10688
done
89+
10790
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
10891
# check if there is a conflict between no-std and the c_bindings cfg
109-
[ "$RUSTC_MINOR_VERSION" -gt 50 ] && RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
92+
RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
11093
done
11194
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always
11295

@@ -123,16 +106,7 @@ popd
123106
echo -e "\n\nTesting no-std build on a downstream no-std crate"
124107
# check no-std compatibility across dependencies
125108
pushd no-std-check
126-
if [[ $RUSTC_MINOR_VERSION -gt 67 ]]; then
127-
# lightning-transaction-sync's MSRV is 1.67
128-
cargo check --verbose --color always --features lightning-transaction-sync
129-
else
130-
# The memchr crate switched to an MSRV of 1.60 starting with v2.6.0
131-
# This is currently only a release dependency via core2, which we intend to work with
132-
# rust-bitcoin to remove soon.
133-
[ "$RUSTC_MINOR_VERSION" -lt 60 ] && cargo update -p memchr --precise "2.5.0" --verbose
134-
cargo check --verbose --color always
135-
fi
109+
cargo check --verbose --color always --features lightning-transaction-sync
136110
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
137111
popd
138112

lightning-background-processor/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
//! running properly, and (2) either can or should be run in the background. See docs for
33
//! [`BackgroundProcessor`] for more details on the nitty-gritty.
44
5-
// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
6-
#![deny(broken_intra_doc_links)]
7-
#![deny(private_intra_doc_links)]
5+
#![deny(rustdoc::broken_intra_doc_links)]
6+
#![deny(rustdoc::private_intra_doc_links)]
87

98
#![deny(missing_docs)]
109
#![cfg_attr(not(feature = "futures"), deny(unsafe_code))]

lightning-block-sync/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313
//! Both features support either blocking I/O using `std::net::TcpStream` or, with feature `tokio`,
1414
//! non-blocking I/O using `tokio::net::TcpStream` from inside a Tokio runtime.
1515
16-
// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
17-
#![deny(broken_intra_doc_links)]
18-
#![deny(private_intra_doc_links)]
16+
#![deny(rustdoc::broken_intra_doc_links)]
17+
#![deny(rustdoc::private_intra_doc_links)]
1918

2019
#![deny(missing_docs)]
2120
#![deny(unsafe_code)]

lightning-invoice/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
2-
#![deny(broken_intra_doc_links)]
3-
#![deny(private_intra_doc_links)]
1+
#![deny(rustdoc::broken_intra_doc_links)]
2+
#![deny(rustdoc::private_intra_doc_links)]
43

54
#![deny(missing_docs)]
65
#![deny(non_upper_case_globals)]

lightning-net-tokio/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@
2222
//!
2323
//! [`PeerManager`]: lightning::ln::peer_handler::PeerManager
2424
25-
// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
26-
#![deny(broken_intra_doc_links)]
27-
#![deny(private_intra_doc_links)]
25+
#![deny(rustdoc::broken_intra_doc_links)]
26+
#![deny(rustdoc::private_intra_doc_links)]
2827

2928
#![deny(missing_docs)]
3029
#![cfg_attr(docsrs, feature(doc_auto_cfg))]

lightning-persister/src/lib.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
//! Provides utilities for LDK data persistence and retrieval.
2-
//
3-
// TODO: Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
4-
#![deny(broken_intra_doc_links)]
5-
#![deny(private_intra_doc_links)]
2+
3+
#![deny(rustdoc::broken_intra_doc_links)]
4+
#![deny(rustdoc::private_intra_doc_links)]
65

76
#![deny(missing_docs)]
87

lightning-rapid-gossip-sync/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
2-
#![deny(broken_intra_doc_links)]
3-
#![deny(private_intra_doc_links)]
1+
#![deny(rustdoc::broken_intra_doc_links)]
2+
#![deny(rustdoc::private_intra_doc_links)]
43

54
#![deny(missing_docs)]
65
#![deny(unsafe_code)]

lightning-transaction-sync/src/lib.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,8 @@
5858
//! [`ChainMonitor`]: lightning::chain::chainmonitor::ChainMonitor
5959
//! [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
6060
61-
// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
62-
#![deny(broken_intra_doc_links)]
63-
#![deny(private_intra_doc_links)]
61+
#![deny(rustdoc::broken_intra_doc_links)]
62+
#![deny(rustdoc::private_intra_doc_links)]
6463

6564
#![deny(missing_docs)]
6665
#![deny(unsafe_code)]
@@ -77,7 +76,9 @@ mod esplora;
7776
#[cfg(any(feature = "esplora-blocking", feature = "esplora-async"))]
7877
mod common;
7978

79+
#[cfg(any(feature = "esplora-blocking", feature = "esplora-async"))]
8080
mod error;
81+
#[cfg(any(feature = "esplora-blocking", feature = "esplora-async"))]
8182
pub use error::TxSyncError;
8283

8384
#[cfg(any(feature = "esplora-blocking", feature = "esplora-async"))]

0 commit comments

Comments
 (0)