Skip to content

Commit ffa9ff8

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 ffa9ff8

File tree

11 files changed

+56
-102
lines changed

11 files changed

+56
-102
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

+35-64
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,22 @@
22
set -eox pipefail
33

44
RUSTC_MINOR_VERSION=$(rustc --version | awk '{ split($2,a,"."); print a[2] }')
5-
HOST_PLATFORM="$(rustc --version --verbose | grep "host:" | awk '{ print $2 }')"
65

76
# Some crates require pinning to meet our MSRV even for our downstream users,
87
# which we do here.
98
# Further crates which appear only as dev-dependencies are pinned further down.
109
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
10+
# Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0.
11+
[ "$RUSTC_MINOR_VERSION" -lt 65 ] && cargo update -p regex --precise "1.9.6" --verbose
1412

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

2116
return 0 # Don't fail the script if our rustc is higher than the last check
2217
}
2318

2419
PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
2520

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-
4421
export RUST_BACKTRACE=1
4522

4623
echo -e "\n\nBuilding and testing all workspace crates..."
@@ -59,37 +36,39 @@ cargo test --verbose --color always --features rpc-client,rest-client,tokio
5936
cargo check --verbose --color always --features rpc-client,rest-client,tokio
6037
popd
6138

62-
if [[ $RUSTC_MINOR_VERSION -gt 67 && "$HOST_PLATFORM" != *windows* ]]; then
63-
echo -e "\n\nBuilding and testing Transaction Sync Clients with features"
64-
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-
popd
72-
fi
39+
echo -e "\n\nBuilding and testing Transaction Sync Clients with features"
40+
pushd lightning-transaction-sync
41+
42+
# jobserver 0.1.27 requires rustc 1.66.0
43+
[ "$RUSTC_MINOR_VERSION" -lt 66 ] && cargo update -p jobserver --precise "0.1.26" --verbose
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+
49+
cargo test --verbose --color always --features esplora-blocking
50+
cargo check --verbose --color always --features esplora-blocking
51+
cargo test --verbose --color always --features esplora-async
52+
cargo check --verbose --color always --features esplora-async
53+
cargo test --verbose --color always --features esplora-async-https
54+
cargo check --verbose --color always --features esplora-async-https
55+
popd
7356

7457
echo -e "\n\nTest futures builds"
7558
pushd lightning-background-processor
7659
cargo test --verbose --color always --features futures
7760
popd
7861

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
62+
echo -e "\n\nTest Custom Message Macros"
63+
pushd lightning-custom-message
64+
cargo test --verbose --color always
65+
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
66+
popd
8667

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
68+
echo -e "\n\nTest backtrace-debug builds"
69+
pushd lightning
70+
cargo test --verbose --color always --features backtrace
71+
popd
9372

9473
echo -e "\n\nBuilding with all Log-Limiting features"
9574
pushd lightning
@@ -100,13 +79,14 @@ popd
10079

10180
echo -e "\n\nTesting no-std flags in various combinations"
10281
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
82+
cargo test -p $DIR --verbose --color always --no-default-features --features no-std
10483
# 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
84+
cargo test -p $DIR --verbose --color always --features no-std
10685
done
86+
10787
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
10888
# 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
89+
RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
11090
done
11191
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always
11292

@@ -123,16 +103,7 @@ popd
123103
echo -e "\n\nTesting no-std build on a downstream no-std crate"
124104
# check no-std compatibility across dependencies
125105
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
106+
cargo check --verbose --color always
136107
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
137108
popd
138109

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"))]

no-std-check/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "0.1.0"
44
edition = "2018"
55

66
[features]
7-
default = ["lightning/no-std", "lightning-invoice/no-std", "lightning-rapid-gossip-sync/no-std"]
7+
default = ["lightning/no-std", "lightning-invoice/no-std", "lightning-rapid-gossip-sync/no-std", "lightning-transaction-sync"]
88

99
[dependencies]
1010
lightning = { path = "../lightning", default-features = false }
@@ -14,4 +14,4 @@ lightning-background-processor = { path = "../lightning-background-processor", f
1414

1515
# Obviously lightning-transaction-sync doesn't support no-std, but it should build
1616
# even if lightning is built with no-std.
17-
lightning-transaction-sync = { path = "../lightning-transaction-sync", optional = true }
17+
lightning-transaction-sync = { path = "../lightning-transaction-sync", default-features = false, optional = true }

0 commit comments

Comments
 (0)