From c25713637dc28b1037bb8a20e888384c3dbbcdb6 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Thu, 9 May 2024 11:26:22 +0100 Subject: [PATCH 1/5] CACHE: Add generic KVCollection to finality provider --- Cargo.lock | 2 + fendermint/app/src/app.rs | 65 ++++++++++---------- fendermint/app/src/cmd/run.rs | 16 +++-- fendermint/app/src/ipc.rs | 6 +- fendermint/vm/interpreter/Cargo.toml | 1 + fendermint/vm/interpreter/src/chain.rs | 38 ++++++++---- fendermint/vm/interpreter/src/fvm/topdown.rs | 7 ++- fendermint/vm/topdown/Cargo.toml | 1 + fendermint/vm/topdown/src/finality/fetch.rs | 54 ++++++++++++---- fendermint/vm/topdown/src/finality/mod.rs | 33 +++++++++- fendermint/vm/topdown/src/finality/null.rs | 42 +++++++++++-- fendermint/vm/topdown/src/sync/mod.rs | 13 ++-- fendermint/vm/topdown/src/sync/syncer.rs | 15 +++-- fendermint/vm/topdown/src/sync/tendermint.rs | 11 ++-- fendermint/vm/topdown/src/toggle.rs | 6 +- 15 files changed, 226 insertions(+), 84 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2fdee3f5e..eef9f2b30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3320,6 +3320,7 @@ dependencies = [ "fendermint_crypto", "fendermint_eth_hardhat", "fendermint_rpc", + "fendermint_storage", "fendermint_testing", "fendermint_tracing", "fendermint_vm_actor_interface", @@ -3453,6 +3454,7 @@ dependencies = [ "clap 4.5.1", "ethers", "fendermint_crypto", + "fendermint_storage", "fendermint_testing", "fendermint_tracing", "fendermint_vm_event", diff --git a/fendermint/app/src/app.rs b/fendermint/app/src/app.rs index 81d67073f..ce08da2a4 100644 --- a/fendermint/app/src/app.rs +++ b/fendermint/app/src/app.rs @@ -118,9 +118,9 @@ pub struct AppConfig { /// Handle ABCI requests. #[derive(Clone)] -pub struct App +pub struct App where - SS: Blockstore + Clone + 'static, + BS: Blockstore + Clone + 'static, S: KVStore, { /// Database backing all key-value operations. @@ -130,7 +130,7 @@ where /// Must be kept separate from storage that can be influenced by network operations such as Bitswap; /// nodes must be able to run transactions deterministically. By contrast the Bitswap store should /// be able to read its own storage area as well as state storage, to serve content from both. - state_store: Arc, + state_store: Arc, /// Wasm engine cache. multi_engine: Arc, /// Path to the Wasm bundle. @@ -157,35 +157,36 @@ where /// Interpreter for block lifecycle events. interpreter: Arc, /// Environment-like dependencies for the interpreter. - chain_env: ChainEnv, + chain_env: ChainEnv, /// Interface to the snapshotter, if enabled. snapshots: Option, /// State accumulating changes during block execution. - exec_state: Arc>>>, + exec_state: Arc>>>, /// Projected (partial) state accumulating during transaction checks. - check_state: CheckStateRef, + check_state: CheckStateRef, /// How much history to keep. /// /// Zero means unlimited. state_hist_size: u64, } -impl App +impl App where S: KVStore + Codec + Encode + Encode - + Codec, + + Codec + + Clone, DB: KVWritable + KVReadable + Clone + 'static, - SS: Blockstore + Clone + 'static, + BS: Blockstore + Clone + 'static, { pub fn new( config: AppConfig, db: DB, - state_store: SS, + state_store: BS, interpreter: I, - chain_env: ChainEnv, + chain_env: ChainEnv, snapshots: Option, ) -> Result { let app = Self { @@ -209,18 +210,19 @@ where } } -impl App +impl App where S: KVStore + Codec + Encode + Encode - + Codec, + + Codec + + Clone, DB: KVWritable + KVReadable + 'static + Clone, - SS: Blockstore + 'static + Clone, + BS: Blockstore + 'static + Clone, { /// Get an owned clone of the state store. - fn state_store_clone(&self) -> SS { + fn state_store_clone(&self) -> BS { self.state_store.as_ref().clone() } @@ -294,14 +296,14 @@ where } /// Put the execution state during block execution. Has to be empty. - async fn put_exec_state(&self, state: FvmExecState) { + async fn put_exec_state(&self, state: FvmExecState) { let mut guard = self.exec_state.lock().await; assert!(guard.is_none(), "exec state not empty"); *guard = Some(state); } /// Take the execution state during block execution. Has to be non-empty. - async fn take_exec_state(&self) -> FvmExecState { + async fn take_exec_state(&self) -> FvmExecState { let mut guard = self.exec_state.lock().await; guard.take().expect("exec state empty") } @@ -309,8 +311,8 @@ where /// Take the execution state, update it, put it back, return the output. async fn modify_exec_state(&self, f: F) -> Result where - F: FnOnce((ChainEnv, FvmExecState)) -> R, - R: Future), T)>>, + F: FnOnce((ChainEnv, FvmExecState)) -> R, + R: Future, FvmExecState), T)>>, { let mut guard = self.exec_state.lock().await; let state = guard.take().expect("exec state empty"); @@ -327,7 +329,7 @@ where /// the latest state. pub fn new_read_only_exec_state( &self, - ) -> Result>>>> { + ) -> Result>>>> { let maybe_app_state = self.get_committed_state()?; Ok(if let Some(app_state) = maybe_app_state { @@ -395,36 +397,37 @@ where // the `tower-abci` library would throw an exception when it tried to convert a // `Response::Exception` into a `ConsensusResponse` for example. #[async_trait] -impl Application for App +impl Application for App where S: KVStore + Codec + Encode + Encode - + Codec, + + Codec + + Clone, S::Namespace: Sync + Send, DB: KVWritable + KVReadable + Clone + Send + Sync + 'static, - SS: Blockstore + Clone + Send + Sync + 'static, + BS: Blockstore + Clone + Send + Sync + 'static, I: GenesisInterpreter< - State = FvmGenesisState, + State = FvmGenesisState, Genesis = Vec, Output = FvmGenesisOutput, >, - I: ProposalInterpreter>, + I: ProposalInterpreter, Message = Vec>, I: ExecInterpreter< - State = (ChainEnv, FvmExecState), + State = (ChainEnv, FvmExecState), Message = Vec, BeginOutput = FvmApplyRet, DeliverOutput = BytesMessageApplyRes, EndOutput = PowerUpdates, >, I: CheckInterpreter< - State = FvmExecState>, + State = FvmExecState>, Message = Vec, Output = BytesMessageCheckRes, >, I: QueryInterpreter< - State = FvmQueryState, + State = FvmQueryState, Query = BytesMessageQuery, Output = BytesMessageQueryRes, >, @@ -832,7 +835,7 @@ where ); // TODO: We can defer committing changes the resolution pool to this point. - // For example if a checkpoint is successfully executed, that's when we want to remove + // For example if a checkpoint is succeBSfully executed, that's when we want to remove // that checkpoint from the pool, and not propose it to other validators again. // However, once Tendermint starts delivering the transactions, the commit will surely // follow at the end, so we can also remove these checkpoints from memory at the time @@ -841,8 +844,8 @@ where // commit in case the block execution fails somewhere in the middle for uknown reasons. // But if that happened, we will have to restart the application again anyway, and // repopulate the in-memory checkpoints based on the last committed ledger. - // So, while the pool is theoretically part of the evolving state and we can pass - // it in and out, unless we want to defer commit to here (which the interpreters aren't + // So, while the pool is theoretically part of the evolving state and we can paBS + // it in and out, unleBS we want to defer commit to here (which the interpreters aren't // notified about), we could add it to the `ChainMessageInterpreter` as a constructor argument, // a sort of "ambient state", and not worry about in in the `App` at all. diff --git a/fendermint/app/src/cmd/run.rs b/fendermint/app/src/cmd/run.rs index 28f8b9a97..57fcfce76 100644 --- a/fendermint/app/src/cmd/run.rs +++ b/fendermint/app/src/cmd/run.rs @@ -10,6 +10,7 @@ use fendermint_app::{App, AppConfig, AppStore, BitswapBlockstore}; use fendermint_app_settings::AccountKind; use fendermint_crypto::SecretKey; use fendermint_rocksdb::{blockstore::NamespaceBlockstore, namespaces, RocksDb, RocksDbConfig}; +use fendermint_storage::KVCollection; use fendermint_tracing::emit; use fendermint_vm_actor_interface::eam::EthAddress; use fendermint_vm_interpreter::chain::ChainEnv; @@ -52,7 +53,8 @@ namespaces! { app, state_hist, state_store, - bit_store + bit_store, + parent_view_store } } @@ -141,7 +143,7 @@ async fn run(settings: Settings) -> anyhow::Result<()> { .with_push_chain_meta(testing_settings.map_or(true, |t| t.push_chain_meta)); let interpreter = SignedMessageInterpreter::new(interpreter); - let interpreter = ChainMessageInterpreter::<_, NamespaceBlockstore>::new(interpreter); + let interpreter = ChainMessageInterpreter::<_, NamespaceBlockstore, AppStore>::new(interpreter); let interpreter = BytesMessageInterpreter::new( interpreter, ProposalPrepareMode::PrependOnly, @@ -249,9 +251,15 @@ async fn run(settings: Settings) -> anyhow::Result<()> { config = config.with_max_cache_blocks(v); } + let parent_view_store = KVCollection::new(ns.parent_view_store); + let ipc_provider = Arc::new(make_ipc_provider_proxy(&settings)?); - let finality_provider = - CachedFinalityProvider::uninitialized(config.clone(), ipc_provider.clone()).await?; + let finality_provider = CachedFinalityProvider::uninitialized( + config.clone(), + ipc_provider.clone(), + parent_view_store, + ) + .await?; let p = Arc::new(Toggle::enabled(finality_provider)); (p, Some((ipc_provider, config))) } else { diff --git a/fendermint/app/src/ipc.rs b/fendermint/app/src/ipc.rs index 6a03bc4b2..5713e6f7a 100644 --- a/fendermint/app/src/ipc.rs +++ b/fendermint/app/src/ipc.rs @@ -40,7 +40,8 @@ where + Codec + Encode + Encode - + Codec, + + Codec + + Clone, DB: KVWritable + KVReadable + 'static + Clone, SS: Blockstore + 'static + Clone, { @@ -68,7 +69,8 @@ where + Codec + Encode + Encode - + Codec, + + Codec + + Clone, DB: KVWritable + KVReadable + 'static + Clone, SS: Blockstore + 'static + Clone, { diff --git a/fendermint/vm/interpreter/Cargo.toml b/fendermint/vm/interpreter/Cargo.toml index 35dd6e83e..162fa4799 100644 --- a/fendermint/vm/interpreter/Cargo.toml +++ b/fendermint/vm/interpreter/Cargo.toml @@ -21,6 +21,7 @@ fendermint_crypto = { path = "../../crypto" } fendermint_eth_hardhat = { path = "../../eth/hardhat" } fendermint_rpc = { path = "../../rpc" } fendermint_tracing = { path = "../../tracing" } +fendermint_storage = { path = "../../storage" } fendermint_actors = { path = "../../actors" } fendermint_actor_chainmetadata = { path = "../../actors/chainmetadata" } fendermint_actor_eam = { workspace = true } diff --git a/fendermint/vm/interpreter/src/chain.rs b/fendermint/vm/interpreter/src/chain.rs index 78e75de8e..866060764 100644 --- a/fendermint/vm/interpreter/src/chain.rs +++ b/fendermint/vm/interpreter/src/chain.rs @@ -11,6 +11,7 @@ use crate::{ use anyhow::{bail, Context}; use async_stm::atomically; use async_trait::async_trait; +use fendermint_storage::KVStore; use fendermint_tracing::emit; use fendermint_vm_actor_interface::ipc; use fendermint_vm_event::ParentFinalityMissingQuorum; @@ -30,20 +31,21 @@ use fvm_ipld_encoding::RawBytes; use fvm_shared::clock::ChainEpoch; use fvm_shared::econ::TokenAmount; use num_traits::Zero; +use std::marker::PhantomData; use std::sync::Arc; /// A resolution pool for bottom-up and top-down checkpoints. pub type CheckpointPool = ResolvePool; -pub type TopDownFinalityProvider = Arc>>; +pub type TopDownFinalityProvider = Arc>>; /// These are the extra state items that the chain interpreter needs, /// a sort of "environment" supporting IPC. #[derive(Clone)] -pub struct ChainEnv { +pub struct ChainEnv { /// CID resolution pool. pub checkpoint_pool: CheckpointPool, /// The parent finality provider for top down checkpoint - pub parent_finality_provider: TopDownFinalityProvider, + pub parent_finality_provider: TopDownFinalityProvider, pub parent_finality_votes: VoteTally, } @@ -82,27 +84,31 @@ pub type ChainMessageCheckRes = Result; /// Interpreter working on chain messages; in the future it will schedule /// CID lookups to turn references into self-contained user or cross messages. #[derive(Clone)] -pub struct ChainMessageInterpreter { +pub struct ChainMessageInterpreter { inner: I, gateway_caller: GatewayCaller, + store: PhantomData, } -impl ChainMessageInterpreter { +impl ChainMessageInterpreter { pub fn new(inner: I) -> Self { Self { inner, gateway_caller: GatewayCaller::default(), + store: PhantomData, } } } #[async_trait] -impl ProposalInterpreter for ChainMessageInterpreter +impl ProposalInterpreter for ChainMessageInterpreter where DB: Blockstore + Clone + 'static + Send + Sync, I: Sync + Send, + S: KVStore + Send + Sync + 'static, + S::Namespace: Send + Sync + 'static, { - type State = ChainEnv; + type State = ChainEnv; type Message = ChainMessage; /// Check whether there are any "ready" messages in the IPLD resolution mempool which can be appended to the proposal. @@ -219,9 +225,11 @@ where } #[async_trait] -impl ExecInterpreter for ChainMessageInterpreter +impl ExecInterpreter for ChainMessageInterpreter where DB: Blockstore + Clone + 'static + Send + Sync + Clone, + S: KVStore + Send + Sync + 'static, + S::Namespace: Send + Sync + 'static, I: ExecInterpreter< Message = VerifiableMessage, DeliverOutput = SignedMessageApplyRes, @@ -233,7 +241,7 @@ where // state which the inner interpreter uses. This is a technical solution because the pool doesn't // fit with the state we use for execution messages further down the stack, which depend on block // height and are used in queries as well. - type State = (ChainEnv, I::State); + type State = (ChainEnv, I::State); type Message = ChainMessage; type BeginOutput = I::BeginOutput; type DeliverOutput = ChainMessageApplyRet; @@ -422,9 +430,11 @@ where } #[async_trait] -impl CheckInterpreter for ChainMessageInterpreter +impl CheckInterpreter for ChainMessageInterpreter where DB: Blockstore + Clone + 'static + Send + Sync, + S: KVStore + Send + Sync + 'static, + S::Namespace: Send + Sync + 'static, I: CheckInterpreter, { type State = I::State; @@ -471,9 +481,11 @@ where } #[async_trait] -impl QueryInterpreter for ChainMessageInterpreter +impl QueryInterpreter for ChainMessageInterpreter where DB: Blockstore + Clone + 'static + Send + Sync, + S: KVStore + Send + Sync + 'static, + S::Namespace: Send + Sync + 'static, I: QueryInterpreter, { type State = I::State; @@ -490,9 +502,11 @@ where } #[async_trait] -impl GenesisInterpreter for ChainMessageInterpreter +impl GenesisInterpreter for ChainMessageInterpreter where DB: Blockstore + Clone + 'static + Send + Sync, + S: KVStore + Send + Sync + 'static, + S::Namespace: Send + Sync + 'static, I: GenesisInterpreter, { type State = I::State; diff --git a/fendermint/vm/interpreter/src/fvm/topdown.rs b/fendermint/vm/interpreter/src/fvm/topdown.rs index 8c9e77b3b..719073468 100644 --- a/fendermint/vm/interpreter/src/fvm/topdown.rs +++ b/fendermint/vm/interpreter/src/fvm/topdown.rs @@ -7,6 +7,7 @@ use crate::fvm::state::ipc::GatewayCaller; use crate::fvm::state::FvmExecState; use crate::fvm::FvmApplyRet; use anyhow::Context; +use fendermint_storage::KVStore; use fendermint_vm_topdown::{BlockHeight, IPCParentFinality, ParentViewProvider}; use fvm_ipld_blockstore::Blockstore; use ipc_api::cross::IpcEnvelope; @@ -15,14 +16,16 @@ use super::state::ipc::tokens_to_mint; /// Commit the parent finality. Returns the height that the previous parent finality is committed and /// the committed finality itself. If there is no parent finality committed, genesis epoch is returned. -pub async fn commit_finality( +pub async fn commit_finality( gateway_caller: &GatewayCaller, state: &mut FvmExecState, finality: IPCParentFinality, - provider: &TopDownFinalityProvider, + provider: &TopDownFinalityProvider, ) -> anyhow::Result<(BlockHeight, Option)> where DB: Blockstore + Sync + Send + Clone + 'static, + S: KVStore + 'static, + S::Namespace: Send + Sync + 'static, { let (prev_height, prev_finality) = if let Some(prev_finality) = gateway_caller.commit_parent_finality(state, finality)? { diff --git a/fendermint/vm/topdown/Cargo.toml b/fendermint/vm/topdown/Cargo.toml index 42980a06e..81efdebcf 100644 --- a/fendermint/vm/topdown/Cargo.toml +++ b/fendermint/vm/topdown/Cargo.toml @@ -33,6 +33,7 @@ tracing = { workspace = true } fendermint_vm_genesis = { path = "../genesis" } fendermint_vm_event = { path = "../event" } fendermint_tracing = { path = "../../tracing" } +fendermint_storage = { path = "../../storage" } [dev-dependencies] arbitrary = { workspace = true } diff --git a/fendermint/vm/topdown/src/finality/fetch.rs b/fendermint/vm/topdown/src/finality/fetch.rs index fb4203045..5625d2dac 100644 --- a/fendermint/vm/topdown/src/finality/fetch.rs +++ b/fendermint/vm/topdown/src/finality/fetch.rs @@ -9,14 +9,17 @@ use crate::{ ParentFinalityProvider, ParentViewProvider, }; use async_stm::{Stm, StmResult}; +use fendermint_storage::KVStore; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; use std::sync::Arc; +use super::null::ParentViewStore; + /// The finality provider that performs io to the parent if not found in cache #[derive(Clone)] -pub struct CachedFinalityProvider { - inner: FinalityWithNull, +pub struct CachedFinalityProvider { + inner: FinalityWithNull, config: Config, /// The ipc client proxy that works as a back up if cache miss parent_client: Arc, @@ -62,7 +65,12 @@ macro_rules! retry { } #[async_trait::async_trait] -impl ParentViewProvider for CachedFinalityProvider { +impl ParentViewProvider for CachedFinalityProvider +where + T: ParentQueryProxy + Send + Sync + 'static, + S: KVStore, + S::Namespace: Send + Sync + 'static, +{ fn genesis_epoch(&self) -> anyhow::Result { self.inner.genesis_epoch() } @@ -108,8 +116,11 @@ impl ParentViewProvider for CachedF } } -impl ParentFinalityProvider - for CachedFinalityProvider +impl ParentFinalityProvider for CachedFinalityProvider +where + T: ParentQueryProxy + Send + Sync + 'static, + S: KVStore, + S::Namespace: Send + Sync + 'static, { fn next_proposal(&self) -> Stm> { self.inner.next_proposal() @@ -128,14 +139,18 @@ impl ParentFinalityProvider } } -impl CachedFinalityProvider { +impl CachedFinalityProvider { /// Creates an uninitialized provider /// We need this because `fendermint` has yet to be initialized and might /// not be able to provide an existing finality from the storage. This provider requires an /// existing committed finality. Providing the finality will enable other functionalities. - pub async fn uninitialized(config: Config, parent_client: Arc) -> anyhow::Result { + pub async fn uninitialized( + config: Config, + parent_client: Arc, + parent_data: ParentViewStore, + ) -> anyhow::Result { let genesis = parent_client.get_genesis_epoch().await?; - Ok(Self::new(config, genesis, None, parent_client)) + Ok(Self::new(config, genesis, None, parent_client, parent_data)) } /// Should always return the top down messages, only when ipc parent_client is down after exponential @@ -184,14 +199,23 @@ impl CachedFinalityProvider { } } -impl CachedFinalityProvider { +impl CachedFinalityProvider +where + S: KVStore, +{ pub(crate) fn new( config: Config, genesis_epoch: BlockHeight, committed_finality: Option, parent_client: Arc, + parent_data: ParentViewStore, ) -> Self { - let inner = FinalityWithNull::new(config.clone(), genesis_epoch, committed_finality); + let inner = FinalityWithNull::new( + config.clone(), + genesis_epoch, + committed_finality, + parent_data, + ); Self { inner, config, @@ -241,7 +265,7 @@ impl CachedFinalityProvider { #[cfg(test)] mod tests { - use crate::finality::ParentViewPayload; + use crate::finality::{test_store, ParentViewPayload}; use crate::proxy::ParentQueryProxy; use crate::{ BlockHeight, CachedFinalityProvider, Config, IPCParentFinality, ParentViewProvider, @@ -355,7 +379,13 @@ mod tests { block_hash: vec![0; 32], }; - CachedFinalityProvider::new(config, genesis_epoch, Some(committed_finality), proxy) + CachedFinalityProvider::new( + config, + genesis_epoch, + Some(committed_finality), + proxy, + test_store::new_parent_view_store(), + ) } fn new_cross_msg(nonce: u64) -> IpcEnvelope { diff --git a/fendermint/vm/topdown/src/finality/mod.rs b/fendermint/vm/topdown/src/finality/mod.rs index c6cd2dc3d..4664264ba 100644 --- a/fendermint/vm/topdown/src/finality/mod.rs +++ b/fendermint/vm/topdown/src/finality/mod.rs @@ -53,6 +53,8 @@ mod tests { use std::sync::Arc; use tokio::time::Duration; + use super::test_store; + struct MockedParentQuery; #[async_trait] @@ -112,7 +114,13 @@ mod tests { proposal_delay: None, }; - CachedFinalityProvider::new(config, 10, Some(genesis_finality()), mocked_agent_proxy()) + CachedFinalityProvider::new( + config, + 10, + Some(genesis_finality()), + mocked_agent_proxy(), + test_store::new_parent_view_store(), + ) } #[tokio::test] @@ -175,3 +183,26 @@ mod tests { .unwrap(); } } + +#[cfg(test)] +pub mod test_store { + use fendermint_storage::{im::InMemoryBackend, KVCollection}; + use fendermint_vm_event::BlockHeight; + + use super::ParentViewStore; + + pub struct TestStore; + + impl KVStore for TestStore { + type Namespace = String; + type Repr = Vec; + } + + pub fn new_backend() -> InMemoryBackend { + InMemoryBackend::default() + } + + pub fn new_parent_view_store() -> ParentViewStore { + KVCollection::new("parent_view_payload") + } +} diff --git a/fendermint/vm/topdown/src/finality/null.rs b/fendermint/vm/topdown/src/finality/null.rs index 9a4a7beea..0dec8684e 100644 --- a/fendermint/vm/topdown/src/finality/null.rs +++ b/fendermint/vm/topdown/src/finality/null.rs @@ -6,6 +6,7 @@ use crate::finality::{ }; use crate::{BlockHash, BlockHeight, Config, Error, IPCParentFinality, SequentialKeyCache}; use async_stm::{abort, atomically, Stm, StmResult, TVar}; +use fendermint_storage::{KVCollection, KVStore}; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; use std::cmp::min; @@ -13,28 +14,38 @@ use std::cmp::min; use fendermint_tracing::emit; use fendermint_vm_event::ParentFinalityCommitted; +pub type ParentViewStore = KVCollection>; + /// Finality provider that can handle null blocks #[derive(Clone)] -pub struct FinalityWithNull { +pub struct FinalityWithNull { config: Config, genesis_epoch: BlockHeight, /// Cached data that always syncs with the latest parent chain proactively cached_data: TVar>>, + stored_data: ParentViewStore, /// This is a in memory view of the committed parent finality. We need this as a starting point /// for populating the cache last_committed_finality: TVar>, } -impl FinalityWithNull { +impl FinalityWithNull +where + S: KVStore, +{ pub fn new( config: Config, genesis_epoch: BlockHeight, committed_finality: Option, + parent_data: ParentViewStore, ) -> Self { + // TODO: Initialize cache from the store. + let cache = SequentialKeyCache::sequential(); Self { config, genesis_epoch, - cached_data: TVar::new(SequentialKeyCache::sequential()), + cached_data: TVar::new(cache), + stored_data: parent_data, last_committed_finality: TVar::new(committed_finality), } } @@ -133,7 +144,10 @@ impl FinalityWithNull { } } -impl FinalityWithNull { +impl FinalityWithNull +where + S: KVStore, +{ /// Returns the number of blocks cached. pub(crate) fn cached_blocks(&self) -> Stm { let cache = self.cached_data.read()?; @@ -182,7 +196,10 @@ impl FinalityWithNull { } /// All the private functions -impl FinalityWithNull { +impl FinalityWithNull +where + S: KVStore, +{ fn propose_next_height(&self) -> Stm> { let latest_height = if let Some(h) = self.latest_height_in_cache()? { h @@ -373,6 +390,14 @@ mod tests { use crate::finality::ParentViewPayload; use crate::{BlockHeight, Config, IPCParentFinality}; use async_stm::{atomically, atomically_or_err}; + use fendermint_storage::{KVCollection, KVStore}; + + struct TestStore; + + impl KVStore for TestStore { + type Namespace = String; + type Repr = Vec; + } async fn new_provider( mut blocks: Vec<(BlockHeight, Option)>, @@ -393,7 +418,12 @@ mod tests { blocks.remove(0); - let f = FinalityWithNull::new(config, 1, Some(committed_finality)); + let f = FinalityWithNull::new( + config, + 1, + Some(committed_finality), + test_store::new_parent_view_store(), + ); for (h, p) in blocks { atomically_or_err(|| f.new_parent_view(h, p.clone())) .await diff --git a/fendermint/vm/topdown/src/sync/mod.rs b/fendermint/vm/topdown/src/sync/mod.rs index 03d98f129..473486242 100644 --- a/fendermint/vm/topdown/src/sync/mod.rs +++ b/fendermint/vm/topdown/src/sync/mod.rs @@ -13,6 +13,7 @@ use crate::{CachedFinalityProvider, Config, IPCParentFinality, ParentFinalityPro use anyhow::anyhow; use async_stm::atomically; use ethers::utils::hex; +use fendermint_storage::KVStore; use ipc_ipld_resolver::ValidatorKey; use std::sync::Arc; use std::time::Duration; @@ -106,10 +107,10 @@ where } /// Start the polling parent syncer in the background -pub async fn launch_polling_syncer( +pub async fn launch_polling_syncer( query: T, config: Config, - view_provider: Arc>>, + view_provider: Arc>>, vote_tally: VoteTally, parent_client: Arc

, tendermint_client: C, @@ -118,6 +119,8 @@ where T: ParentFinalityStateQuery + Send + Sync + 'static, C: tendermint_rpc::Client + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, + S: KVStore + 'static, + S::Namespace: Send + Sync + 'static, { if !view_provider.is_enabled() { return Err(anyhow!("provider not enabled, enable to run syncer")); @@ -162,9 +165,9 @@ where } /// Start the parent finality listener in the background -fn start_syncing( +fn start_syncing( config: Config, - view_provider: Arc>>, + view_provider: Arc>>, vote_tally: VoteTally, parent_proxy: Arc

, query: Arc, @@ -173,6 +176,8 @@ fn start_syncing( T: ParentFinalityStateQuery + Send + Sync + 'static, C: tendermint_rpc::Client + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, + S: KVStore + 'static, + S::Namespace: Send + Sync + 'static, { let mut interval = tokio::time::interval(config.polling_interval); interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); diff --git a/fendermint/vm/topdown/src/sync/syncer.rs b/fendermint/vm/topdown/src/sync/syncer.rs index 675d4e4c6..a1561cb07 100644 --- a/fendermint/vm/topdown/src/sync/syncer.rs +++ b/fendermint/vm/topdown/src/sync/syncer.rs @@ -12,6 +12,7 @@ use crate::{ use anyhow::anyhow; use async_stm::{atomically, atomically_or_err, StmError}; use ethers::utils::hex; +use fendermint_storage::KVStore; use libp2p::futures::TryFutureExt; use std::sync::Arc; use tracing::instrument; @@ -21,10 +22,10 @@ use fendermint_vm_event::{BlockHashHex, NewParentView}; /// Parent syncer that constantly poll parent. This struct handles lotus null blocks and deferred /// execution. For ETH based parent, it should work out of the box as well. -pub(crate) struct LotusParentSyncer { +pub(crate) struct LotusParentSyncer { config: Config, parent_proxy: Arc

, - provider: Arc>>, + provider: Arc>>, vote_tally: VoteTally, query: Arc, @@ -37,15 +38,17 @@ pub(crate) struct LotusParentSyncer { sync_many: bool, } -impl LotusParentSyncer +impl LotusParentSyncer where T: ParentFinalityStateQuery + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, + S: KVStore + 'static, + S::Namespace: Send + Sync + 'static, { pub fn new( config: Config, parent_proxy: Arc

, - provider: Arc>>, + provider: Arc>>, vote_tally: VoteTally, query: Arc, ) -> anyhow::Result { @@ -122,10 +125,12 @@ where } } -impl LotusParentSyncer +impl LotusParentSyncer where T: ParentFinalityStateQuery + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, + S: KVStore + 'static, + S::Namespace: Send + Sync + 'static, { async fn exceed_cache_size_limit(&self) -> bool { let max_cache_blocks = self.config.max_cache_blocks(); diff --git a/fendermint/vm/topdown/src/sync/tendermint.rs b/fendermint/vm/topdown/src/sync/tendermint.rs index 22eb47e82..a0b8ffd9e 100644 --- a/fendermint/vm/topdown/src/sync/tendermint.rs +++ b/fendermint/vm/topdown/src/sync/tendermint.rs @@ -6,20 +6,23 @@ use crate::proxy::ParentQueryProxy; use crate::sync::syncer::LotusParentSyncer; use crate::sync::ParentFinalityStateQuery; use anyhow::Context; +use fendermint_storage::KVStore; /// Tendermint aware syncer -pub(crate) struct TendermintAwareSyncer { - inner: LotusParentSyncer, +pub(crate) struct TendermintAwareSyncer { + inner: LotusParentSyncer, tendermint_client: C, } -impl TendermintAwareSyncer +impl TendermintAwareSyncer where T: ParentFinalityStateQuery + Send + Sync + 'static, C: tendermint_rpc::Client + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, + S: KVStore + 'static, + S::Namespace: Send + Sync + 'static, { - pub fn new(inner: LotusParentSyncer, tendermint_client: C) -> Self { + pub fn new(inner: LotusParentSyncer, tendermint_client: C) -> Self { Self { inner, tendermint_client, diff --git a/fendermint/vm/topdown/src/toggle.rs b/fendermint/vm/topdown/src/toggle.rs index c7dd10065..a9faada80 100644 --- a/fendermint/vm/topdown/src/toggle.rs +++ b/fendermint/vm/topdown/src/toggle.rs @@ -8,6 +8,7 @@ use crate::{ }; use anyhow::anyhow; use async_stm::{Stm, StmResult}; +use fendermint_storage::KVStore; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; @@ -91,7 +92,10 @@ impl ParentFinalityProvider f } } -impl

Toggle> { +impl Toggle> +where + S: KVStore, +{ pub fn block_hash(&self, height: BlockHeight) -> Stm> { self.perform_or_else(|p| p.block_hash(height), None) } From 0181244f5d5a12f6c19ed65302d5b5b4eadcb11e Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Thu, 9 May 2024 12:19:03 +0100 Subject: [PATCH 2/5] CACHE: Remove the S from the App and use AppStore directly --- fendermint/app/src/app.rs | 64 ++++++++++++----------------------- fendermint/app/src/cmd/run.rs | 2 +- fendermint/app/src/ipc.rs | 38 +++++++-------------- 3 files changed, 34 insertions(+), 70 deletions(-) diff --git a/fendermint/app/src/app.rs b/fendermint/app/src/app.rs index ce08da2a4..f83b60b06 100644 --- a/fendermint/app/src/app.rs +++ b/fendermint/app/src/app.rs @@ -10,9 +10,7 @@ use async_trait::async_trait; use cid::Cid; use fendermint_abci::util::take_until_max_size; use fendermint_abci::{AbciResult, Application}; -use fendermint_storage::{ - Codec, Encode, KVCollection, KVRead, KVReadable, KVStore, KVWritable, KVWrite, -}; +use fendermint_storage::{KVCollection, KVRead, KVReadable, KVStore, KVWritable, KVWrite}; use fendermint_tracing::emit; use fendermint_vm_core::Timestamp; use fendermint_vm_interpreter::bytes::{ @@ -44,9 +42,9 @@ use tendermint::abci::{request, response}; use tracing::instrument; use crate::events::{NewBlock, ProposalProcessed}; -use crate::AppExitCode; use crate::BlockHeight; use crate::{tmconv::*, VERSION}; +use crate::{AppExitCode, AppStore}; #[derive(Serialize)] #[repr(u8)] @@ -99,11 +97,11 @@ impl AppState { } } -pub struct AppConfig { +pub struct AppConfig { /// Namespace to store the current app state. - pub app_namespace: S::Namespace, + pub app_namespace: ::Namespace, /// Namespace to store the app state history. - pub state_hist_namespace: S::Namespace, + pub state_hist_namespace: ::Namespace, /// Size of state history to keep; 0 means unlimited. pub state_hist_size: u64, /// Path to the Wasm bundle. @@ -118,10 +116,9 @@ pub struct AppConfig { /// Handle ABCI requests. #[derive(Clone)] -pub struct App +pub struct App where BS: Blockstore + Clone + 'static, - S: KVStore, { /// Database backing all key-value operations. db: Arc, @@ -142,7 +139,7 @@ where /// Block height where we should gracefully stop the node halt_height: i64, /// Namespace to store app state. - namespace: S::Namespace, + namespace: ::Namespace, /// Collection of past state parameters. /// /// We store the state hash for the height of the block where it was committed, @@ -153,11 +150,11 @@ where /// The state also contains things like timestamp and the network version, /// so that we can retrospectively execute FVM messages at past block heights /// in read-only mode. - state_hist: KVCollection, + state_hist: KVCollection, /// Interpreter for block lifecycle events. interpreter: Arc, /// Environment-like dependencies for the interpreter. - chain_env: ChainEnv, + chain_env: ChainEnv, /// Interface to the snapshotter, if enabled. snapshots: Option, /// State accumulating changes during block execution. @@ -170,23 +167,17 @@ where state_hist_size: u64, } -impl App +impl App where - S: KVStore - + Codec - + Encode - + Encode - + Codec - + Clone, - DB: KVWritable + KVReadable + Clone + 'static, + DB: KVWritable + KVReadable + Clone + 'static, BS: Blockstore + Clone + 'static, { pub fn new( - config: AppConfig, + config: AppConfig, db: DB, state_store: BS, interpreter: I, - chain_env: ChainEnv, + chain_env: ChainEnv, snapshots: Option, ) -> Result { let app = Self { @@ -210,15 +201,9 @@ where } } -impl App +impl App where - S: KVStore - + Codec - + Encode - + Encode - + Codec - + Clone, - DB: KVWritable + KVReadable + 'static + Clone, + DB: KVWritable + KVReadable + 'static + Clone, BS: Blockstore + 'static + Clone, { /// Get an owned clone of the state store. @@ -311,8 +296,8 @@ where /// Take the execution state, update it, put it back, return the output. async fn modify_exec_state(&self, f: F) -> Result where - F: FnOnce((ChainEnv, FvmExecState)) -> R, - R: Future, FvmExecState), T)>>, + F: FnOnce((ChainEnv, FvmExecState)) -> R, + R: Future, FvmExecState), T)>>, { let mut guard = self.exec_state.lock().await; let state = guard.take().expect("exec state empty"); @@ -397,25 +382,18 @@ where // the `tower-abci` library would throw an exception when it tried to convert a // `Response::Exception` into a `ConsensusResponse` for example. #[async_trait] -impl Application for App +impl Application for App where - S: KVStore - + Codec - + Encode - + Encode - + Codec - + Clone, - S::Namespace: Sync + Send, - DB: KVWritable + KVReadable + Clone + Send + Sync + 'static, + DB: KVWritable + KVReadable + Clone + Send + Sync + 'static, BS: Blockstore + Clone + Send + Sync + 'static, I: GenesisInterpreter< State = FvmGenesisState, Genesis = Vec, Output = FvmGenesisOutput, >, - I: ProposalInterpreter, Message = Vec>, + I: ProposalInterpreter, Message = Vec>, I: ExecInterpreter< - State = (ChainEnv, FvmExecState), + State = (ChainEnv, FvmExecState), Message = Vec, BeginOutput = FvmApplyRet, DeliverOutput = BytesMessageApplyRes, diff --git a/fendermint/app/src/cmd/run.rs b/fendermint/app/src/cmd/run.rs index 57fcfce76..942a8ac5e 100644 --- a/fendermint/app/src/cmd/run.rs +++ b/fendermint/app/src/cmd/run.rs @@ -293,7 +293,7 @@ async fn run(settings: Settings) -> anyhow::Result<()> { None }; - let app: App<_, _, AppStore, _> = App::new( + let app = App::new( AppConfig { app_namespace: ns.app, state_hist_namespace: ns.state_hist, diff --git a/fendermint/app/src/ipc.rs b/fendermint/app/src/ipc.rs index 5713e6f7a..7a9e0209b 100644 --- a/fendermint/app/src/ipc.rs +++ b/fendermint/app/src/ipc.rs @@ -2,12 +2,11 @@ // SPDX-License-Identifier: Apache-2.0, MIT //! IPC related execution -use crate::app::{AppState, AppStoreKey}; -use crate::{App, BlockHeight}; -use fendermint_storage::{Codec, Encode, KVReadable, KVStore, KVWritable}; +use crate::{App, AppStore}; +use fendermint_storage::{KVReadable, KVWritable}; use fendermint_vm_genesis::{Power, Validator}; use fendermint_vm_interpreter::fvm::state::ipc::GatewayCaller; -use fendermint_vm_interpreter::fvm::state::{FvmExecState, FvmStateParams}; +use fendermint_vm_interpreter::fvm::state::FvmExecState; use fendermint_vm_interpreter::fvm::store::ReadOnlyBlockstore; use fendermint_vm_topdown::sync::ParentFinalityStateQuery; use fendermint_vm_topdown::IPCParentFinality; @@ -24,28 +23,21 @@ pub enum AppVote { } /// Queries the LATEST COMMITTED parent finality from the storage -pub struct AppParentFinalityQuery +pub struct AppParentFinalityQuery where - SS: Blockstore + Clone + 'static, - S: KVStore, + BS: Blockstore + Clone + 'static, { /// The app to get state - app: App, - gateway_caller: GatewayCaller>>, + app: App, + gateway_caller: GatewayCaller>>, } -impl AppParentFinalityQuery +impl AppParentFinalityQuery where - S: KVStore - + Codec - + Encode - + Encode - + Codec - + Clone, - DB: KVWritable + KVReadable + 'static + Clone, + DB: KVWritable + KVReadable + 'static + Clone, SS: Blockstore + 'static + Clone, { - pub fn new(app: App) -> Self { + pub fn new(app: App) -> Self { Self { app, gateway_caller: GatewayCaller::default(), @@ -63,15 +55,9 @@ where } } -impl ParentFinalityStateQuery for AppParentFinalityQuery +impl ParentFinalityStateQuery for AppParentFinalityQuery where - S: KVStore - + Codec - + Encode - + Encode - + Codec - + Clone, - DB: KVWritable + KVReadable + 'static + Clone, + DB: KVWritable + KVReadable + 'static + Clone, SS: Blockstore + 'static + Clone, { fn get_latest_committed_finality(&self) -> anyhow::Result> { From d030f49c37ed5a6636d543e3b5462cfd425834a5 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Thu, 9 May 2024 15:25:57 +0100 Subject: [PATCH 3/5] CACHE: Trying to thread the KVWritable through the stack --- Cargo.lock | 1 + fendermint/app/src/cmd/run.rs | 9 ++- fendermint/rocksdb/Cargo.toml | 1 + fendermint/rocksdb/src/kvstore.rs | 15 +++++ fendermint/vm/interpreter/src/chain.rs | 48 ++++++++------ fendermint/vm/interpreter/src/fvm/topdown.rs | 24 ++++--- fendermint/vm/topdown/src/error.rs | 2 + fendermint/vm/topdown/src/finality/fetch.rs | 17 +++-- fendermint/vm/topdown/src/finality/mod.rs | 2 +- fendermint/vm/topdown/src/finality/null.rs | 52 +++++++++++---- fendermint/vm/topdown/src/lib.rs | 2 +- fendermint/vm/topdown/src/sync/mod.rs | 44 +++++++----- fendermint/vm/topdown/src/sync/syncer.rs | 70 +++++++++++++------- fendermint/vm/topdown/src/sync/tendermint.rs | 17 +++-- fendermint/vm/topdown/src/toggle.rs | 7 +- 15 files changed, 204 insertions(+), 107 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eef9f2b30..5c9a066ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3119,6 +3119,7 @@ name = "fendermint_rocksdb" version = "0.1.0" dependencies = [ "anyhow", + "async-stm", "cid", "fendermint_storage", "fvm_ipld_blockstore", diff --git a/fendermint/app/src/cmd/run.rs b/fendermint/app/src/cmd/run.rs index 942a8ac5e..4e5e73b00 100644 --- a/fendermint/app/src/cmd/run.rs +++ b/fendermint/app/src/cmd/run.rs @@ -143,7 +143,8 @@ async fn run(settings: Settings) -> anyhow::Result<()> { .with_push_chain_meta(testing_settings.map_or(true, |t| t.push_chain_meta)); let interpreter = SignedMessageInterpreter::new(interpreter); - let interpreter = ChainMessageInterpreter::<_, NamespaceBlockstore, AppStore>::new(interpreter); + let interpreter = + ChainMessageInterpreter::<_, NamespaceBlockstore, AppStore, RocksDb>::new(interpreter); let interpreter = BytesMessageInterpreter::new( interpreter, ProposalPrepareMode::PrependOnly, @@ -293,7 +294,7 @@ async fn run(settings: Settings) -> anyhow::Result<()> { None }; - let app = App::new( + let app: App = App::new( AppConfig { app_namespace: ns.app, state_hist_namespace: ns.state_hist, @@ -302,7 +303,7 @@ async fn run(settings: Settings) -> anyhow::Result<()> { custom_actors_bundle: settings.custom_actors_bundle(), halt_height: settings.halt_height, }, - db, + db.clone(), state_store, interpreter, ChainEnv { @@ -315,8 +316,10 @@ async fn run(settings: Settings) -> anyhow::Result<()> { if let Some((agent_proxy, config)) = ipc_tuple { let app_parent_finality_query = AppParentFinalityQuery::new(app.clone()); + let db = db.clone(); tokio::spawn(async move { match launch_polling_syncer( + db, app_parent_finality_query, config, parent_finality_provider, diff --git a/fendermint/rocksdb/Cargo.toml b/fendermint/rocksdb/Cargo.toml index 502159b80..a868df1e0 100644 --- a/fendermint/rocksdb/Cargo.toml +++ b/fendermint/rocksdb/Cargo.toml @@ -12,6 +12,7 @@ license.workspace = true num_cpus = "1.14" rocksdb = { version = "0.21", features = ["multi-threaded-cf"] } anyhow = { workspace = true } +async-stm = { workspace = "true" } fendermint_storage = { path = "../storage", optional = true, features = ["testing"] } serde = { workspace = true } thiserror = { workspace = true } diff --git a/fendermint/rocksdb/src/kvstore.rs b/fendermint/rocksdb/src/kvstore.rs index 65280c09a..b97cac3bb 100644 --- a/fendermint/rocksdb/src/kvstore.rs +++ b/fendermint/rocksdb/src/kvstore.rs @@ -209,6 +209,21 @@ impl<'a> KVTransaction for RocksDbWriteTx<'a> { } } +// TODO: Consider how to make these non-panicky. +impl<'a> async_stm::auxtx::Aux for RocksDbWriteTx<'a> { + fn commit(self) -> bool { + match KVTransaction::commit(self) { + Ok(()) => true, + Err(KVError::Conflict) => false, + Err(other) => panic!("failed to commit to RocksDB: {other}"), + } + } + + fn rollback(self) { + KVTransaction::rollback(self).expect("failed to roll back RocksDB") + } +} + impl<'a> Drop for RocksDbWriteTx<'a> { fn drop(&mut self) { if !thread::panicking() { diff --git a/fendermint/vm/interpreter/src/chain.rs b/fendermint/vm/interpreter/src/chain.rs index 866060764..437a074c6 100644 --- a/fendermint/vm/interpreter/src/chain.rs +++ b/fendermint/vm/interpreter/src/chain.rs @@ -11,7 +11,7 @@ use crate::{ use anyhow::{bail, Context}; use async_stm::atomically; use async_trait::async_trait; -use fendermint_storage::KVStore; +use fendermint_storage::{Codec, Encode, KVStore, KVWritable}; use fendermint_tracing::emit; use fendermint_vm_actor_interface::ipc; use fendermint_vm_event::ParentFinalityMissingQuorum; @@ -24,7 +24,8 @@ use fendermint_vm_resolver::pool::{ResolveKey, ResolvePool}; use fendermint_vm_topdown::proxy::IPCProviderProxy; use fendermint_vm_topdown::voting::{ValidatorKey, VoteTally}; use fendermint_vm_topdown::{ - CachedFinalityProvider, IPCParentFinality, ParentFinalityProvider, ParentViewProvider, Toggle, + CachedFinalityProvider, IPCParentFinality, ParentFinalityProvider, ParentViewPayload, + ParentViewProvider, Toggle, }; use fvm_ipld_blockstore::Blockstore; use fvm_ipld_encoding::RawBytes; @@ -84,29 +85,32 @@ pub type ChainMessageCheckRes = Result; /// Interpreter working on chain messages; in the future it will schedule /// CID lookups to turn references into self-contained user or cross messages. #[derive(Clone)] -pub struct ChainMessageInterpreter { +pub struct ChainMessageInterpreter { inner: I, - gateway_caller: GatewayCaller, - store: PhantomData, + gateway_caller: GatewayCaller, + phantom_store: PhantomData, + phantom_db: PhantomData, } -impl ChainMessageInterpreter { +impl ChainMessageInterpreter { pub fn new(inner: I) -> Self { Self { inner, gateway_caller: GatewayCaller::default(), - store: PhantomData, + phantom_db: PhantomData, + phantom_store: PhantomData, } } } #[async_trait] -impl ProposalInterpreter for ChainMessageInterpreter +impl ProposalInterpreter for ChainMessageInterpreter where - DB: Blockstore + Clone + 'static + Send + Sync, I: Sync + Send, - S: KVStore + Send + Sync + 'static, + S: KVStore + Encode + Codec> + Send + Sync + 'static, S::Namespace: Send + Sync + 'static, + BS: Blockstore + Clone + 'static + Send + Sync, + DB: KVWritable + Clone + 'static + Send + Sync, { type State = ChainEnv; type Message = ChainMessage; @@ -225,15 +229,16 @@ where } #[async_trait] -impl ExecInterpreter for ChainMessageInterpreter +impl ExecInterpreter for ChainMessageInterpreter where - DB: Blockstore + Clone + 'static + Send + Sync + Clone, - S: KVStore + Send + Sync + 'static, + S: KVStore + Encode + Codec> + Send + Sync + 'static, S::Namespace: Send + Sync + 'static, + BS: Blockstore + Clone + 'static + Send + Sync + Clone, + DB: KVWritable + Clone + 'static + Send + Sync + Clone, I: ExecInterpreter< Message = VerifiableMessage, DeliverOutput = SignedMessageApplyRes, - State = FvmExecState, + State = FvmExecState, EndOutput = PowerUpdates, >, { @@ -430,9 +435,10 @@ where } #[async_trait] -impl CheckInterpreter for ChainMessageInterpreter +impl CheckInterpreter for ChainMessageInterpreter where - DB: Blockstore + Clone + 'static + Send + Sync, + BS: Blockstore + Clone + 'static + Send + Sync, + DB: Clone + 'static + Send + Sync, S: KVStore + Send + Sync + 'static, S::Namespace: Send + Sync + 'static, I: CheckInterpreter, @@ -481,9 +487,10 @@ where } #[async_trait] -impl QueryInterpreter for ChainMessageInterpreter +impl QueryInterpreter for ChainMessageInterpreter where - DB: Blockstore + Clone + 'static + Send + Sync, + BS: Blockstore + Clone + 'static + Send + Sync, + DB: Clone + 'static + Send + Sync, S: KVStore + Send + Sync + 'static, S::Namespace: Send + Sync + 'static, I: QueryInterpreter, @@ -502,9 +509,10 @@ where } #[async_trait] -impl GenesisInterpreter for ChainMessageInterpreter +impl GenesisInterpreter for ChainMessageInterpreter where - DB: Blockstore + Clone + 'static + Send + Sync, + BS: Blockstore + Clone + 'static + Send + Sync, + DB: Clone + 'static + Send + Sync, S: KVStore + Send + Sync + 'static, S::Namespace: Send + Sync + 'static, I: GenesisInterpreter, diff --git a/fendermint/vm/interpreter/src/fvm/topdown.rs b/fendermint/vm/interpreter/src/fvm/topdown.rs index 719073468..5776f10ba 100644 --- a/fendermint/vm/interpreter/src/fvm/topdown.rs +++ b/fendermint/vm/interpreter/src/fvm/topdown.rs @@ -7,8 +7,10 @@ use crate::fvm::state::ipc::GatewayCaller; use crate::fvm::state::FvmExecState; use crate::fvm::FvmApplyRet; use anyhow::Context; -use fendermint_storage::KVStore; -use fendermint_vm_topdown::{BlockHeight, IPCParentFinality, ParentViewProvider}; +use fendermint_storage::{Codec, Encode, KVStore}; +use fendermint_vm_topdown::{ + BlockHeight, IPCParentFinality, ParentViewPayload, ParentViewProvider, +}; use fvm_ipld_blockstore::Blockstore; use ipc_api::cross::IpcEnvelope; @@ -16,16 +18,16 @@ use super::state::ipc::tokens_to_mint; /// Commit the parent finality. Returns the height that the previous parent finality is committed and /// the committed finality itself. If there is no parent finality committed, genesis epoch is returned. -pub async fn commit_finality( - gateway_caller: &GatewayCaller, - state: &mut FvmExecState, +pub async fn commit_finality( + gateway_caller: &GatewayCaller, + state: &mut FvmExecState, finality: IPCParentFinality, provider: &TopDownFinalityProvider, ) -> anyhow::Result<(BlockHeight, Option)> where - DB: Blockstore + Sync + Send + Clone + 'static, - S: KVStore + 'static, + S: KVStore + Encode + Codec> + 'static, S::Namespace: Send + Sync + 'static, + BS: Blockstore + Sync + Send + Clone + 'static, { let (prev_height, prev_finality) = if let Some(prev_finality) = gateway_caller.commit_parent_finality(state, finality)? { @@ -43,13 +45,13 @@ where /// Execute the top down messages implicitly. Before the execution, mint to the gateway of the funds /// transferred in the messages, and increase the circulating supply with the incoming value. -pub async fn execute_topdown_msgs( - gateway_caller: &GatewayCaller, - state: &mut FvmExecState, +pub async fn execute_topdown_msgs( + gateway_caller: &GatewayCaller, + state: &mut FvmExecState, messages: Vec, ) -> anyhow::Result where - DB: Blockstore + Sync + Send + Clone + 'static, + BS: Blockstore + Sync + Send + Clone + 'static, { let minted_tokens = tokens_to_mint(&messages); tracing::debug!(token = minted_tokens.to_string(), "tokens to mint in child"); diff --git a/fendermint/vm/topdown/src/error.rs b/fendermint/vm/topdown/src/error.rs index eef6090d7..6ac043043 100644 --- a/fendermint/vm/topdown/src/error.rs +++ b/fendermint/vm/topdown/src/error.rs @@ -15,4 +15,6 @@ pub enum Error { ParentChainReorgDetected, #[error("Cannot query parent at height {1}: {0}")] CannotQueryParent(String, BlockHeight), + #[error("Database error: {0}")] + Database(String), } diff --git a/fendermint/vm/topdown/src/finality/fetch.rs b/fendermint/vm/topdown/src/finality/fetch.rs index 5625d2dac..dd5cea24f 100644 --- a/fendermint/vm/topdown/src/finality/fetch.rs +++ b/fendermint/vm/topdown/src/finality/fetch.rs @@ -9,7 +9,7 @@ use crate::{ ParentFinalityProvider, ParentViewProvider, }; use async_stm::{Stm, StmResult}; -use fendermint_storage::KVStore; +use fendermint_storage::{Codec, Encode, KVStore, KVWrite}; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; use std::sync::Arc; @@ -68,7 +68,7 @@ macro_rules! retry { impl ParentViewProvider for CachedFinalityProvider where T: ParentQueryProxy + Send + Sync + 'static, - S: KVStore, + S: KVStore + Encode + Codec>, S::Namespace: Send + Sync + 'static, { fn genesis_epoch(&self) -> anyhow::Result { @@ -119,7 +119,7 @@ where impl ParentFinalityProvider for CachedFinalityProvider where T: ParentQueryProxy + Send + Sync + 'static, - S: KVStore, + S: KVStore + Encode + Codec>, S::Namespace: Send + Sync + 'static, { fn next_proposal(&self) -> Stm> { @@ -139,7 +139,11 @@ where } } -impl CachedFinalityProvider { +impl CachedFinalityProvider +where + T: ParentQueryProxy + Send + Sync + 'static, + S: KVStore + Encode + Codec>, +{ /// Creates an uninitialized provider /// We need this because `fendermint` has yet to be initialized and might /// not be able to provide an existing finality from the storage. This provider requires an @@ -201,7 +205,7 @@ impl CachedFinalityProv impl CachedFinalityProvider where - S: KVStore, + S: KVStore + Encode + Codec>, { pub(crate) fn new( config: Config, @@ -247,10 +251,11 @@ where pub fn new_parent_view( &self, + tx: &mut impl KVWrite, height: BlockHeight, maybe_payload: Option, ) -> StmResult<(), Error> { - self.inner.new_parent_view(height, maybe_payload) + self.inner.new_parent_view(tx, height, maybe_payload) } /// Returns the number of blocks cached. diff --git a/fendermint/vm/topdown/src/finality/mod.rs b/fendermint/vm/topdown/src/finality/mod.rs index 4664264ba..42d991c93 100644 --- a/fendermint/vm/topdown/src/finality/mod.rs +++ b/fendermint/vm/topdown/src/finality/mod.rs @@ -12,7 +12,7 @@ use ipc_api::staking::StakingChangeRequest; pub use fetch::CachedFinalityProvider; -pub(crate) type ParentViewPayload = (BlockHash, Vec, Vec); +pub type ParentViewPayload = (BlockHash, Vec, Vec); fn ensure_sequential u64>(msgs: &[T], f: F) -> StmResult<(), Error> { if msgs.is_empty() { diff --git a/fendermint/vm/topdown/src/finality/null.rs b/fendermint/vm/topdown/src/finality/null.rs index 0dec8684e..0300e04ef 100644 --- a/fendermint/vm/topdown/src/finality/null.rs +++ b/fendermint/vm/topdown/src/finality/null.rs @@ -5,8 +5,8 @@ use crate::finality::{ ensure_sequential, topdown_cross_msgs, validator_changes, ParentViewPayload, }; use crate::{BlockHash, BlockHeight, Config, Error, IPCParentFinality, SequentialKeyCache}; -use async_stm::{abort, atomically, Stm, StmResult, TVar}; -use fendermint_storage::{KVCollection, KVStore}; +use async_stm::{abort, atomically, Stm, StmError, StmResult, TVar}; +use fendermint_storage::{Codec, Encode, KVCollection, KVError, KVStore, KVWrite}; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; use std::cmp::min; @@ -31,7 +31,7 @@ pub struct FinalityWithNull { impl FinalityWithNull where - S: KVStore, + S: KVStore + Encode + Codec>, { pub fn new( config: Config, @@ -76,19 +76,21 @@ where /// Clear the cache and set the committed finality to the provided value pub fn reset(&self, finality: IPCParentFinality) -> Stm<()> { + // TODO: Delete all values from the KVCollection self.cached_data.write(SequentialKeyCache::sequential())?; self.last_committed_finality.write(Some(finality)) } pub fn new_parent_view( &self, + tx: &mut impl KVWrite, height: BlockHeight, maybe_payload: Option, ) -> StmResult<(), Error> { if let Some((block_hash, validator_changes, top_down_msgs)) = maybe_payload { - self.parent_block_filled(height, block_hash, validator_changes, top_down_msgs) + self.parent_block_filled(tx, height, block_hash, validator_changes, top_down_msgs) } else { - self.parent_null_round(height) + self.parent_null_round(tx, height) } } @@ -146,7 +148,7 @@ where impl FinalityWithNull where - S: KVStore, + S: KVStore + Encode + Codec>, { /// Returns the number of blocks cached. pub(crate) fn cached_blocks(&self) -> Stm { @@ -198,7 +200,7 @@ where /// All the private functions impl FinalityWithNull where - S: KVStore, + S: KVStore + Encode + Codec>, { fn propose_next_height(&self) -> Stm> { let latest_height = if let Some(h) = self.latest_height_in_cache()? { @@ -285,6 +287,7 @@ where fn parent_block_filled( &self, + tx: &mut impl KVWrite, height: BlockHeight, block_hash: BlockHash, validator_changes: Vec, @@ -300,9 +303,15 @@ where ensure_sequential(&validator_changes, |change| change.configuration_number)?; } + let payload = Some((block_hash, validator_changes, top_down_msgs)); + + self.stored_data + .put(tx, &height, &payload) + .map_err(to_stm_err)?; + let r = self.cached_data.modify(|mut cache| { let r = cache - .append(height, Some((block_hash, validator_changes, top_down_msgs))) + .append(height, payload) .map_err(Error::NonSequentialParentViewInsert); (cache, r) })?; @@ -315,7 +324,11 @@ where } /// When there is a new parent view, but it is actually a null round, call this function. - fn parent_null_round(&self, height: BlockHeight) -> StmResult<(), Error> { + fn parent_null_round( + &self, + tx: &mut impl KVWrite, + height: BlockHeight, + ) -> StmResult<(), Error> { let r = self.cached_data.modify(|mut cache| { let r = cache .append(height, None) @@ -327,6 +340,10 @@ where return abort(e); } + self.stored_data + .put(tx, &height, &None) + .map_err(to_stm_err)?; + Ok(()) } @@ -384,13 +401,21 @@ where } } +fn to_stm_err(e: KVError) -> StmError { + match e { + KVError::Conflict => StmError::Control(async_stm::StmControl::Failure), + KVError::Abort(e) => StmError::Abort(Error::Database(e.to_string())), + KVError::Codec(e) => StmError::Abort(Error::Database(e.to_string())), + KVError::Unexpected(e) => StmError::Abort(Error::Database(e.to_string())), + } +} #[cfg(test)] mod tests { use super::FinalityWithNull; use crate::finality::ParentViewPayload; use crate::{BlockHeight, Config, IPCParentFinality}; - use async_stm::{atomically, atomically_or_err}; - use fendermint_storage::{KVCollection, KVStore}; + use async_stm::{atomically, atomically_or_err, atomically_or_err_aux}; + use fendermint_storage::{KVCollection, KVStore, KVWritable}; struct TestStore; @@ -418,6 +443,9 @@ mod tests { blocks.remove(0); + // Not using a store in these tests. + let ims = fendermint_storage::im::InMemoryBackend::default(); + let f = FinalityWithNull::new( config, 1, @@ -425,7 +453,7 @@ mod tests { test_store::new_parent_view_store(), ); for (h, p) in blocks { - atomically_or_err(|| f.new_parent_view(h, p.clone())) + atomically_or_err_aux(|| ims.write(), |tx| f.new_parent_view(tx, h, p.clone())) .await .unwrap(); } diff --git a/fendermint/vm/topdown/src/lib.rs b/fendermint/vm/topdown/src/lib.rs index 91390093e..e6022a058 100644 --- a/fendermint/vm/topdown/src/lib.rs +++ b/fendermint/vm/topdown/src/lib.rs @@ -23,7 +23,7 @@ use std::time::Duration; pub use crate::cache::{SequentialAppendError, SequentialKeyCache, ValueIter}; pub use crate::error::Error; -pub use crate::finality::CachedFinalityProvider; +pub use crate::finality::{CachedFinalityProvider, ParentViewPayload}; pub use crate::toggle::Toggle; pub type BlockHeight = u64; diff --git a/fendermint/vm/topdown/src/sync/mod.rs b/fendermint/vm/topdown/src/sync/mod.rs index 473486242..397210795 100644 --- a/fendermint/vm/topdown/src/sync/mod.rs +++ b/fendermint/vm/topdown/src/sync/mod.rs @@ -5,6 +5,7 @@ mod syncer; mod tendermint; +use crate::finality::ParentViewPayload; use crate::proxy::ParentQueryProxy; use crate::sync::syncer::LotusParentSyncer; use crate::sync::tendermint::TendermintAwareSyncer; @@ -12,8 +13,9 @@ use crate::voting::VoteTally; use crate::{CachedFinalityProvider, Config, IPCParentFinality, ParentFinalityProvider, Toggle}; use anyhow::anyhow; use async_stm::atomically; +use async_stm::auxtx::Aux; use ethers::utils::hex; -use fendermint_storage::KVStore; +use fendermint_storage::{Codec, Encode, KVStore, KVWritable}; use ipc_ipld_resolver::ValidatorKey; use std::sync::Arc; use std::time::Duration; @@ -107,7 +109,8 @@ where } /// Start the polling parent syncer in the background -pub async fn launch_polling_syncer( +pub async fn launch_polling_syncer( + db: DB, query: T, config: Config, view_provider: Arc>>, @@ -119,8 +122,10 @@ where T: ParentFinalityStateQuery + Send + Sync + 'static, C: tendermint_rpc::Client + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, - S: KVStore + 'static, + S: KVStore + Encode + Codec> + 'static, S::Namespace: Send + Sync + 'static, + DB: KVWritable + Send + Sync + Clone + 'static, + for<'a> DB::Tx<'a>: Aux, { if !view_provider.is_enabled() { return Err(anyhow!("provider not enabled, enable to run syncer")); @@ -152,21 +157,24 @@ where "launching parent syncer with last committed finality" ); - start_syncing( + sync_loop( config, + db, view_provider, vote_tally, parent_client, query, tendermint_client, - ); + ) + .await; Ok(()) } /// Start the parent finality listener in the background -fn start_syncing( +async fn sync_loop( config: Config, + db: DB, view_provider: Arc>>, vote_tally: VoteTally, parent_proxy: Arc

, @@ -176,25 +184,25 @@ fn start_syncing( T: ParentFinalityStateQuery + Send + Sync + 'static, C: tendermint_rpc::Client + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, - S: KVStore + 'static, + S: KVStore + Encode + Codec> + 'static, S::Namespace: Send + Sync + 'static, + DB: KVWritable + Send + Sync + Clone + 'static, + for<'a> DB::Tx<'a>: Aux, { let mut interval = tokio::time::interval(config.polling_interval); interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); - tokio::spawn(async move { - let lotus_syncer = - LotusParentSyncer::new(config, parent_proxy, view_provider, vote_tally, query) - .expect(""); + let lotus_syncer = + LotusParentSyncer::new(config, db, parent_proxy, view_provider, vote_tally, query) + .expect("failed to create Lotus syncer"); - let mut tendermint_syncer = TendermintAwareSyncer::new(lotus_syncer, tendermint_client); + let mut tendermint_syncer = TendermintAwareSyncer::new(lotus_syncer, tendermint_client); - loop { - interval.tick().await; + loop { + interval.tick().await; - if let Err(e) = tendermint_syncer.sync().await { - tracing::error!(error = e.to_string(), "sync with parent encountered error"); - } + if let Err(e) = tendermint_syncer.sync().await { + tracing::error!(error = e.to_string(), "sync with parent encountered error"); } - }); + } } diff --git a/fendermint/vm/topdown/src/sync/syncer.rs b/fendermint/vm/topdown/src/sync/syncer.rs index a1561cb07..e2c6a728b 100644 --- a/fendermint/vm/topdown/src/sync/syncer.rs +++ b/fendermint/vm/topdown/src/sync/syncer.rs @@ -10,9 +10,10 @@ use crate::{ is_null_round_str, BlockHash, BlockHeight, CachedFinalityProvider, Config, Error, Toggle, }; use anyhow::anyhow; -use async_stm::{atomically, atomically_or_err, StmError}; +use async_stm::auxtx::Aux; +use async_stm::{atomically, atomically_or_err_aux, StmError}; use ethers::utils::hex; -use fendermint_storage::KVStore; +use fendermint_storage::{Codec, Encode, KVStore, KVWritable}; use libp2p::futures::TryFutureExt; use std::sync::Arc; use tracing::instrument; @@ -22,7 +23,7 @@ use fendermint_vm_event::{BlockHashHex, NewParentView}; /// Parent syncer that constantly poll parent. This struct handles lotus null blocks and deferred /// execution. For ETH based parent, it should work out of the box as well. -pub(crate) struct LotusParentSyncer { +pub(crate) struct LotusParentSyncer { config: Config, parent_proxy: Arc

, provider: Arc>>, @@ -36,17 +37,22 @@ pub(crate) struct LotusParentSyncer { /// the polling frequence to where it's impractical after /// we have caught up. sync_many: bool, + + db: DB, } -impl LotusParentSyncer +impl LotusParentSyncer where T: ParentFinalityStateQuery + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, - S: KVStore + 'static, + S: KVStore + Encode + Codec> + 'static, S::Namespace: Send + Sync + 'static, + DB: KVWritable + Clone, + for<'a> DB::Tx<'a>: Aux, { pub fn new( config: Config, + db: DB, parent_proxy: Arc

, provider: Arc>>, vote_tally: VoteTally, @@ -59,6 +65,7 @@ where vote_tally, query, sync_many: true, + db, }) } @@ -125,12 +132,14 @@ where } } -impl LotusParentSyncer +impl LotusParentSyncer where T: ParentFinalityStateQuery + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, - S: KVStore + 'static, + S: KVStore + Encode + Codec> + 'static, S::Namespace: Send + Sync + 'static, + DB: KVWritable + Clone, + for<'a> DB::Tx<'a>: Aux, { async fn exceed_cache_size_limit(&self) -> bool { let max_cache_blocks = self.config.max_cache_blocks(); @@ -190,6 +199,7 @@ where parent_block_hash = hex::encode(&parent_block_hash), "polling height with parent hash" ); + let db = self.db.clone(); let block_hash_res = match self.parent_proxy.get_block_hash(height).await { Ok(res) => res, @@ -201,13 +211,16 @@ where "detected null round at height, inserted None to cache" ); - atomically_or_err::<_, Error, _>(|| { - self.provider.new_parent_view(height, None)?; - self.vote_tally - .add_block(height, None) - .map_err(map_voting_err)?; - Ok(()) - }) + atomically_or_err_aux::<_, Error, _, _, _>( + || db.write(), + |tx| { + self.provider.new_parent_view(tx, height, None)?; + self.vote_tally + .add_block(height, None) + .map_err(map_voting_err)?; + Ok(()) + }, + ) .await?; emit!(NewParentView { @@ -248,17 +261,21 @@ where "fetched data" ); - atomically_or_err::<_, Error, _>(|| { - // This is here so we see if there is abnormal amount of retries for some reason. - tracing::debug!(height, "adding data to the cache"); - - self.provider.new_parent_view(height, Some(data.clone()))?; - self.vote_tally - .add_block(height, Some(data.0.clone())) - .map_err(map_voting_err)?; - tracing::debug!(height, "non-null block pushed to cache"); - Ok(()) - }) + atomically_or_err_aux::<_, Error, _, _, _>( + || db.write(), + |tx| { + // This is here so we see if there is abnormal amount of retries for some reason. + tracing::debug!(height, "adding data to the cache"); + + self.provider + .new_parent_view(tx, height, Some(data.clone()))?; + self.vote_tally + .add_block(height, Some(data.0.clone())) + .map_err(map_voting_err)?; + tracing::debug!(height, "non-null block pushed to cache"); + Ok(()) + }, + ) .await?; emit!(NewParentView { @@ -405,6 +422,7 @@ mod tests { use anyhow::anyhow; use async_stm::atomically; use async_trait::async_trait; + use fendermint_storage::im::InMemoryBackend; use fendermint_vm_genesis::{Power, Validator}; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; @@ -514,9 +532,11 @@ mod tests { genesis_epoch, Some(committed_finality.clone()), proxy.clone(), + test_store, ); let mut syncer = LotusParentSyncer::new( config, + InMemoryBackend::default(), proxy, Arc::new(Toggle::enabled(provider)), vote_tally, diff --git a/fendermint/vm/topdown/src/sync/tendermint.rs b/fendermint/vm/topdown/src/sync/tendermint.rs index a0b8ffd9e..06375083f 100644 --- a/fendermint/vm/topdown/src/sync/tendermint.rs +++ b/fendermint/vm/topdown/src/sync/tendermint.rs @@ -2,27 +2,30 @@ // SPDX-License-Identifier: Apache-2.0, MIT //! The tendermint aware syncer -use crate::proxy::ParentQueryProxy; use crate::sync::syncer::LotusParentSyncer; use crate::sync::ParentFinalityStateQuery; +use crate::{finality::ParentViewPayload, proxy::ParentQueryProxy}; use anyhow::Context; -use fendermint_storage::KVStore; +use async_stm::auxtx::Aux; +use fendermint_storage::{Codec, Encode, KVStore, KVWritable}; /// Tendermint aware syncer -pub(crate) struct TendermintAwareSyncer { - inner: LotusParentSyncer, +pub(crate) struct TendermintAwareSyncer { + inner: LotusParentSyncer, tendermint_client: C, } -impl TendermintAwareSyncer +impl TendermintAwareSyncer where T: ParentFinalityStateQuery + Send + Sync + 'static, C: tendermint_rpc::Client + Send + Sync + 'static, P: ParentQueryProxy + Send + Sync + 'static, - S: KVStore + 'static, + S: KVStore + Encode + Codec> + 'static, S::Namespace: Send + Sync + 'static, + DB: KVWritable + Send + Sync + Clone + 'static, + for<'a> DB::Tx<'a>: Aux, { - pub fn new(inner: LotusParentSyncer, tendermint_client: C) -> Self { + pub fn new(inner: LotusParentSyncer, tendermint_client: C) -> Self { Self { inner, tendermint_client, diff --git a/fendermint/vm/topdown/src/toggle.rs b/fendermint/vm/topdown/src/toggle.rs index a9faada80..f8a067a56 100644 --- a/fendermint/vm/topdown/src/toggle.rs +++ b/fendermint/vm/topdown/src/toggle.rs @@ -8,7 +8,7 @@ use crate::{ }; use anyhow::anyhow; use async_stm::{Stm, StmResult}; -use fendermint_storage::KVStore; +use fendermint_storage::{Codec, Encode, KVStore, KVWrite}; use ipc_api::cross::IpcEnvelope; use ipc_api::staking::StakingChangeRequest; @@ -94,7 +94,7 @@ impl ParentFinalityProvider f impl Toggle> where - S: KVStore, + S: KVStore + Encode + Codec>, { pub fn block_hash(&self, height: BlockHeight) -> Stm> { self.perform_or_else(|p| p.block_hash(height), None) @@ -114,10 +114,11 @@ where pub fn new_parent_view( &self, + tx: &mut impl KVWrite, height: BlockHeight, maybe_payload: Option, ) -> StmResult<(), Error> { - self.perform_or_else(|p| p.new_parent_view(height, maybe_payload), ()) + self.perform_or_else(|p| p.new_parent_view(tx, height, maybe_payload), ()) } pub fn reset(&self, finality: IPCParentFinality) -> Stm<()> { From 2ac93a04c262b28c546ad61c447a6964542db27b Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Thu, 9 May 2024 16:16:07 +0100 Subject: [PATCH 4/5] CACHE: Try with a local patch --- Cargo.lock | 2 -- Cargo.toml | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5c9a066ba..d6bae68a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -463,8 +463,6 @@ dependencies = [ [[package]] name = "async-stm" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329f9e3620d0987cddea11769a8ef3ce6f60d794b891ced477033ecc6c8310e" dependencies = [ "parking_lot", "tokio", diff --git a/Cargo.toml b/Cargo.toml index 3b7e25e99..fb2f632d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -230,6 +230,8 @@ gcra = { git = "https://github.com/consensus-shipyard/gcra-rs.git", branch = "ma # Contains some API changes that the upstream has not merged. merkle-tree-rs = { git = "https://github.com/consensus-shipyard/merkle-tree-rs.git", branch = "dev" } +async-stm = { path = "/home/aakoshh/projects/samples/rust/async-stm-rs" } + [profile.wasm] inherits = "release" panic = "abort" From cf7b80601ea37f9496296929a0e52882d46859a3 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Thu, 9 May 2024 19:12:03 +0100 Subject: [PATCH 5/5] CACHE: Upgrade to async-stm 0.5.0 --- Cargo.lock | 1231 ++++++++++++++++++++++++++-------------------------- Cargo.toml | 4 +- 2 files changed, 618 insertions(+), 617 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d6bae68a5..99f82d1cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,9 +84,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -97,18 +97,18 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "ambassador" @@ -148,47 +148,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.12" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -196,9 +197,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" dependencies = [ "backtrace", ] @@ -324,28 +325,27 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" dependencies = [ "concurrent-queue", - "event-listener 5.1.0", - "event-listener-strategy 0.5.0", + "event-listener 5.3.0", + "event-listener-strategy 0.5.2", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" dependencies = [ - "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", + "fastrand 2.1.0", + "futures-lite 2.3.0", "slab", ] @@ -355,12 +355,12 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.2.0", + "async-channel 2.2.1", "async-executor", - "async-io 2.3.1", + "async-io 2.3.2", "async-lock 3.3.0", "blocking", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "once_cell", ] @@ -386,18 +386,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" dependencies = [ "async-lock 3.3.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "parking", - "polling 3.5.0", - "rustix 0.38.31", + "polling 3.7.0", + "rustix 0.38.34", "slab", "tracing", "windows-sys 0.52.0", @@ -425,13 +425,13 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.0.5" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -462,7 +462,9 @@ dependencies = [ [[package]] name = "async-stm" -version = "0.4.0" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d73edbe754e16984f3e920adc0849d13253cd07694eb9ebcc80d3a6404e9550b" dependencies = [ "parking_lot", "tokio", @@ -470,19 +472,19 @@ dependencies = [ [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -568,20 +570,20 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -637,9 +639,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line 0.21.0", "cc", @@ -680,6 +682,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -772,7 +780,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -804,9 +812,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" dependencies = [ "serde", ] @@ -903,18 +911,16 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" dependencies = [ - "async-channel 2.2.0", + "async-channel 2.2.1", "async-lock 3.3.0", "async-task", - "fastrand 2.0.1", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "piper", - "tracing", ] [[package]] @@ -1027,7 +1033,7 @@ dependencies = [ "serde_urlencoded", "thiserror", "tokio", - "tokio-util 0.7.10", + "tokio-util 0.7.11", "url", "winapi", ] @@ -1040,14 +1046,14 @@ checksum = "b58071e8fd9ec1e930efd28e3a90c1251015872a2ce49f81f36421b86466932e" dependencies = [ "serde", "serde_repr", - "serde_with 3.6.1", + "serde_with 3.8.1", ] [[package]] name = "bs58" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ "sha2 0.10.8", "tinyvec", @@ -1055,9 +1061,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.3" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-slice-cast" @@ -1073,9 +1079,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" dependencies = [ "serde", ] @@ -1112,9 +1118,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] @@ -1162,11 +1168,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.88" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" dependencies = [ + "jobserver", "libc", + "once_cell", ] [[package]] @@ -1210,15 +1218,15 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.3", + "windows-targets 0.52.5", ] [[package]] @@ -1283,9 +1291,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -1293,35 +1301,35 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.0", + "strsim 0.11.1", ] [[package]] name = "clap_complete" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c" +checksum = "dd79504325bf38b10165b02e89b4347300f855f273c4cb30c4a3209e6583275e" dependencies = [ - "clap 4.5.1", + "clap 4.5.4", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -1384,15 +1392,15 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -1432,9 +1440,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbd12d49ab0eaf8193ba9175e45f56bbc2e4b27d57b8cfe62aa47942a46b9a9" +checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" dependencies = [ "cfg-if", "cpufeatures", @@ -1642,9 +1650,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" dependencies = [ "crossbeam-utils", ] @@ -1796,7 +1804,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -1833,7 +1841,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -1844,7 +1852,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -1854,7 +1862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1862,15 +1870,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "data-encoding-macro" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c01c06f5f429efdf2bae21eb67c28b3df3cf85b7dd2d8ef09c0838dac5d33e" +checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -1878,9 +1886,9 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0047d07f2c89b17dd631c80450d69841a6b5d7fb17278cbc43d7e4cfcf2576f3" +checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f" dependencies = [ "data-encoding", "syn 1.0.109", @@ -1892,7 +1900,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ - "uuid 1.7.0", + "uuid 1.8.0", ] [[package]] @@ -1907,9 +1915,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "zeroize", @@ -1947,7 +1955,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -2051,7 +2059,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -2118,7 +2126,7 @@ version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der 0.7.8", + "der 0.7.9", "digest 0.10.7", "elliptic-curve 0.13.8", "rfc6979 0.4.0", @@ -2166,9 +2174,9 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "elliptic-curve" @@ -2211,27 +2219,27 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" dependencies = [ "log", ] [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] [[package]] name = "enr" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" dependencies = [ "base64 0.21.7", "bytes", @@ -2254,7 +2262,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -2310,9 +2318,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2390,9 +2398,9 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c7cd562832e2ff584fa844cd2f6e5d4f35bbe11b28c7c9b8df957b2e1d0c701" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -2406,9 +2414,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35dc9a249c066d17e8947ff52a4116406163cf92c7f0763cb8c001760b26403f" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" dependencies = [ "ethers-core", "once_cell", @@ -2418,9 +2426,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" dependencies = [ "const-hex", "ethers-contract-abigen", @@ -2437,9 +2445,9 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f96502317bf34f6d71a3e3d270defaa9485d754d789e15a8e04a84161c95eb" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" dependencies = [ "Inflector", "const-hex", @@ -2454,16 +2462,16 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.51", - "toml 0.8.10", + "syn 2.0.61", + "toml 0.8.12", "walkdir", ] [[package]] name = "ethers-contract-derive" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "452ff6b0a64507ce8d67ffd48b1da3b42f03680dcf5382244e9c93822cbbf5de" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" dependencies = [ "Inflector", "const-hex", @@ -2472,14 +2480,14 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] name = "ethers-core" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec 0.7.4", "bytes", @@ -2497,8 +2505,8 @@ dependencies = [ "rlp", "serde", "serde_json", - "strum 0.25.0", - "syn 2.0.51", + "strum", + "syn 2.0.61", "tempfile", "thiserror", "tiny-keccak", @@ -2507,9 +2515,9 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d45b981f5fa769e1d0343ebc2a44cfa88c9bc312eb681b676318b40cef6fb1" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" dependencies = [ "chrono", "ethers-core", @@ -2523,9 +2531,9 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145211f34342487ef83a597c1e69f0d3e01512217a7c72cc8a25931854c7dca0" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" dependencies = [ "async-trait", "auto_impl", @@ -2550,9 +2558,9 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" dependencies = [ "async-trait", "auto_impl", @@ -2588,9 +2596,9 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b125a103b56aef008af5d5fb48191984aa326b50bfd2557d231dc499833de3" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" dependencies = [ "async-trait", "coins-bip32", @@ -2607,9 +2615,9 @@ dependencies = [ [[package]] name = "ethers-solc" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d21df08582e0a43005018a858cc9b465c5fff9cf4056651be64f844e57d1f55f" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" dependencies = [ "cfg-if", "const-hex", @@ -2656,9 +2664,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.1.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" dependencies = [ "concurrent-queue", "parking", @@ -2677,11 +2685,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.1.0", + "event-listener 5.3.0", "pin-project-lite", ] @@ -2713,7 +2721,7 @@ checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -2764,9 +2772,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fdlimit" @@ -2925,7 +2933,7 @@ dependencies = [ "anyhow", "bytes", "cid", - "clap 4.5.1", + "clap 4.5.4", "fendermint_materializer", "fendermint_vm_actor_interface", "fendermint_vm_genesis", @@ -3019,7 +3027,7 @@ dependencies = [ "async-trait", "axum", "cid", - "clap 4.5.1", + "clap 4.5.4", "erased-serde", "ethers", "ethers-contract", @@ -3107,7 +3115,7 @@ dependencies = [ "tempfile", "tendermint-rpc", "tokio", - "toml 0.8.10", + "toml 0.8.12", "tracing", "url", ] @@ -3139,7 +3147,7 @@ dependencies = [ "base64 0.21.7", "bytes", "cid", - "clap 4.5.1", + "clap 4.5.4", "ethers", "fendermint_crypto", "fendermint_vm_actor_interface", @@ -3200,7 +3208,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "toml 0.8.10", + "toml 0.8.12", ] [[package]] @@ -3272,7 +3280,7 @@ dependencies = [ name = "fendermint_vm_event" version = "0.1.0" dependencies = [ - "strum 0.26.1", + "strum", ] [[package]] @@ -3357,7 +3365,7 @@ dependencies = [ "thiserror", "tokio", "tokio-stream", - "tokio-util 0.7.10", + "tokio-util 0.7.11", "tracing", ] @@ -3436,7 +3444,7 @@ dependencies = [ "tendermint-rpc", "thiserror", "tokio", - "tokio-util 0.7.10", + "tokio-util 0.7.11", "tracing", ] @@ -3450,7 +3458,7 @@ dependencies = [ "async-trait", "bytes", "cid", - "clap 4.5.1", + "clap 4.5.4", "ethers", "fendermint_crypto", "fendermint_storage", @@ -3502,9 +3510,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382" +checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" [[package]] name = "fil_actor_bundler" @@ -3515,7 +3523,7 @@ dependencies = [ "anyhow", "async-std", "cid", - "clap 4.5.1", + "clap 4.5.4", "futures", "fvm_ipld_blockstore", "fvm_ipld_car", @@ -3691,9 +3699,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -3902,11 +3910,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.1.0", "futures-core", "futures-io", "parking", @@ -3931,7 +3939,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -3941,7 +3949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35bd3cf68c183738046838e300353e4716c674dc5e56890de4826801a6622a28" dependencies = [ "futures-io", - "rustls 0.21.10", + "rustls 0.21.12", ] [[package]] @@ -4078,9 +4086,9 @@ dependencies = [ [[package]] name = "fvm_ipld_blockstore" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417f52f6915b9f9a68de8462e1cf46f14a2c16420f484b8d2066873de2ffe420" +checksum = "d064b957420f5ecc137a153baaa6c32e2eb19b674135317200b6f2537eabdbfd" dependencies = [ "anyhow", "cid", @@ -4183,7 +4191,7 @@ checksum = "95f9a003148f592d1b24124b27c9a52f00902b23233515b45b65730dbbfc0c03" dependencies = [ "anyhow", "arbitrary", - "bitflags 2.4.2", + "bitflags 2.5.0", "blake2b_simd", "bls-signatures 0.15.0", "cid", @@ -4220,7 +4228,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "debugid", "fxhash", "serde", @@ -4259,9 +4267,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -4272,9 +4280,9 @@ dependencies = [ [[package]] name = "ghash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", "polyval", @@ -4343,9 +4351,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -4353,10 +4361,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.2.3", + "indexmap 2.2.6", "slab", "tokio", - "tokio-util 0.7.10", + "tokio-util 0.7.11", "tracing", ] @@ -4375,16 +4383,16 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", ] [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "allocator-api2", ] @@ -4446,6 +4454,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -4457,9 +4471,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379dada1584ad501b383485dd706b8afb7a70fcbc7f4da7d780638a5a6124a60" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -4490,9 +4504,9 @@ checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" [[package]] name = "hickory-proto" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "091a6fbccf4860009355e3efc52ff4acf37a63489aad7435372d44ceeb6fbbcf" +checksum = "07698b8420e2f0d6447a436ba999ec85d8fbf2a398bbd737b82cac4a2e96e512" dependencies = [ "async-trait", "cfg-if", @@ -4505,7 +4519,7 @@ dependencies = [ "ipnet", "once_cell", "rand", - "socket2 0.5.6", + "socket2 0.5.7", "thiserror", "tinyvec", "tokio", @@ -4515,9 +4529,9 @@ dependencies = [ [[package]] name = "hickory-resolver" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35b8f021164e6a984c9030023544c57789c51760065cd510572fedcfb04164e8" +checksum = "28757f23aa75c98f254cf0405e6d8c25b831b32921b050a66692427679b1f243" dependencies = [ "cfg-if", "futures-util", @@ -4595,9 +4609,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -4659,7 +4673,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tower-service", "tracing", @@ -4712,7 +4726,7 @@ dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.10", + "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", ] @@ -4808,7 +4822,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" dependencies = [ - "async-io 2.3.1", + "async-io 2.3.2", "core-foundation", "fnv", "futures", @@ -4911,20 +4925,20 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.3" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "inout" @@ -4957,7 +4971,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.8", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] @@ -4995,7 +5009,7 @@ dependencies = [ "serde_json", "serde_tuple", "serde_with 2.3.3", - "strum 0.26.1", + "strum", "thiserror", "tracing", ] @@ -5010,7 +5024,7 @@ dependencies = [ "base64 0.21.7", "bytes", "cid", - "clap 4.5.1", + "clap 4.5.4", "clap_complete", "env_logger 0.10.2", "ethers", @@ -5035,7 +5049,7 @@ dependencies = [ "serde_bytes", "serde_json", "serde_tuple", - "strum 0.26.1", + "strum", "thiserror", "tokio", "tokio-tungstenite 0.18.0", @@ -5077,12 +5091,12 @@ dependencies = [ "serde_json", "serde_tuple", "serde_with 2.3.3", - "strum 0.26.1", + "strum", "tempfile", "thiserror", "tokio", "tokio-tungstenite 0.18.0", - "toml 0.8.10", + "toml 0.8.12", "tracing", "url", "zeroize", @@ -5115,7 +5129,7 @@ dependencies = [ name = "ipc-wallet" version = "0.1.0" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "anyhow", "argon2", "base64 0.21.7", @@ -5193,7 +5207,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.6", + "socket2 0.5.7", "widestring", "windows-sys 0.48.0", "winreg", @@ -5211,11 +5225,17 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.8", + "hermit-abi 0.3.9", "libc", "windows-sys 0.52.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "itertools" version = "0.7.11" @@ -5254,15 +5274,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -5363,31 +5392,33 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", "bit-set", - "diff", "ena", - "is-terminal", - "itertools 0.10.5", + "itertools 0.11.0", "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.7.5", + "regex-syntax 0.8.3", "string_cache", "term", "tiny-keccak", "unicode-xid", + "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.6", +] [[package]] name = "lazy_static" @@ -5412,9 +5443,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libipld" @@ -5468,12 +5499,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.5", ] [[package]] @@ -5639,9 +5670,9 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.44.1" +version = "0.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20499a945d2f0221fdc6269b3848892c0f370d2ee3e19c7f65a29d8f860f6126" +checksum = "b5d635ebea5ca0c3c3e77d414ae9b67eccf2a822be06091b9c1a0d13029a1e2f" dependencies = [ "asynchronous-codec 0.7.0", "either", @@ -5726,7 +5757,7 @@ dependencies = [ "libp2p-swarm", "rand", "smallvec", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tracing", "void", @@ -5798,9 +5829,9 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.44.0" +version = "0.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b94ee41bd8c294194fe608851e45eb98de26fe79bc7913838cbffbfe8c7ce2" +checksum = "a1de5a6cf64fba7f7e8f2102711c9c6c043a8e56b86db8cd306492c517da3fb3" dependencies = [ "either", "futures", @@ -5847,8 +5878,8 @@ dependencies = [ "quinn", "rand", "ring 0.16.20", - "rustls 0.21.10", - "socket2 0.5.6", + "rustls 0.21.12", + "socket2 0.5.7", "thiserror", "tokio", "tracing", @@ -5856,9 +5887,9 @@ dependencies = [ [[package]] name = "libp2p-request-response" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12823250fe0c45bdddea6eefa2be9a609aff1283ff4e1d8a294fdbb89572f6f" +checksum = "6946e5456240b3173187cc37a17cb40c3cd1f7138c76e2c773e0d792a42a8de1" dependencies = [ "async-trait", "futures", @@ -5876,9 +5907,9 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.44.1" +version = "0.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92532fc3c4fb292ae30c371815c9b10103718777726ea5497abc268a4761866" +checksum = "80cae6cb75f89dbca53862f9ebe0b9f463aa7b302762fcfaafb9e51dcc9b0f7e" dependencies = [ "either", "fnv", @@ -5888,6 +5919,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm-derive", + "lru", "multistream-select", "once_cell", "rand", @@ -5899,14 +5931,14 @@ dependencies = [ [[package]] name = "libp2p-swarm-derive" -version = "0.34.1" +version = "0.34.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b644268b4acfdaa6a6100b31226ee7a36d96ab4c43287d113bfd2308607d8b6f" +checksum = "5daceb9dd908417b6dfcfe8e94098bc4aac54500c282e78120b885dadc09b999" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -5921,7 +5953,7 @@ dependencies = [ "libc", "libp2p-core", "libp2p-identity", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tracing", ] @@ -5938,7 +5970,7 @@ dependencies = [ "libp2p-identity", "rcgen", "ring 0.16.20", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-webpki", "thiserror", "x509-parser", @@ -5947,9 +5979,9 @@ dependencies = [ [[package]] name = "libp2p-upnp" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49cc89949bf0e06869297cd4fe2c132358c23fe93e76ad43950453df4da3d35" +checksum = "cccf04b0e3ff3de52d07d5fd6c3b061d0e7f908ffc683c32d9638caedce86fc8" dependencies = [ "futures", "futures-timer", @@ -5973,18 +6005,17 @@ dependencies = [ "thiserror", "tracing", "yamux 0.12.1", - "yamux 0.13.1", + "yamux 0.13.2", ] [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "libc", - "redox_syscall", ] [[package]] @@ -6053,9 +6084,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.15" +version = "1.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" dependencies = [ "cc", "pkg-config", @@ -6088,9 +6119,9 @@ checksum = "f0d2be3f5a0d4d5c983d1f8ecc2a87676a0875a14feb9eebf0675f7c3e2f3c35" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -6098,9 +6129,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" dependencies = [ "value-bag", ] @@ -6111,7 +6142,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -6181,9 +6212,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memfd" @@ -6191,7 +6222,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.31", + "rustix 0.38.34", ] [[package]] @@ -6205,9 +6236,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -6467,9 +6498,9 @@ dependencies = [ [[package]] name = "netlink-sys" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" +checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" dependencies = [ "bytes", "futures", @@ -6480,9 +6511,9 @@ dependencies = [ [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nix" @@ -6523,9 +6554,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -6537,12 +6568,11 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ "arbitrary", - "autocfg", "num-integer", "num-traits", "quickcheck", @@ -6551,9 +6581,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", "serde", @@ -6584,7 +6614,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -6598,9 +6628,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -6609,11 +6639,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -6622,9 +6651,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -6636,7 +6665,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.8", + "hermit-abi 0.3.9", "libc", ] @@ -6658,7 +6687,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -6699,9 +6728,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open-fastrlp" @@ -6734,7 +6763,7 @@ version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", @@ -6751,7 +6780,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -6771,9 +6800,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.101" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -6824,9 +6853,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.9" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec 0.7.4", "bitvec", @@ -6838,11 +6867,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.9" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "proc-macro-crate 2.0.0", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 1.0.109", @@ -6856,9 +6885,9 @@ checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -6866,15 +6895,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -6918,9 +6947,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "path-slash" @@ -7000,11 +7029,11 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "serde", ] @@ -7016,9 +7045,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.7" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -7027,9 +7056,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.7" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1288dbd7786462961e69bfd4df7848c1e37e8b74303dbdab82c3a9cdd2809" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -7037,22 +7066,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.7" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1381c29a877c6d34b8c176e734f35d7f7f5b3adaefe940cb4d1bb7af94678e2e" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] name = "pest_meta" -version = "2.7.7" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0934d6907f148c22a3acbda520c7eed243ad7487a30f51f6ce52b58b7077a8a" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -7061,12 +7090,12 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.3", + "indexmap 2.2.6", ] [[package]] @@ -7109,7 +7138,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -7132,29 +7161,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -7169,7 +7198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.1.0", "futures-io", ] @@ -7189,7 +7218,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.8", + "der 0.7.9", "spki 0.7.3", ] @@ -7201,9 +7230,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platforms" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" [[package]] name = "polling" @@ -7223,14 +7252,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.5.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi 0.3.9", "pin-project-lite", - "rustix 0.38.31", + "rustix 0.38.34", "tracing", "windows-sys 0.52.0", ] @@ -7248,9 +7278,9 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", "cpufeatures", @@ -7309,12 +7339,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -7341,15 +7371,6 @@ dependencies = [ "toml 0.5.11", ] -[[package]] -name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - [[package]] name = "proc-macro-crate" version = "3.1.0" @@ -7385,18 +7406,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if", "fnv", @@ -7409,9 +7430,9 @@ dependencies = [ [[package]] name = "prometheus-client" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f87c10af16e0af74010d2a123d202e8363c04db5acfa91d8747f64a8524da3a" +checksum = "c1ca959da22a332509f2a73ae9e5f23f9dcfc31fd3a54d71f159495bd5909baa" dependencies = [ "dtoa", "itoa", @@ -7427,7 +7448,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -7450,13 +7471,13 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "lazy_static", "num-traits", "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", "unarray", ] @@ -7592,7 +7613,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.21.10", + "rustls 0.21.12", "thiserror", "tokio", "tracing", @@ -7608,7 +7629,7 @@ dependencies = [ "rand", "ring 0.16.20", "rustc-hash", - "rustls 0.21.10", + "rustls 0.21.12", "slab", "thiserror", "tinyvec", @@ -7623,16 +7644,16 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.6", + "socket2 0.5.7", "tracing", "windows-sys 0.48.0", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -7693,9 +7714,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -7717,7 +7738,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" dependencies = [ - "pem 3.0.3", + "pem 3.0.4", "ring 0.16.20", "time", "yasna", @@ -7725,18 +7746,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -7758,14 +7779,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.5", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -7779,13 +7800,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -7796,15 +7817,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "render-tree" @@ -7825,9 +7840,9 @@ checksum = "e3a8614ee435691de62bcffcf4a66d91b3594bf1428a5722e79103249a095690" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", "bytes", @@ -7848,7 +7863,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-pemfile", "serde", "serde_json", @@ -8007,9 +8022,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -8057,11 +8072,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys 0.4.13", @@ -8095,9 +8110,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", @@ -8150,9 +8165,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" [[package]] name = "rw-stream-sink" @@ -8167,9 +8182,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "salsa20" @@ -8191,9 +8206,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.10.0" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ "cfg-if", "derive_more", @@ -8203,16 +8218,25 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.10.0" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "scc" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ad2bbb0ae5100a07b7a6f2ed7ab5fd0045551a4c507989b7a620046ea3efdc" +dependencies = [ + "sdd", +] + [[package]] name = "schannel" version = "0.1.23" @@ -8260,6 +8284,12 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "sdd" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d" + [[package]] name = "sec1" version = "0.3.0" @@ -8281,7 +8311,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct 0.2.0", - "der 0.7.8", + "der 0.7.9", "generic-array 0.14.7", "pkcs8 0.10.2", "subtle", @@ -8290,11 +8320,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -8303,9 +8333,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -8313,9 +8343,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] @@ -8334,9 +8364,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" dependencies = [ "serde_derive", ] @@ -8361,13 +8391,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -8384,9 +8414,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -8395,9 +8425,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", "serde", @@ -8405,13 +8435,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -8474,15 +8504,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.6.1" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.3", + "indexmap 2.2.6", "serde", "serde_derive", "serde_json", @@ -8498,16 +8528,16 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] name = "serde_yaml" -version = "0.9.32" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -8516,27 +8546,27 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.0.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ad9342b3aaca7cb43c45c097dd008d4907070394bd0751a0aa8817e5a018d" +checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" dependencies = [ - "dashmap", "futures", - "lazy_static", "log", + "once_cell", "parking_lot", + "scc", "serial_test_derive", ] [[package]] name = "serial_test_derive" -version = "3.0.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93fb4adc70021ac1b47f7d45e8cc4169baaa7ea58483bc5b721d19a26202212" +checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -8577,9 +8607,9 @@ dependencies = [ [[package]] name = "sha2-asm" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27ba7066011e3fb30d808b51affff34f0a66d3a03a58edd787c6e420e40e44e" +checksum = "b845214d6175804686b2bd482bcffe96651bb2d1200742b712003504a2dac1ab" dependencies = [ "cc", ] @@ -8626,9 +8656,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -8698,9 +8728,9 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "snow" @@ -8731,9 +8761,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -8785,7 +8815,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der 0.7.8", + "der 0.7.9", ] [[package]] @@ -8957,9 +8987,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "structopt" @@ -8987,46 +9017,24 @@ dependencies = [ [[package]] name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros 0.25.3", -] - -[[package]] -name = "strum" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723b93e8addf9aa965ebe2d11da6d7540fa2283fcea14b3371ff055f7ba13f5f" -dependencies = [ - "strum_macros 0.26.1", -] - -[[package]] -name = "strum_macros" -version = "0.25.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.51", + "strum_macros", ] [[package]] name = "strum_macros" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", "rustversion", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -9083,9 +9091,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.51" +version = "2.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c" +checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" dependencies = [ "proc-macro2", "quote", @@ -9145,13 +9153,13 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "rustix 0.38.31", + "fastrand 2.1.0", + "rustix 0.38.34", "windows-sys 0.52.0", ] @@ -9345,22 +9353,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -9384,9 +9392,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -9405,9 +9413,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -9452,9 +9460,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -9464,7 +9472,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2 0.5.7", "tokio-macros", "windows-sys 0.48.0", ] @@ -9477,7 +9485,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -9518,15 +9526,15 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.10", + "rustls 0.21.12", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -9555,7 +9563,7 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls 0.21.10", + "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", "tungstenite 0.20.1", @@ -9578,9 +9586,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", @@ -9588,7 +9596,6 @@ dependencies = [ "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -9614,14 +9621,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.10" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit 0.22.12", ] [[package]] @@ -9639,46 +9646,35 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", "winnow 0.5.40", ] -[[package]] -name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap 2.2.3", - "toml_datetime", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.6" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.2", + "winnow 0.6.8", ] [[package]] @@ -9696,7 +9692,7 @@ dependencies = [ "rand", "slab", "tokio", - "tokio-util 0.7.10", + "tokio-util 0.7.11", "tower-layer", "tower-service", "tracing", @@ -9765,7 +9761,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -9882,7 +9878,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.21.10", + "rustls 0.21.12", "sha1", "thiserror", "url", @@ -9948,9 +9944,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -9970,9 +9966,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "unsigned-varint" @@ -10040,9 +10036,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" [[package]] name = "valuable" @@ -10052,9 +10048,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126e423afe2dd9ac52142e7e9d5ce4135d7e13776c529d27fd6bc49f19e3280b" +checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" [[package]] name = "vcpkg" @@ -10106,9 +10102,9 @@ checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -10131,9 +10127,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -10141,24 +10137,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -10168,9 +10164,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10178,22 +10174,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-encoder" @@ -10229,7 +10225,7 @@ version = "0.110.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dfcdb72d96f01e6c85b6bf20102e7423bdbaad5c337301bab2bbf253d26413c" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "semver", ] @@ -10239,8 +10235,8 @@ version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ - "bitflags 2.4.2", - "indexmap 2.2.3", + "bitflags 2.5.0", + "indexmap 2.2.6", "semver", ] @@ -10265,7 +10261,7 @@ dependencies = [ "bumpalo", "cfg-if", "fxprof-processed-profile", - "indexmap 2.2.3", + "indexmap 2.2.6", "libc", "log", "object 0.31.1", @@ -10343,7 +10339,7 @@ dependencies = [ "anyhow", "cranelift-entity", "gimli 0.27.3", - "indexmap 2.2.3", + "indexmap 2.2.6", "log", "object 0.31.1", "serde", @@ -10368,7 +10364,7 @@ dependencies = [ "log", "object 0.31.1", "rustc-demangle", - "rustix 0.38.31", + "rustix 0.38.34", "serde", "target-lexicon", "wasmtime-environ", @@ -10407,7 +10403,7 @@ dependencies = [ "anyhow", "cc", "cfg-if", - "indexmap 2.2.3", + "indexmap 2.2.6", "libc", "log", "mach", @@ -10415,7 +10411,7 @@ dependencies = [ "memoffset", "paste", "rand", - "rustix 0.38.31", + "rustix 0.38.34", "sptr", "wasm-encoder 0.31.1", "wasmtime-asm-macros", @@ -10445,14 +10441,14 @@ checksum = "ca7af9bb3ee875c4907835e607a275d10b04d15623d3aebe01afe8fbd3f85050" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -10460,9 +10456,9 @@ dependencies = [ [[package]] name = "web-time" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee269d72cc29bf77a2c4bc689cc750fb39f5cbd493d2205bbb3f5c7779cf7b0" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -10505,9 +10501,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "widestring" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" [[package]] name = "winapi" @@ -10527,11 +10523,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -10565,7 +10561,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.3", + "windows-targets 0.52.5", ] [[package]] @@ -10583,7 +10579,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.3", + "windows-targets 0.52.5", ] [[package]] @@ -10603,17 +10599,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.3", - "windows_aarch64_msvc 0.52.3", - "windows_i686_gnu 0.52.3", - "windows_i686_msvc 0.52.3", - "windows_x86_64_gnu 0.52.3", - "windows_x86_64_gnullvm 0.52.3", - "windows_x86_64_msvc 0.52.3", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -10624,9 +10621,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -10636,9 +10633,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -10648,9 +10645,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.3" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -10660,9 +10663,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -10672,9 +10675,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -10684,9 +10687,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -10696,9 +10699,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.3" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -10711,9 +10714,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.2" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" dependencies = [ "memchr", ] @@ -10787,9 +10790,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "xmltree" @@ -10839,9 +10842,9 @@ dependencies = [ [[package]] name = "yamux" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1d0148b89300047e72994bee99ecdabd15a9166a7b70c8b8c37c314dcc9002" +checksum = "5f97202f6b125031b95d83e01dc57292b529384f80bfae4677e4bbc10178cf72" dependencies = [ "futures", "instant", @@ -10880,22 +10883,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -10915,7 +10918,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.51", + "syn 2.0.61", ] [[package]] @@ -10959,9 +10962,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index fb2f632d5..6eb36ec66 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ anyhow = "1" arbitrary = { version = "1", features = ["derive"] } arbtest = "0.2" async-recursion = "1" -async-stm = "0.4" +async-stm = "0.5" async-trait = "0.1" async-channel = "1.8.0" axum = { version = "0.6", features = ["ws"] } @@ -230,8 +230,6 @@ gcra = { git = "https://github.com/consensus-shipyard/gcra-rs.git", branch = "ma # Contains some API changes that the upstream has not merged. merkle-tree-rs = { git = "https://github.com/consensus-shipyard/merkle-tree-rs.git", branch = "dev" } -async-stm = { path = "/home/aakoshh/projects/samples/rust/async-stm-rs" } - [profile.wasm] inherits = "release" panic = "abort"