Skip to content

Commit ddf2509

Browse files
committed
Bump MSRV to rustc 1.63.0 and edition to 2021
.. which is a reasonable common ground, also supported by Debian stable.
1 parent 2d26679 commit ddf2509

File tree

34 files changed

+83
-126
lines changed

34 files changed

+83
-126
lines changed

.github/workflows/build.yml

+3-15
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

+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.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

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[workspace]
2+
resolver = "2"
23

34
members = [
45
"lightning",

bench/Cargo.toml

+1-1
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

+30-53
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,16 @@ 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

2414
PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
2515

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

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

4422
export RUST_BACKTRACE=1
4523

@@ -59,9 +37,19 @@ 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+
# zstd-sys 2.0.9+zstd.1.5.5 requires rustc 1.64.0
45+
[ "$RUSTC_MINOR_VERSION" -lt 64 ] && cargo update -p zstd-sys --precise "2.0.8+zstd.1.5.5" --verbose
46+
# reqwest 0.11.21 had a regression that broke its 1.63.0 MSRV
47+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p reqwest --precise "0.11.20" --verbose
48+
# jobserver 0.1.27 requires rustc 1.66.0
49+
[ "$RUSTC_MINOR_VERSION" -lt 66 ] && cargo update -p jobserver --precise "0.1.26" --verbose
50+
# Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0.
51+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p regex --precise "1.9.6" --verbose
52+
6553
cargo test --verbose --color always --features esplora-blocking
6654
cargo check --verbose --color always --features esplora-blocking
6755
cargo test --verbose --color always --features esplora-async
@@ -70,6 +58,7 @@ if [[ $RUSTC_MINOR_VERSION -gt 67 && "$HOST_PLATFORM" != *windows* ]]; then
7058
cargo check --verbose --color always --features esplora-async-https
7159
cargo test --verbose --color always --features electrum
7260
cargo check --verbose --color always --features electrum
61+
7362
popd
7463
fi
7564

@@ -78,20 +67,16 @@ pushd lightning-background-processor
7867
cargo test --verbose --color always --features futures
7968
popd
8069

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
70+
echo -e "\n\nTest Custom Message Macros"
71+
pushd lightning-custom-message
72+
cargo test --verbose --color always
73+
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
74+
popd
8875

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
76+
echo -e "\n\nTest backtrace-debug builds"
77+
pushd lightning
78+
cargo test --verbose --color always --features backtrace
79+
popd
9580

9681
echo -e "\n\nBuilding with all Log-Limiting features"
9782
pushd lightning
@@ -102,13 +87,14 @@ popd
10287

10388
echo -e "\n\nTesting no-std flags in various combinations"
10489
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
90+
cargo test -p $DIR --verbose --color always --no-default-features --features no-std
10691
# 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
92+
cargo test -p $DIR --verbose --color always --features no-std
10893
done
94+
10995
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
11096
# 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
97+
RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
11298
done
11399
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always
114100

@@ -125,16 +111,7 @@ popd
125111
echo -e "\n\nTesting no-std build on a downstream no-std crate"
126112
# check no-std compatibility across dependencies
127113
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
114+
cargo check --verbose --color always --features lightning-transaction-sync
138115
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
139116
popd
140117

fuzz/Cargo.toml

+1-1
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

+1-1
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

+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/Cargo.toml

+2-2
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

+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/Cargo.toml

+1-1
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

+1-1
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

+3-3
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

+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/Cargo.toml

+1-1
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

+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/Cargo.toml

+1-1
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

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/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "0.0.118"
44
authors = ["Arik Sosman <[email protected]>"]
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/lightningdevkit/rust-lightning"
7-
edition = "2018"
7+
edition = "2021"
88
description = """
99
Utility to process gossip routing data from Rapid Gossip Sync Server.
1010
"""

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/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ repository = "https://github.com/lightningdevkit/rust-lightning"
77
description = """
88
Utilities for syncing LDK via the transaction-based `Confirm` interface.
99
"""
10-
edition = "2018"
10+
edition = "2021"
1111

1212
[package.metadata.docs.rs]
1313
all-features = true
@@ -22,14 +22,14 @@ electrum = ["electrum-client"]
2222
async-interface = []
2323

2424
[dependencies]
25-
lightning = { version = "0.0.118", path = "../lightning", default-features = false }
25+
lightning = { version = "0.0.118", path = "../lightning", default-features = false, features = ["std"] }
2626
bitcoin = { version = "0.30.2", default-features = false }
2727
bdk-macros = "0.6"
2828
futures = { version = "0.3", optional = true }
2929
esplora-client = { version = "0.6", default-features = false, optional = true }
3030
electrum-client = { version = "0.18.0", optional = true }
3131

3232
[dev-dependencies]
33-
lightning = { version = "0.0.118", path = "../lightning", features = ["std", "_test_utils"] }
33+
lightning = { version = "0.0.118", path = "../lightning", default-features = false, features = ["std", "_test_utils"] }
3434
electrsd = { version = "0.26.0", features = ["legacy", "esplora_a33e97e1", "bitcoind_25_0"] }
3535
tokio = { version = "1.14.0", features = ["full"] }

lightning-transaction-sync/src/lib.rs

+2-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)]

0 commit comments

Comments
 (0)