Skip to content

Commit 5c5d509

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 5c5d509

File tree

34 files changed

+80
-126
lines changed

34 files changed

+80
-126
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: 1 addition & 0 deletions
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

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: 27 additions & 53 deletions
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,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+
# 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+
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
@@ -78,20 +64,16 @@ pushd lightning-background-processor
7864
cargo test --verbose --color always --features futures
7965
popd
8066

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

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
73+
echo -e "\n\nTest backtrace-debug builds"
74+
pushd lightning
75+
cargo test --verbose --color always --features backtrace
76+
popd
9577

9678
echo -e "\n\nBuilding with all Log-Limiting features"
9779
pushd lightning
@@ -102,13 +84,14 @@ popd
10284

10385
echo -e "\n\nTesting no-std flags in various combinations"
10486
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
87+
cargo test -p $DIR --verbose --color always --no-default-features --features no-std
10688
# 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
89+
cargo test -p $DIR --verbose --color always --features no-std
10890
done
91+
10992
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
11093
# 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
94+
RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
11295
done
11396
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always
11497

@@ -125,16 +108,7 @@ popd
125108
echo -e "\n\nTesting no-std build on a downstream no-std crate"
126109
# check no-std compatibility across dependencies
127110
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
111+
cargo check --verbose --color always --features lightning-transaction-sync
138112
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
139113
popd
140114

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

lightning-persister/src/lib.rs

Lines changed: 3 additions & 4 deletions
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

Lines changed: 1 addition & 1 deletion
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

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(unsafe_code)]

lightning-transaction-sync/Cargo.toml

Lines changed: 3 additions & 3 deletions
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

Lines changed: 2 additions & 3 deletions
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)]

lightning/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ A Bitcoin Lightning library in Rust.
99
Does most of the hard work, without implying a specific runtime, requiring clients implement basic network logic, chain interactions and disk storage.
1010
Still missing tons of error-handling. See GitHub issues for suggested projects if you want to contribute. Don't have to bother telling you not to use this for anything serious, because you'd have to build a client around it to even try.
1111
"""
12-
edition = "2018"
12+
edition = "2021"
1313

1414
[package.metadata.docs.rs]
1515
features = ["std"]

0 commit comments

Comments
 (0)