From 6caf45ea1d10aa4e2f25753f1e4a4e564b265fe3 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Sun, 10 Dec 2023 19:32:43 -0500 Subject: [PATCH] Downscope usage of futures --- Cargo.lock | 10 ++++++---- coins/monero/Cargo.toml | 6 +++--- coins/monero/src/wallet/decoys.rs | 2 +- coordinator/Cargo.toml | 3 +-- coordinator/src/tests/tributary/chain.rs | 2 +- coordinator/tributary/Cargo.toml | 3 ++- coordinator/tributary/src/lib.rs | 3 ++- coordinator/tributary/tendermint/Cargo.toml | 3 ++- coordinator/tributary/tendermint/src/lib.rs | 6 +++--- coordinator/tributary/tendermint/src/round.rs | 6 +++--- coordinator/tributary/tendermint/tests/ext.rs | 2 +- tests/no-std/Cargo.toml | 2 +- 12 files changed, 26 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9b349d36..c08bc4e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4306,6 +4306,7 @@ dependencies = [ name = "monero-serai" version = "0.1.4-alpha" dependencies = [ + "async-lock", "async-trait", "base58-monero", "curve25519-dalek", @@ -4313,7 +4314,6 @@ dependencies = [ "digest_auth", "dleq", "flexible-transcript", - "futures", "group", "hex", "hex-literal", @@ -7337,7 +7337,7 @@ dependencies = [ "env_logger", "flexible-transcript", "frost-schnorrkel", - "futures", + "futures-util", "hex", "libp2p", "log", @@ -8981,7 +8981,8 @@ name = "tendermint-machine" version = "0.2.0" dependencies = [ "async-trait", - "futures", + "futures-channel", + "futures-util", "hex", "log", "parity-scale-codec", @@ -9400,7 +9401,8 @@ dependencies = [ "blake2", "ciphersuite", "flexible-transcript", - "futures", + "futures-channel", + "futures-util", "hex", "log", "parity-scale-codec", diff --git a/coins/monero/Cargo.toml b/coins/monero/Cargo.toml index bb760205..7de89426 100644 --- a/coins/monero/Cargo.toml +++ b/coins/monero/Cargo.toml @@ -45,7 +45,7 @@ frost = { package = "modular-frost", path = "../../crypto/frost", version = "0.8 monero-generators = { path = "generators", version = "0.4", default-features = false } -futures = { version = "0.3", default-features = false, features = ["alloc"], optional = true } +async-lock = { version = "3", default-features = false, optional = true } hex-literal = "0.4" hex = { version = "0.4", default-features = false, features = ["alloc"] } @@ -92,7 +92,7 @@ std = [ "monero-generators/std", - "futures?/std", + "async-lock?/std", "hex/std", "serde/std", @@ -101,7 +101,7 @@ std = [ "base58-monero/std", ] -cache-distribution = ["futures"] +cache-distribution = ["async-lock"] http-rpc = ["digest_auth", "simple-request", "tokio"] multisig = ["transcript", "frost", "dleq", "std"] binaries = ["tokio/rt-multi-thread", "tokio/macros", "http-rpc"] diff --git a/coins/monero/src/wallet/decoys.rs b/coins/monero/src/wallet/decoys.rs index 7f1e64af..23dbd40f 100644 --- a/coins/monero/src/wallet/decoys.rs +++ b/coins/monero/src/wallet/decoys.rs @@ -6,7 +6,7 @@ use std_shims::sync::OnceLock; #[cfg(all(feature = "cache-distribution", not(feature = "std")))] use std_shims::sync::Mutex; #[cfg(all(feature = "cache-distribution", feature = "std"))] -use futures::lock::Mutex; +use async_lock::Mutex; use zeroize::{Zeroize, ZeroizeOnDrop}; diff --git a/coordinator/Cargo.toml b/coordinator/Cargo.toml index 525ee1ba..0efac51b 100644 --- a/coordinator/Cargo.toml +++ b/coordinator/Cargo.toml @@ -46,12 +46,11 @@ borsh = { version = "1", default-features = false, features = ["std", "derive", log = { version = "0.4", default-features = false, features = ["std"] } env_logger = { version = "0.10", default-features = false, features = ["humantime"] } -futures = { version = "0.3", default-features = false, features = ["std"] } tokio = { version = "1", default-features = false, features = ["rt-multi-thread", "sync", "time", "macros"] } libp2p = { version = "0.52", default-features = false, features = ["tokio", "tcp", "noise", "yamux", "gossipsub", "mdns", "macros"] } [dev-dependencies] -futures = { version = "0.3", default-features = false, features = ["std"] } +futures-util = { version = "0.3", default-features = false, features = ["std"] } tributary = { package = "tributary-chain", path = "./tributary", features = ["tests"] } sp-application-crypto = { git = "https://github.com/serai-dex/substrate", default-features = false, features = ["std"] } sp-runtime = { git = "https://github.com/serai-dex/substrate", default-features = false, features = ["std"] } diff --git a/coordinator/src/tests/tributary/chain.rs b/coordinator/src/tests/tributary/chain.rs index 36bdef41..6a5d8ee4 100644 --- a/coordinator/src/tests/tributary/chain.rs +++ b/coordinator/src/tests/tributary/chain.rs @@ -5,7 +5,7 @@ use std::{ use zeroize::Zeroizing; use rand_core::{RngCore, CryptoRng, OsRng}; -use futures::{task::Poll, poll}; +use futures_util::{task::Poll, poll}; use ciphersuite::{ group::{ff::Field, GroupEncoding}, diff --git a/coordinator/tributary/Cargo.toml b/coordinator/tributary/Cargo.toml index ff6dc1e3..c96c9d60 100644 --- a/coordinator/tributary/Cargo.toml +++ b/coordinator/tributary/Cargo.toml @@ -29,7 +29,8 @@ log = { version = "0.4", default-features = false, features = ["std"] } serai-db = { path = "../../common/db" } scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["std", "derive"] } -futures = { version = "0.3", default-features = false, features = ["std"] } +futures-util = { version = "0.3", default-features = false, features = ["std", "sink", "channel"] } +futures-channel = { version = "0.3", default-features = false, features = ["std", "sink"] } tendermint = { package = "tendermint-machine", path = "./tendermint" } tokio = { version = "1", default-features = false, features = ["sync", "time", "rt"] } diff --git a/coordinator/tributary/src/lib.rs b/coordinator/tributary/src/lib.rs index a3d1bd70..4610f5f2 100644 --- a/coordinator/tributary/src/lib.rs +++ b/coordinator/tributary/src/lib.rs @@ -8,7 +8,8 @@ use zeroize::Zeroizing; use ciphersuite::{Ciphersuite, Ristretto}; use scale::Decode; -use futures::{StreamExt, SinkExt, channel::mpsc::UnboundedReceiver}; +use futures_channel::mpsc::UnboundedReceiver; +use futures_util::{StreamExt, SinkExt}; use ::tendermint::{ ext::{BlockNumber, Commit, Block as BlockTrait, Network}, SignedMessageFor, SyncedBlock, SyncedBlockSender, SyncedBlockResultReceiver, MessageSender, diff --git a/coordinator/tributary/tendermint/Cargo.toml b/coordinator/tributary/tendermint/Cargo.toml index 00578938..19a6da4f 100644 --- a/coordinator/tributary/tendermint/Cargo.toml +++ b/coordinator/tributary/tendermint/Cargo.toml @@ -16,7 +16,8 @@ log = { version = "0.4", default-features = false, features = ["std"] } parity-scale-codec = { version = "3", default-features = false, features = ["std", "derive"] } -futures = { version = "0.3", default-features = false, features = ["std", "async-await"] } +futures-util = { version = "0.3", default-features = false, features = ["std", "async-await-macro", "sink", "channel"] } +futures-channel = { version = "0.3", default-features = false, features = ["std", "sink"] } tokio = { version = "1", default-features = false, features = ["time"] } [dev-dependencies] diff --git a/coordinator/tributary/tendermint/src/lib.rs b/coordinator/tributary/tendermint/src/lib.rs index 22a9972e..54c3795a 100644 --- a/coordinator/tributary/tendermint/src/lib.rs +++ b/coordinator/tributary/tendermint/src/lib.rs @@ -8,10 +8,10 @@ use std::{ use parity_scale_codec::{Encode, Decode}; -use futures::{ +use futures_channel::mpsc; +use futures_util::{ FutureExt, StreamExt, SinkExt, future::{self, Fuse}, - channel::mpsc, }; use tokio::time::sleep; @@ -367,7 +367,7 @@ impl TendermintMachine { let mut queue_future = if self.queue.is_empty() { Fuse::terminated() } else { future::ready(()).fuse() }; - if let Some((our_message, msg, mut sig)) = futures::select_biased! { + if let Some((our_message, msg, mut sig)) = futures_util::select_biased! { // Handle a new block occurring externally (an external sync loop) // Has the highest priority as it makes all other futures here irrelevant msg = self.synced_block_recv.next() => { diff --git a/coordinator/tributary/tendermint/src/round.rs b/coordinator/tributary/tendermint/src/round.rs index ce2b3898..445c2784 100644 --- a/coordinator/tributary/tendermint/src/round.rs +++ b/coordinator/tributary/tendermint/src/round.rs @@ -4,7 +4,7 @@ use std::{ collections::HashMap, }; -use futures::{FutureExt, future}; +use futures_util::{FutureExt, future}; use tokio::time::sleep; use crate::{ @@ -80,9 +80,9 @@ impl RoundData { let propose_timeout = timeout_future(Step::Propose); let prevote_timeout = timeout_future(Step::Prevote); let precommit_timeout = timeout_future(Step::Precommit); - futures::pin_mut!(propose_timeout, prevote_timeout, precommit_timeout); + futures_util::pin_mut!(propose_timeout, prevote_timeout, precommit_timeout); - futures::select_biased! { + futures_util::select_biased! { step = propose_timeout => step, step = prevote_timeout => step, step = precommit_timeout => step, diff --git a/coordinator/tributary/tendermint/tests/ext.rs b/coordinator/tributary/tendermint/tests/ext.rs index 295d9a84..e3df7e48 100644 --- a/coordinator/tributary/tendermint/tests/ext.rs +++ b/coordinator/tributary/tendermint/tests/ext.rs @@ -7,7 +7,7 @@ use async_trait::async_trait; use parity_scale_codec::{Encode, Decode}; -use futures::SinkExt; +use futures_util::sink::SinkExt; use tokio::{sync::RwLock, time::sleep}; use tendermint_machine::{ diff --git a/tests/no-std/Cargo.toml b/tests/no-std/Cargo.toml index c659fba2..37f43e6b 100644 --- a/tests/no-std/Cargo.toml +++ b/tests/no-std/Cargo.toml @@ -33,4 +33,4 @@ dkg = { path = "../../crypto/dkg", default-features = false } bitcoin-serai = { path = "../../coins/bitcoin", default-features = false, features = ["hazmat"] } monero-generators = { path = "../../coins/monero/generators", default-features = false } -monero-serai = { path = "../../coins/monero", default-features = false } +monero-serai = { path = "../../coins/monero", default-features = false, features = ["cache-distribution"] }