Skip to content

Commit e839d49

Browse files
authored
Merge pull request #2681 from tnull/2023-10-bump-msrv-to-1.63.0
Bump MSRV to rustc 1.63.0
2 parents 0c67753 + f368fac commit e839d49

File tree

34 files changed

+142
-137
lines changed

34 files changed

+142
-137
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 15 deletions
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
@@ -168,13 +156,13 @@ jobs:
168156
run: |
169157
cargo check --release
170158
cargo check --no-default-features --features=no-std --release
171-
cargo check --no-default-features --features=futures --release
159+
cargo check --no-default-features --features=futures,std --release
172160
cargo doc --release
173161
- name: Run cargo check for Taproot build.
174162
run: |
175163
cargo check --release
176164
cargo check --no-default-features --features=no-std --release
177-
cargo check --no-default-features --features=futures --release
165+
cargo check --no-default-features --features=futures,std --release
178166
cargo doc --release
179167
env:
180168
RUSTFLAGS: '--cfg=taproot'

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
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.48.0 (enforced by
91+
The Minimum Supported Rust Version (MSRV) currently is 1.63.0 (enforced by
9292
our GitHub Actions). We support reading serialized LDK objects written by any
9393
version of LDK 0.0.99 and above. We support LDK versions 0.0.113 and above
9494
reading serialized LDK objects written by modern LDK. Any expected issues with

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[workspace]
2+
resolver = "2"
23

34
members = [
45
"lightning",
@@ -7,11 +8,11 @@ members = [
78
"lightning-net-tokio",
89
"lightning-persister",
910
"lightning-background-processor",
10-
"lightning-rapid-gossip-sync"
11+
"lightning-rapid-gossip-sync",
12+
"lightning-custom-message",
1113
]
1214

1315
exclude = [
14-
"lightning-custom-message",
1516
"lightning-transaction-sync",
1617
"no-std-check",
1718
"msrv-no-dev-deps-check",

bench/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "lightning-bench"
33
version = "0.0.1"
44
authors = ["Matt Corallo"]
5-
edition = "2018"
5+
edition = "2021"
66

77
[[bench]]
88
name = "bench"

ci/ci-tests.sh

Lines changed: 80 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,60 @@ 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
14-
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
20-
2111
return 0 # Don't fail the script if our rustc is higher than the last check
2212
}
2313

24-
PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
25-
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
14+
# The tests of `lightning-transaction-sync` require `electrs` and `bitcoind`
15+
# binaries. Here, we download the binaries, validate them, and export their
16+
# location via `ELECTRS_EXE`/`BITCOIND_EXE` which will be used by the
17+
# `electrsd`/`bitcoind` crates in our tests.
18+
function DOWNLOAD_ELECTRS_AND_BITCOIND {
19+
ELECTRS_DL_ENDPOINT="https://github.com/RCasatta/electrsd/releases/download/electrs_releases"
20+
ELECTRS_VERSION="esplora_a33e97e1a1fc63fa9c20a116bb92579bbf43b254"
21+
BITCOIND_DL_ENDPOINT="https://bitcoincore.org/bin/"
22+
BITCOIND_VERSION="25.1"
23+
if [[ "$HOST_PLATFORM" == *linux* ]]; then
24+
ELECTRS_DL_FILE_NAME=electrs_linux_"$ELECTRS_VERSION".zip
25+
ELECTRS_DL_HASH="865e26a96e8df77df01d96f2f569dcf9622fc87a8d99a9b8fe30861a4db9ddf1"
26+
BITCOIND_DL_FILE_NAME=bitcoin-"$BITCOIND_VERSION"-x86_64-linux-gnu.tar.gz
27+
BITCOIND_DL_HASH="a978c407b497a727f0444156e397b50491ce862d1f906fef9b521415b3611c8b"
28+
elif [[ "$HOST_PLATFORM" == *darwin* ]]; then
29+
ELECTRS_DL_FILE_NAME=electrs_macos_"$ELECTRS_VERSION".zip
30+
ELECTRS_DL_HASH="2d5ff149e8a2482d3658e9b386830dfc40c8fbd7c175ca7cbac58240a9505bcd"
31+
BITCOIND_DL_FILE_NAME=bitcoin-"$BITCOIND_VERSION"-x86_64-apple-darwin.tar.gz
32+
BITCOIND_DL_HASH="1acfde0ec3128381b83e3e5f54d1c7907871d324549129592144dd12a821eff1"
33+
else
34+
echo -e "\n\nUnsupported platform. Exiting.."
35+
exit 1
36+
fi
37+
38+
DL_TMP_DIR=$(mktemp -d)
39+
trap 'rm -rf -- "$DL_TMP_DIR"' EXIT
40+
41+
pushd "$DL_TMP_DIR"
42+
ELECTRS_DL_URL="$ELECTRS_DL_ENDPOINT"/"$ELECTRS_DL_FILE_NAME"
43+
curl -L -o "$ELECTRS_DL_FILE_NAME" "$ELECTRS_DL_URL"
44+
echo "$ELECTRS_DL_HASH $ELECTRS_DL_FILE_NAME"|shasum -a 256 -c
45+
unzip "$ELECTRS_DL_FILE_NAME"
46+
export ELECTRS_EXE="$DL_TMP_DIR"/electrs
47+
chmod +x "$ELECTRS_EXE"
48+
49+
BITCOIND_DL_URL="$BITCOIND_DL_ENDPOINT"/bitcoin-core-"$BITCOIND_VERSION"/"$BITCOIND_DL_FILE_NAME"
50+
curl -L -o "$BITCOIND_DL_FILE_NAME" "$BITCOIND_DL_URL"
51+
echo "$BITCOIND_DL_HASH $BITCOIND_DL_FILE_NAME"|shasum -a 256 -c
52+
tar xzf "$BITCOIND_DL_FILE_NAME"
53+
export BITCOIND_EXE="$DL_TMP_DIR"/bitcoin-"$BITCOIND_VERSION"/bin/bitcoind
54+
chmod +x "$BITCOIND_EXE"
55+
popd
56+
}
3157

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
58+
PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
3759

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
60+
# Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0.
61+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p regex --precise "1.9.6" --verbose
4062

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
63+
# The addr2line v0.21 crate (a dependency of `backtrace` starting with 0.3.69) relies on rustc 1.65
64+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p backtrace --precise "0.3.68" --verbose
4365

4466
export RUST_BACKTRACE=1
4567

@@ -59,17 +81,26 @@ cargo test --verbose --color always --features rpc-client,rest-client,tokio
5981
cargo check --verbose --color always --features rpc-client,rest-client,tokio
6082
popd
6183

62-
if [[ $RUSTC_MINOR_VERSION -gt 67 && "$HOST_PLATFORM" != *windows* ]]; then
84+
if [[ "$HOST_PLATFORM" != *windows* ]]; then
6385
echo -e "\n\nBuilding and testing Transaction Sync Clients with features"
6486
pushd lightning-transaction-sync
65-
cargo test --verbose --color always --features esplora-blocking
66-
cargo check --verbose --color always --features esplora-blocking
67-
cargo test --verbose --color always --features esplora-async
68-
cargo check --verbose --color always --features esplora-async
69-
cargo test --verbose --color always --features esplora-async-https
70-
cargo check --verbose --color always --features esplora-async-https
71-
cargo test --verbose --color always --features electrum
72-
cargo check --verbose --color always --features electrum
87+
88+
# reqwest 0.11.21 had a regression that broke its 1.63.0 MSRV
89+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p reqwest --precise "0.11.20" --verbose
90+
# Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0.
91+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p regex --precise "1.9.6" --verbose
92+
93+
DOWNLOAD_ELECTRS_AND_BITCOIND
94+
95+
RUSTFLAGS="--cfg no_download" cargo test --verbose --color always --features esplora-blocking
96+
RUSTFLAGS="--cfg no_download" cargo check --verbose --color always --features esplora-blocking
97+
RUSTFLAGS="--cfg no_download" cargo test --verbose --color always --features esplora-async
98+
RUSTFLAGS="--cfg no_download" cargo check --verbose --color always --features esplora-async
99+
RUSTFLAGS="--cfg no_download" cargo test --verbose --color always --features esplora-async-https
100+
RUSTFLAGS="--cfg no_download" cargo check --verbose --color always --features esplora-async-https
101+
RUSTFLAGS="--cfg no_download" cargo test --verbose --color always --features electrum
102+
RUSTFLAGS="--cfg no_download" cargo check --verbose --color always --features electrum
103+
73104
popd
74105
fi
75106

@@ -78,20 +109,16 @@ pushd lightning-background-processor
78109
cargo test --verbose --color always --features futures
79110
popd
80111

81-
if [ "$RUSTC_MINOR_VERSION" -gt 55 ]; then
82-
echo -e "\n\nTest Custom Message Macros"
83-
pushd lightning-custom-message
84-
cargo test --verbose --color always
85-
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
86-
popd
87-
fi
112+
echo -e "\n\nTest Custom Message Macros"
113+
pushd lightning-custom-message
114+
cargo test --verbose --color always
115+
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
116+
popd
88117

89-
if [ "$RUSTC_MINOR_VERSION" -gt 51 ]; then # Current `object` MSRV, subject to change
90-
echo -e "\n\nTest backtrace-debug builds"
91-
pushd lightning
92-
cargo test --verbose --color always --features backtrace
93-
popd
94-
fi
118+
echo -e "\n\nTest backtrace-debug builds"
119+
pushd lightning
120+
cargo test --verbose --color always --features backtrace
121+
popd
95122

96123
echo -e "\n\nBuilding with all Log-Limiting features"
97124
pushd lightning
@@ -102,13 +129,14 @@ popd
102129

103130
echo -e "\n\nTesting no-std flags in various combinations"
104131
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
105-
[ "$RUSTC_MINOR_VERSION" -gt 50 ] && cargo test -p $DIR --verbose --color always --no-default-features --features no-std
132+
cargo test -p $DIR --verbose --color always --no-default-features --features no-std
106133
# check if there is a conflict between no-std and the default std feature
107-
[ "$RUSTC_MINOR_VERSION" -gt 50 ] && cargo test -p $DIR --verbose --color always --features no-std
134+
cargo test -p $DIR --verbose --color always --features no-std
108135
done
136+
109137
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
110138
# check if there is a conflict between no-std and the c_bindings cfg
111-
[ "$RUSTC_MINOR_VERSION" -gt 50 ] && RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
139+
RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
112140
done
113141
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always
114142

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

fuzz/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "lightning-fuzz"
33
version = "0.0.1"
44
authors = ["Automatically generated"]
55
publish = false
6-
edition = "2018"
6+
edition = "2021"
77
# Because the function is unused it gets dropped before we link lightning, so
88
# we have to duplicate build.rs here. Note that this is only required for
99
# fuzzing mode.

lightning-background-processor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ repository = "https://github.com/lightningdevkit/rust-lightning"
77
description = """
88
Utilities to perform required background tasks for Rust Lightning.
99
"""
10-
edition = "2018"
10+
edition = "2021"
1111

1212
[package.metadata.docs.rs]
1313
all-features = true

lightning-background-processor/src/lib.rs

Lines changed: 2 additions & 3 deletions
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/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ repository = "https://github.com/lightningdevkit/rust-lightning"
77
description = """
88
Utilities to fetch the chain data from a block source and feed them into Rust Lightning.
99
"""
10-
edition = "2018"
10+
edition = "2021"
1111

1212
[package.metadata.docs.rs]
1313
all-features = true
@@ -21,7 +21,7 @@ rpc-client = [ "serde_json", "chunked_transfer" ]
2121
bitcoin = "0.30.2"
2222
hex = { package = "hex-conservative", version = "0.1.1", default-features = false }
2323
lightning = { version = "0.0.118", path = "../lightning" }
24-
tokio = { version = "1.0", features = [ "io-util", "net", "time" ], optional = true }
24+
tokio = { version = "1.0", features = [ "io-util", "net", "time", "rt" ], optional = true }
2525
serde_json = { version = "1.0", optional = true }
2626
chunked_transfer = { version = "1.4", optional = true }
2727

lightning-block-sync/src/lib.rs

Lines changed: 2 additions & 3 deletions
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/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0"
88
keywords = [ "lightning", "bitcoin", "invoice", "BOLT11" ]
99
readme = "README.md"
1010
repository = "https://github.com/lightningdevkit/rust-lightning/"
11-
edition = "2018"
11+
edition = "2021"
1212

1313
[package.metadata.docs.rs]
1414
all-features = true

lightning-invoice/fuzz/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "lightning-invoice-fuzz"
33
version = "0.0.1"
44
authors = ["Automatically generated"]
55
publish = false
6-
edition = "2018"
6+
edition = "2021"
77

88
[package.metadata]
99
cargo-fuzz = true

lightning-invoice/fuzz/fuzz_targets/serde_data_part.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ mod tests {
4848
for (idx, c) in hex.as_bytes().iter().filter(|&&c| c != b'\n').enumerate() {
4949
b <<= 4;
5050
match *c {
51-
b'A'...b'F' => b |= c - b'A' + 10,
52-
b'a'...b'f' => b |= c - b'a' + 10,
53-
b'0'...b'9' => b |= c - b'0',
51+
b'A'..=b'F' => b |= c - b'A' + 10,
52+
b'a'..=b'f' => b |= c - b'a' + 10,
53+
b'0'..=b'9' => b |= c - b'0',
5454
_ => panic!("Bad hex"),
5555
}
5656
if (idx & 1) == 1 {

lightning-invoice/src/lib.rs

Lines changed: 2 additions & 3 deletions
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/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ description = """
88
Implementation of the rust-lightning network stack using Tokio.
99
For Rust-Lightning clients which wish to make direct connections to Lightning P2P nodes, this is a simple alternative to implementing the required network stack, especially for those already using Tokio.
1010
"""
11-
edition = "2018"
11+
edition = "2021"
1212

1313
[package.metadata.docs.rs]
1414
all-features = true

lightning-net-tokio/src/lib.rs

Lines changed: 2 additions & 3 deletions
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/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ repository = "https://github.com/lightningdevkit/rust-lightning"
77
description = """
88
Utilities for LDK data persistence and retrieval.
99
"""
10-
edition = "2018"
10+
edition = "2021"
1111

1212
[package.metadata.docs.rs]
1313
all-features = true

0 commit comments

Comments
 (0)