beta,
# 1.41.1 is MSRV for Rust-Lightning, lightning-invoice, and lightning-persister
1.41.1,
- # 1.45.2 is MSRV for lightning-net-tokio, lightning-block-sync, and coverage generation
+ # 1.45.2 is MSRV for lightning-net-tokio, lightning-block-sync, lightning-background-processor, and coverage generation
1.45.2,
# 1.47.0 will be the MSRV for no-std builds using hashbrown once core2 is updated
1.47.0]
- toolchain: stable
build-net-tokio: true
build-no-std: true
+ build-futures: true
- toolchain: stable
platform: macos-latest
build-net-tokio: true
build-no-std: true
+ build-futures: true
- toolchain: beta
platform: macos-latest
build-net-tokio: true
build-no-std: true
+ build-futures: true
- toolchain: stable
platform: windows-latest
build-net-tokio: true
build-no-std: true
+ build-futures: true
- toolchain: beta
platform: windows-latest
build-net-tokio: true
build-no-std: true
+ build-futures: true
- toolchain: beta
build-net-tokio: true
build-no-std: true
+ build-futures: true
- toolchain: 1.41.1
build-no-std: false
test-log-variants: true
+ build-futures: false
- toolchain: 1.45.2
build-net-old-tokio: true
build-net-tokio: true
build-no-std: false
+ build-futures: true
coverage: true
- toolchain: 1.47.0
+ build-futures: true
build-no-std: true
runs-on: ${{ matrix.platform }}
steps:
- name: Test on Rust ${{ matrix.toolchain }} with net-tokio and full code-linking for coverage generation
if: matrix.coverage
run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always
- - name: Test on no-std bullds Rust ${{ matrix.toolchain }}
+ - name: Test no-std builds on Rust ${{ matrix.toolchain }}
if: "matrix.build-no-std && !matrix.coverage"
shell: bash # Default on Winblows is powershell
run: |
run: |
cd lightning
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --no-default-features --features no-std
- cd ..
+ - name: Test futures builds on Rust ${{ matrix.toolchain }}
+ if: "matrix.build-futures && !matrix.coverage"
+ shell: bash # Default on Winblows is powershell
+ run: |
+ cd lightning-background-processor
+ cargo test --verbose --color always --no-default-features --features futures
+ - name: Test futures builds on Rust ${{ matrix.toolchain }} and full code-linking for coverage generation
+ if: "matrix.build-futures && matrix.coverage"
+ shell: bash # Default on Winblows is powershell
+ run: |
+ cd lightning-background-processor
+ RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --no-default-features --features futures
- name: Test on Rust ${{ matrix.toolchain }}
if: "! matrix.build-net-tokio"
run: |
- cargo test --verbose --color always -p lightning
- cargo test --verbose --color always -p lightning-invoice
- cargo test --verbose --color always -p lightning-rapid-gossip-sync
- cargo build --verbose --color always -p lightning-persister
- cargo build --verbose --color always -p lightning-background-processor
+ cargo test --verbose --color always -p lightning
+ cargo test --verbose --color always -p lightning-invoice
+ cargo test --verbose --color always -p lightning-rapid-gossip-sync
+ cargo test --verbose --color always -p lightning-persister
+ cargo test --verbose --color always -p lightning-background-processor
- name: Test C Bindings Modifications on Rust ${{ matrix.toolchain }}
if: "! matrix.build-net-tokio"
run: |
run: |
cargo check --release
cargo check --no-default-features --features=no-std --release
+ cargo check --no-default-features --features=futures --release
cargo doc --release
fuzz:
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
+[features]
+futures = [ "futures-util" ]
+
[dependencies]
bitcoin = "0.29.0"
lightning = { version = "0.0.111", path = "../lightning", features = ["std"] }
lightning-rapid-gossip-sync = { version = "0.0.111", path = "../lightning-rapid-gossip-sync" }
-futures = { version = "0.3", optional = true }
+futures-util = { version = "0.3", default-features = false, features = ["async-await-macro"], optional = true }
[dev-dependencies]
lightning = { version = "0.0.111", path = "../lightning", features = ["_test_utils"] }
use std::ops::Deref;
#[cfg(feature = "futures")]
-use futures::{select, future::FutureExt};
+use futures_util::{select_biased, future::FutureExt};
/// `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
/// Rust-Lightning running properly, and (2) either can or should be run in the background. Its
P: 'static + Deref + Send + Sync,
Descriptor: 'static + SocketDescriptor + Send + Sync,
CMH: 'static + Deref + Send + Sync,
- CUMH: 'static + Deref + Send + Sync,
RMH: 'static + Deref + Send + Sync,
OMH: 'static + Deref + Send + Sync,
EH: 'static + EventHandler + Send,
let mut should_continue = true;
define_run_body!(persister, event_handler, chain_monitor, channel_manager,
gossip_sync, peer_manager, logger, scorer, should_continue, {
- select! {
+ select_biased! {
_ = channel_manager.get_persistable_update_future().fuse() => true,
cont = sleeper(Duration::from_millis(100)).fuse() => {
should_continue = cont;
[dependencies]
bitcoin = "0.29.0"
lightning = { version = "0.0.111", path = "../lightning" }
-futures = { version = "0.3" }
+futures-util = { version = "0.3" }
tokio = { version = "1.0", features = [ "io-util", "net", "time" ], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
serde_json = { version = "1.0", optional = true }
use bitcoin::hash_types::BlockHash;
use bitcoin::hashes::hex::ToHex;
-use futures::lock::Mutex;
+use futures_util::lock::Mutex;
use std::convert::TryFrom;
use std::convert::TryInto;
use bitcoin::hash_types::BlockHash;
use bitcoin::hashes::hex::ToHex;
-use futures::lock::Mutex;
+use futures_util::lock::Mutex;
use serde_json;