From 04f759a13d3312ee41f684163762410d837b20cc Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Tue, 6 Feb 2024 15:04:59 -0800 Subject: [PATCH 01/10] find recoveries --- src/database/mod.rs | 85 +++++++++++++-------- src/database/types.rs | 2 + src/task_monitor/tasks/delete_identities.rs | 2 +- 3 files changed, 56 insertions(+), 33 deletions(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 1acecaa3..14a2a00e 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -9,6 +9,7 @@ use std::collections::HashSet; use anyhow::{anyhow, Context, Error as ErrReport}; use chrono::{DateTime, Utc}; +use ruint::aliases::U256; use sqlx::migrate::{Migrate, MigrateDatabase, Migrator}; use sqlx::pool::PoolOptions; use sqlx::{Executor, Pool, Postgres, Row}; @@ -707,25 +708,36 @@ impl Database { Ok(()) } - // TODO: consider using a larger value than i64 for leaf index, ruint should - // have postgres compatibility for u256 pub async fn get_recoveries(&self) -> Result, Error> { - let query = sqlx::query( + Ok( + sqlx::query_as::<_, RecoveryEntry>("SELECT * FROM recoveries") + .fetch_all(&self.pool) + .await?, + ) + } + + pub async fn find_recoveries_by_prev_commit( + &self, + prev_commits: &[U256], + ) -> Result, Error> { + // TODO: upstream PgHasArrayType impl to ruint + let prev_commits = prev_commits + .iter() + .map(|c| c.to_be_bytes()) + .collect::>(); + + let res = sqlx::query_as::<_, RecoveryEntry>( r#" SELECT * FROM recoveries + WHERE existing_commitment = ANY($1) "#, - ); - - let result = self.pool.fetch_all(query).await?; + ) + .bind(&prev_commits) + .fetch_all(&self.pool) + .await?; - Ok(result - .into_iter() - .map(|row| RecoveryEntry { - existing_commitment: row.get::(0), - new_commitment: row.get::(1), - }) - .collect::>()) + Ok(res) } pub async fn insert_new_deletion( @@ -768,26 +780,16 @@ impl Database { } /// Remove a list of entries from the deletions table - pub async fn remove_deletions(&self, commitments: Vec) -> Result<(), Error> { - let placeholders: String = commitments + pub async fn remove_deletions(&self, commitments: &[Hash]) -> Result<(), Error> { + let commitments = commitments .iter() - .enumerate() - .map(|(i, _)| format!("${}", i + 1)) - .collect::>() - .join(", "); - - let query = format!( - "DELETE FROM deletions WHERE commitment IN ({})", - placeholders - ); + .map(|c| c.to_be_bytes()) + .collect::>(); - let mut query = sqlx::query(&query); - - for commitment in &commitments { - query = query.bind(commitment); - } - - query.execute(&self.pool).await?; + sqlx::query("DELETE FROM deletions WHERE commitment = Any($1)") + .bind(commitments) + .execute(&self.pool) + .await?; Ok(()) } @@ -1336,6 +1338,25 @@ mod test { Ok(()) } + #[tokio::test] + async fn test_find_recoveries_from_prev() -> anyhow::Result<()> { + let (db, _db_container) = setup_db().await?; + + let old_identities = mock_identities(3); + let new_identities = mock_identities(3); + + for (old, new) in old_identities.clone().into_iter().zip(new_identities) { + db.insert_new_recovery(&old, &new).await?; + } + + let recoveries = db + .find_recoveries_by_prev_commit(&old_identities[0..2]) + .await?; + assert_eq!(recoveries.len(), 2); + + Ok(()) + } + #[tokio::test] async fn get_last_leaf_index() -> anyhow::Result<()> { let (db, _db_container) = setup_db().await?; @@ -1831,7 +1852,7 @@ mod test { .context("Inserting new identity")?; // Remove identities 0 to 2 - db.remove_deletions(identities[0..=2].to_vec()).await?; + db.remove_deletions(&identities[0..=2]).await?; let deletions = db.get_deletions().await?; assert_eq!(deletions.len(), 1); diff --git a/src/database/types.rs b/src/database/types.rs index 0604b552..71b596b2 100644 --- a/src/database/types.rs +++ b/src/database/types.rs @@ -1,4 +1,5 @@ use chrono::{DateTime, Utc}; +use sqlx::prelude::FromRow; use crate::identity_tree::{Hash, Status, UnprocessedStatus}; @@ -11,6 +12,7 @@ pub struct UnprocessedCommitment { pub eligibility_timestamp: DateTime, } +#[derive(FromRow)] pub struct RecoveryEntry { pub existing_commitment: Hash, pub new_commitment: Hash, diff --git a/src/task_monitor/tasks/delete_identities.rs b/src/task_monitor/tasks/delete_identities.rs index 444046f9..dd0647aa 100644 --- a/src/task_monitor/tasks/delete_identities.rs +++ b/src/task_monitor/tasks/delete_identities.rs @@ -57,7 +57,7 @@ pub async fn delete_identities(app: Arc, wake_up_notify: Arc) -> an } // Remove the previous commitments from the deletions table - app.database.remove_deletions(previous_commitments).await?; + app.database.remove_deletions(&previous_commitments).await?; wake_up_notify.notify_one(); } } From a9980fd1804667d24944cd5fa6cf41aa5e83008d Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Wed, 7 Feb 2024 10:16:18 -0800 Subject: [PATCH 02/10] WIP database refactor --- rust-toolchain.toml | 2 +- src/app.rs | 2 +- src/database/mod.rs | 240 ++++++++++---------- src/task_monitor/tasks/delete_identities.rs | 1 + src/task_monitor/tasks/insert_identities.rs | 2 +- 5 files changed, 127 insertions(+), 120 deletions(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 4f2005ed..940f6aea 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "nightly-2023-08-29" +channel = "nightly-2024-02-05" diff --git a/src/app.rs b/src/app.rs index b9a14a3c..5ad0f2df 100644 --- a/src/app.rs +++ b/src/app.rs @@ -10,7 +10,7 @@ use tracing::{info, instrument, warn}; use crate::config::Config; use crate::contracts::{IdentityManager, SharedIdentityManager}; -use crate::database::Database; +use crate::database::{Database, DatabaseExt as _}; use crate::ethereum::Ethereum; use crate::identity_tree::{ CanonicalTreeBuilder, Hash, InclusionProof, ProcessedStatus, RootItem, Status, TreeState, diff --git a/src/database/mod.rs b/src/database/mod.rs index 14a2a00e..78a5eaa0 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -6,6 +6,7 @@ use std::cmp::Ordering; use std::collections::HashSet; +use std::ops::Deref; use anyhow::{anyhow, Context, Error as ErrReport}; use chrono::{DateTime, Utc}; @@ -31,7 +32,123 @@ static MIGRATOR: Migrator = sqlx::migrate!("schemas/database"); const MAX_UNPROCESSED_FETCH_COUNT: i64 = 10_000; pub struct Database { - pool: Pool, + pub pool: Pool, +} + +impl Deref for Database { + type Target = Pool; + + fn deref(&self) -> &Self::Target { + &self.pool + } +} + +impl<'a, T> DatabaseExt<'a> for T where T: Executor<'a, Database = Postgres> {} + +pub trait DatabaseExt<'a>: Executor<'a, Database = Postgres> { + async fn insert_pending_identity( + self, + leaf_index: usize, + identity: &Hash, + root: &Hash, + ) -> Result<(), Error> { + let insert_pending_identity_query = sqlx::query( + r#" + INSERT INTO identities (leaf_index, commitment, root, status, pending_as_of) + VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) + "#, + ) + .bind(leaf_index as i64) + .bind(identity) + .bind(root) + .bind(<&str>::from(ProcessedStatus::Pending)); + + self.execute(insert_pending_identity_query).await?; + + Ok(()) + } + + async fn get_id_by_root(self, root: &Hash) -> Result, Error> { + let root_index_query = sqlx::query( + r#" + SELECT id + FROM identities + WHERE root = $1 + ORDER BY id ASC + LIMIT 1 + "#, + ) + .bind(root); + + let row = self.fetch_optional(root_index_query).await?; + + let Some(row) = row else { return Ok(None) }; + let root_id = row.get::(0); + + Ok(Some(root_id as usize)) + } + + /// Marks all the identities in the db as + #[instrument(skip(self), level = "debug")] + async fn mark_all_as_pending(self) -> Result<(), Error> { + let pending_status = ProcessedStatus::Pending; + + let update_all_identities = sqlx::query( + r#" + UPDATE identities + SET status = $1, mined_at = NULL + WHERE status <> $1 + "#, + ) + .bind(<&str>::from(pending_status)); + + self.execute(update_all_identities).await?; + + Ok(()) + } + + async fn get_next_leaf_index(self) -> Result { + let query = sqlx::query( + r#" + SELECT leaf_index FROM identities + ORDER BY leaf_index DESC + LIMIT 1 + "#, + ); + + let row = self.fetch_optional(query).await?; + + let Some(row) = row else { return Ok(0) }; + let leaf_index = row.get::(0); + + Ok((leaf_index + 1) as usize) + } + + async fn get_identity_leaf_index(self, identity: &Hash) -> Result, Error> { + let query = sqlx::query( + r#" + SELECT leaf_index, status + FROM identities + WHERE commitment = $1 + ORDER BY id DESC + LIMIT 1; + "#, + ) + .bind(identity); + + let Some(row) = self.fetch_optional(query).await? else { + return Ok(None); + }; + + let leaf_index = row.get::(0) as usize; + + let status = row + .get::<&str, _>(1) + .parse() + .expect("Status is unreadable, database is corrupt"); + + Ok(Some(TreeItem { status, leaf_index })) + } } impl Database { @@ -125,55 +242,6 @@ impl Database { Ok(Self { pool }) } - pub async fn insert_pending_identity( - &self, - leaf_index: usize, - identity: &Hash, - root: &Hash, - ) -> Result<(), Error> { - let mut tx = self.pool.begin().await?; - - let insert_pending_identity_query = sqlx::query( - r#" - INSERT INTO identities (leaf_index, commitment, root, status, pending_as_of) - VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) - "#, - ) - .bind(leaf_index as i64) - .bind(identity) - .bind(root) - .bind(<&str>::from(ProcessedStatus::Pending)); - - tx.execute(insert_pending_identity_query).await?; - - tx.commit().await?; - - Ok(()) - } - - pub async fn get_id_by_root( - tx: impl Executor<'_, Database = Postgres>, - root: &Hash, - ) -> Result, Error> { - let root_index_query = sqlx::query( - r#" - SELECT id - FROM identities - WHERE root = $1 - ORDER BY id ASC - LIMIT 1 - "#, - ) - .bind(root); - - let row = tx.fetch_optional(root_index_query).await?; - - let Some(row) = row else { return Ok(None) }; - let root_id = row.get::(0); - - Ok(Some(root_id as usize)) - } - /// Marks the identities and roots from before a given root hash as mined /// Also marks following roots as pending #[instrument(skip(self), level = "debug")] @@ -184,7 +252,7 @@ impl Database { let mut tx = self.pool.begin().await?; - let root_id = Self::get_id_by_root(tx.as_mut(), root).await?; + let root_id = tx.get_id_by_root(root).await?; let Some(root_id) = root_id else { return Err(Error::MissingRoot { root: *root }); @@ -223,25 +291,6 @@ impl Database { Ok(()) } - /// Marks all the identities in the db as - #[instrument(skip(self), level = "debug")] - pub async fn mark_all_as_pending(&self) -> Result<(), Error> { - let pending_status = ProcessedStatus::Pending; - - let update_all_identities = sqlx::query( - r#" - UPDATE identities - SET status = $1, mined_at = NULL - WHERE status <> $1 - "#, - ) - .bind(<&str>::from(pending_status)); - - self.pool.execute(update_all_identities).await?; - - Ok(()) - } - /// Marks the identities and roots from before a given root hash as /// finalized #[instrument(skip(self), level = "debug")] @@ -249,8 +298,10 @@ impl Database { let mined_status = ProcessedStatus::Mined; let mut tx = self.pool.begin().await?; + tx.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;") + .await?; - let root_id = Self::get_id_by_root(tx.as_mut(), root).await?; + let root_id = tx.get_id_by_root(root).await?; let Some(root_id) = root_id else { return Err(Error::MissingRoot { root: *root }); @@ -276,52 +327,6 @@ impl Database { Ok(()) } - pub async fn get_next_leaf_index(&self) -> Result { - let query = sqlx::query( - r#" - SELECT leaf_index FROM identities - ORDER BY leaf_index DESC - LIMIT 1 - "#, - ); - - let row = self.pool.fetch_optional(query).await?; - - let Some(row) = row else { return Ok(0) }; - let leaf_index = row.get::(0); - - Ok((leaf_index + 1) as usize) - } - - pub async fn get_identity_leaf_index( - &self, - identity: &Hash, - ) -> Result, Error> { - let query = sqlx::query( - r#" - SELECT leaf_index, status - FROM identities - WHERE commitment = $1 - ORDER BY id DESC - LIMIT 1; - "#, - ) - .bind(identity); - - let Some(row) = self.pool.fetch_optional(query).await? else { - return Ok(None); - }; - - let leaf_index = row.get::(0) as usize; - - let status = row - .get::<&str, _>(1) - .parse() - .expect("Status is unreadable, database is corrupt"); - - Ok(Some(TreeItem { status, leaf_index })) - } - pub async fn get_commitments_by_status( &self, status: ProcessedStatus, @@ -911,6 +916,7 @@ mod test { use super::Database; use crate::config::DatabaseConfig; + use crate::database::DatabaseExt as _; use crate::identity_tree::{Hash, ProcessedStatus, Status, UnprocessedStatus}; use crate::prover::{ProverConfig, ProverType}; use crate::utils::secret::SecretUrl; diff --git a/src/task_monitor/tasks/delete_identities.rs b/src/task_monitor/tasks/delete_identities.rs index dd0647aa..59ff2adb 100644 --- a/src/task_monitor/tasks/delete_identities.rs +++ b/src/task_monitor/tasks/delete_identities.rs @@ -8,6 +8,7 @@ use tracing::info; use crate::app::App; use crate::database::types::DeletionEntry; +use crate::database::DatabaseExt; use crate::identity_tree::Hash; pub async fn delete_identities(app: Arc, wake_up_notify: Arc) -> anyhow::Result<()> { diff --git a/src/task_monitor/tasks/insert_identities.rs b/src/task_monitor/tasks/insert_identities.rs index 6c780aff..4971480b 100644 --- a/src/task_monitor/tasks/insert_identities.rs +++ b/src/task_monitor/tasks/insert_identities.rs @@ -7,7 +7,7 @@ use tracing::instrument; use crate::app::App; use crate::database::types::UnprocessedCommitment; -use crate::database::Database; +use crate::database::{Database, DatabaseExt}; use crate::identity_tree::{Latest, TreeVersion, TreeVersionReadOps, UnprocessedStatus}; pub async fn insert_identities(app: Arc, wake_up_notify: Arc) -> anyhow::Result<()> { From 4e089e30323cb58b0f8f4da6ac9915b9e54306e5 Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Wed, 7 Feb 2024 14:44:18 -0800 Subject: [PATCH 03/10] moved methods into trait --- src/database/mod.rs | 1070 ++++++++--------- src/identity_tree.rs | 7 +- src/identity_tree/status.rs | 8 + src/prover.rs | 5 +- src/task_monitor.rs | 2 +- src/task_monitor/tasks/finalize_identities.rs | 2 +- src/task_monitor/tasks/process_identities.rs | 1 + 7 files changed, 528 insertions(+), 567 deletions(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 78a5eaa0..556f122f 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -45,6 +45,9 @@ impl Deref for Database { impl<'a, T> DatabaseExt<'a> for T where T: Executor<'a, Database = Postgres> {} +/// This trait provides the individual and composable queries to the database. +/// Each method is a single atomic query, and can be composed withing a +/// transaction. pub trait DatabaseExt<'a>: Executor<'a, Database = Postgres> { async fn insert_pending_identity( self, @@ -149,737 +152,680 @@ pub trait DatabaseExt<'a>: Executor<'a, Database = Postgres> { Ok(Some(TreeItem { status, leaf_index })) } -} - -impl Database { - #[instrument(skip_all)] - pub async fn new(config: &DatabaseConfig) -> Result { - info!(url = %&config.database, "Connecting to database"); - - // Create database if requested and does not exist - if config.migrate && !Postgres::database_exists(config.database.expose()).await? { - warn!(url = %&config.database, "Database does not exist, creating database"); - Postgres::create_database(config.database.expose()).await?; - } - - // Create a connection pool - let pool = PoolOptions::::new() - .max_connections(config.max_connections) - .connect(config.database.expose()) - .await - .context("error connecting to database")?; - - let version = pool - .fetch_one("SELECT version()") - .await - .context("error getting database version")? - .get::(0); - info!(url = %&config.database, ?version, "Connected to database"); - - // Run migrations if requested. - let latest = MIGRATOR - .migrations - .last() - .expect("Missing migrations") - .version; - - if config.migrate { - info!(url = %&config.database, "Running migrations"); - MIGRATOR.run(&pool).await?; - } - - // Validate database schema version - let mut conn = pool.acquire().await?; - - if conn.dirty_version().await?.is_some() { - error!( - url = %&config.database, - version, - expected = latest, - "Database is in incomplete migration state.", - ); - return Err(anyhow!("Database is in incomplete migration state.")); - } - - let version = conn - .list_applied_migrations() - .await? - .last() - .expect("Missing migrations") - .version; - - match version.cmp(&latest) { - Ordering::Less => { - error!( - url = %&config.database, - version, - expected = latest, - "Database is not up to date, try rerunning with --database-migrate", ); - return Err(anyhow!( - "Database is not up to date, try rerunning with --database-migrate" - )); - } - Ordering::Greater => { - error!( - url = %&config.database, - version, - latest, - "Database version is newer than this version of the software, please update.", ); - return Err(anyhow!( - "Database version is newer than this version of the software, please update." - )); - } - Ordering::Equal => { - info!( - url = %&config.database, - version, - latest, - "Database version is up to date.", - ); - } - } - Ok(Self { pool }) + async fn get_commitments_by_status( + self, + status: ProcessedStatus, + ) -> Result, Error> { + Ok(sqlx::query_as::<_, TreeUpdate>( + r#" + SELECT leaf_index, commitment as element + FROM identities + WHERE status = $1 + ORDER BY id ASC; + "#, + ) + .bind(<&str>::from(status)) + .fetch_all(self) + .await?) } - /// Marks the identities and roots from before a given root hash as mined - /// Also marks following roots as pending - #[instrument(skip(self), level = "debug")] - pub async fn mark_root_as_processed(&self, root: &Hash) -> Result<(), Error> { - let mined_status = ProcessedStatus::Mined; - let processed_status = ProcessedStatus::Processed; - let pending_status = ProcessedStatus::Pending; - - let mut tx = self.pool.begin().await?; - - let root_id = tx.get_id_by_root(root).await?; - - let Some(root_id) = root_id else { - return Err(Error::MissingRoot { root: *root }); - }; - - let root_id = root_id as i64; - // TODO: Can I get rid of line `AND status <> $2 - let update_previous_roots = sqlx::query( + async fn get_latest_root_by_status( + self, + status: ProcessedStatus, + ) -> Result, Error> { + Ok(sqlx::query( r#" - UPDATE identities - SET status = $2, mined_at = CURRENT_TIMESTAMP - WHERE id <= $1 - AND status <> $2 - AND status <> $3 + SELECT root FROM identities WHERE status = $1 ORDER BY id DESC LIMIT 1 "#, ) - .bind(root_id) - .bind(<&str>::from(processed_status)) - .bind(<&str>::from(mined_status)); + .bind(<&str>::from(status)) + .fetch_optional(self) + .await? + .map(|r| r.get::(0))) + } - let update_next_roots = sqlx::query( + async fn get_root_state(self, root: &Hash) -> Result, Error> { + // This tries really hard to do everything in one query to prevent race + // conditions. + Ok(sqlx::query_as::<_, RootItem>( r#" - UPDATE identities - SET status = $2, mined_at = NULL - WHERE id > $1 + SELECT + root, + status, + pending_as_of as pending_valid_as_of, + mined_at as mined_valid_as_of + FROM identities + WHERE root = $1 + ORDER BY id + LIMIT 1 "#, ) - .bind(root_id) - .bind(<&str>::from(pending_status)); - - tx.execute(update_previous_roots).await?; - tx.execute(update_next_roots).await?; - - tx.commit().await?; - - Ok(()) + .bind(root) + .fetch_optional(self) + .await?) } - /// Marks the identities and roots from before a given root hash as - /// finalized - #[instrument(skip(self), level = "debug")] - pub async fn mark_root_as_mined(&self, root: &Hash) -> Result<(), Error> { - let mined_status = ProcessedStatus::Mined; - - let mut tx = self.pool.begin().await?; - tx.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;") - .await?; - - let root_id = tx.get_id_by_root(root).await?; + async fn get_latest_insertion_timestamp(self) -> Result>, Error> { + let query = sqlx::query( + r#" + SELECT insertion_timestamp + FROM latest_insertion_timestamp + WHERE Lock = 'X';"#, + ); - let Some(root_id) = root_id else { - return Err(Error::MissingRoot { root: *root }); - }; + let row = self.fetch_optional(query).await?; - let root_id = root_id as i64; + Ok(row.map(|r| r.get::, _>(0))) + } - let update_previous_roots = sqlx::query( + async fn count_unprocessed_identities(self) -> Result { + let query = sqlx::query( r#" - UPDATE identities - SET status = $2 - WHERE id <= $1 - AND status <> $2 + SELECT COUNT(*) as unprocessed + FROM unprocessed_identities "#, - ) - .bind(root_id) - .bind(<&str>::from(mined_status)); - - tx.execute(update_previous_roots).await?; - - tx.commit().await?; - - Ok(()) + ); + let result = self.fetch_one(query).await?; + Ok(result.get::(0) as i32) } - pub async fn get_commitments_by_status( - &self, - status: ProcessedStatus, - ) -> Result, Error> { + async fn count_pending_identities(self) -> Result { let query = sqlx::query( r#" - SELECT leaf_index, commitment + SELECT COUNT(*) as pending FROM identities WHERE status = $1 - ORDER BY id ASC; "#, ) - .bind(<&str>::from(status)); - - let rows = self.pool.fetch_all(query).await?; + .bind(<&str>::from(ProcessedStatus::Pending)); + let result = self.fetch_one(query).await?; + Ok(result.get::(0) as i32) + } - Ok(rows - .into_iter() - .map(|row| TreeUpdate { - leaf_index: row.get::(0) as usize, - element: row.get::(1), - }) - .collect::>()) + async fn get_provers(self) -> Result, Error> { + Ok(sqlx::query_as( + r#" + SELECT batch_size, url, timeout_s, prover_type + FROM provers + "#, + ) + .fetch_all(self) + .await? + .into_iter() + .collect()) } + async fn insert_prover_configuration( + self, + batch_size: usize, + url: impl ToString, + timeout_seconds: u64, + prover_type: ProverType, + ) -> Result<(), Error> { + let url = url.to_string(); - pub async fn get_identity_history_entries( - &self, - commitment: &Hash, - ) -> Result, Error> { - let unprocessed = sqlx::query( + let query = sqlx::query( r#" - SELECT commitment, status, eligibility - FROM unprocessed_identities - WHERE commitment = $1 - "#, + INSERT INTO provers (batch_size, url, timeout_s, prover_type) + VALUES ($1, $2, $3, $4) + "#, ) - .bind(commitment); + .bind(batch_size as i64) + .bind(url) + .bind(timeout_seconds as i64) + .bind(prover_type); - let rows = self.pool.fetch_all(unprocessed).await?; - let unprocessed_updates = rows - .into_iter() - .map(|row| { - let eligibility_timestamp: DateTime = row.get(2); - let held_back = Utc::now() < eligibility_timestamp; + self.execute(query).await?; - CommitmentHistoryEntry { - leaf_index: None, - commitment: row.get::(0), - held_back, - status: row - .get::<&str, _>(1) - .parse() - .expect("Failed to parse unprocessed status"), - } - }) - .collect::>(); + Ok(()) + } - let leaf_index = self.get_identity_leaf_index(commitment).await?; - let Some(leaf_index) = leaf_index else { - return Ok(unprocessed_updates); - }; + async fn insert_provers(self, provers: HashSet) -> Result<(), Error> { + if provers.is_empty() { + return Ok(()); + } - let identity_deletions = sqlx::query( + let mut query_builder = sqlx::QueryBuilder::new( r#" - SELECT commitment - FROM deletions - WHERE leaf_index = $1 + INSERT INTO provers (batch_size, url, timeout_s, prover_type) "#, - ) - .bind(leaf_index.leaf_index as i64); + ); - let rows = self.pool.fetch_all(identity_deletions).await?; - let deletions = rows - .into_iter() - .map(|_row| CommitmentHistoryEntry { - leaf_index: Some(leaf_index.leaf_index), - commitment: Hash::ZERO, - held_back: false, - status: UnprocessedStatus::New.into(), - }) - .collect::>(); + query_builder.push_values(provers, |mut b, prover| { + b.push_bind(prover.batch_size as i64) + .push_bind(prover.url) + .push_bind(prover.timeout_s as i64) + .push_bind(prover.prover_type); + }); - let processed_updates = sqlx::query( + let query = query_builder.build(); + + self.execute(query).await?; + Ok(()) + } + + async fn remove_prover(self, batch_size: usize, prover_type: ProverType) -> Result<(), Error> { + let query = sqlx::query( r#" - SELECT commitment, status - FROM identities - WHERE leaf_index = $1 - ORDER BY id ASC + DELETE FROM provers WHERE batch_size = $1 AND prover_type = $2 "#, ) - .bind(leaf_index.leaf_index as i64); + .bind(batch_size as i64) + .bind(prover_type); - let rows = self.pool.fetch_all(processed_updates).await?; - let processed_updates: Vec = rows - .into_iter() - .map(|row| CommitmentHistoryEntry { - leaf_index: Some(leaf_index.leaf_index), - commitment: row.get::(0), - held_back: false, - status: row - .get::<&str, _>(1) - .parse() - .expect("Status is unreadable, database is corrupt"), - }) - .collect(); + self.execute(query).await?; - Ok([processed_updates, unprocessed_updates, deletions] - .concat() - .into_iter() - .collect()) + Ok(()) } - pub async fn get_latest_root_by_status( - &self, - status: ProcessedStatus, - ) -> Result, Error> { + async fn insert_new_identity( + self, + identity: Hash, + eligibility_timestamp: sqlx::types::chrono::DateTime, + ) -> Result { let query = sqlx::query( r#" - SELECT root FROM identities WHERE status = $1 ORDER BY id DESC LIMIT 1 + INSERT INTO unprocessed_identities (commitment, status, created_at, eligibility) + VALUES ($1, $2, CURRENT_TIMESTAMP, $3) "#, ) - .bind(<&str>::from(status)); - - let row = self.pool.fetch_optional(query).await?; + .bind(identity) + .bind(<&str>::from(UnprocessedStatus::New)) + .bind(eligibility_timestamp); - Ok(row.map(|r| r.get::(0))) + self.execute(query).await?; + Ok(identity) } - pub async fn get_root_state(&self, root: &Hash) -> Result, Error> { - // This tries really hard to do everything in one query to prevent race - // conditions. + async fn insert_new_recovery( + self, + existing_commitment: &Hash, + new_commitment: &Hash, + ) -> Result<(), Error> { let query = sqlx::query( r#" - SELECT - status, - pending_as_of as pending_valid_as_of, - mined_at as mined_valid_as_of - FROM identities - WHERE root = $1 - ORDER BY id - LIMIT 1 + INSERT INTO recoveries (existing_commitment, new_commitment) + VALUES ($1, $2) "#, ) - .bind(root); + .bind(existing_commitment) + .bind(new_commitment); + self.execute(query).await?; + Ok(()) + } - let row = self.pool.fetch_optional(query).await?; + async fn get_latest_deletion(self) -> Result { + let query = + sqlx::query("SELECT deletion_timestamp FROM latest_deletion_root WHERE Lock = 'X';"); - Ok(row.map(|r| { - let status = r - .get::<&str, _>(0) - .parse() - .expect("Status is unreadable, database is corrupt"); + let row = self.fetch_optional(query).await?; - let pending_valid_as_of = r.get::<_, _>(1); - let mined_valid_as_of = r.get::<_, _>(2); + if let Some(row) = row { + Ok(LatestDeletionEntry { + timestamp: row.get(0), + }) + } else { + Ok(LatestDeletionEntry { + timestamp: Utc::now(), + }) + } + } - RootItem { - root: *root, - status, - pending_valid_as_of, - mined_valid_as_of, - } - })) + async fn update_latest_insertion_timestamp( + self, + insertion_timestamp: DateTime, + ) -> Result<(), Error> { + let query = sqlx::query( + r#" + INSERT INTO latest_insertion_timestamp (Lock, insertion_timestamp) + VALUES ('X', $1) + ON CONFLICT (Lock) + DO UPDATE SET insertion_timestamp = EXCLUDED.insertion_timestamp; + "#, + ) + .bind(insertion_timestamp); + + self.execute(query).await?; + Ok(()) } - pub async fn get_latest_insertion_timestamp(&self) -> Result>, Error> { + async fn update_latest_deletion(self, deletion_timestamp: DateTime) -> Result<(), Error> { let query = sqlx::query( r#" - SELECT insertion_timestamp - FROM latest_insertion_timestamp - WHERE Lock = 'X';"#, - ); + INSERT INTO latest_deletion_root (Lock, deletion_timestamp) + VALUES ('X', $1) + ON CONFLICT (Lock) + DO UPDATE SET deletion_timestamp = EXCLUDED.deletion_timestamp; + "#, + ) + .bind(deletion_timestamp); - let row = self.pool.fetch_optional(query).await?; + self.execute(query).await?; + Ok(()) + } - Ok(row.map(|r| r.get::, _>(0))) + async fn get_recoveries(self) -> Result, Error> { + Ok( + sqlx::query_as::<_, RecoveryEntry>("SELECT * FROM recoveries") + .fetch_all(self) + .await?, + ) } - pub async fn count_unprocessed_identities(&self) -> Result { - let query = sqlx::query( + async fn find_recoveries_by_prev_commit( + self, + prev_commits: &[U256], + ) -> Result, Error> { + // TODO: upstream PgHasArrayType impl to ruint + let prev_commits = prev_commits + .iter() + .map(|c| c.to_be_bytes()) + .collect::>(); + + let res = sqlx::query_as::<_, RecoveryEntry>( r#" - SELECT COUNT(*) as unprocessed - FROM unprocessed_identities + SELECT * + FROM recoveries + WHERE existing_commitment = ANY($1) "#, - ); - let result = self.pool.fetch_one(query).await?; - Ok(result.get::(0) as i32) + ) + .bind(&prev_commits) + .fetch_all(self) + .await?; + + Ok(res) } - pub async fn count_pending_identities(&self) -> Result { + async fn insert_new_deletion(self, leaf_index: usize, identity: &Hash) -> Result<(), Error> { let query = sqlx::query( r#" - SELECT COUNT(*) as pending - FROM identities - WHERE status = $1 + INSERT INTO deletions (leaf_index, commitment) + VALUES ($1, $2) "#, ) - .bind(<&str>::from(ProcessedStatus::Pending)); - let result = self.pool.fetch_one(query).await?; - Ok(result.get::(0) as i32) + .bind(leaf_index as i64) + .bind(identity); + + self.execute(query).await?; + Ok(()) } - pub async fn get_provers(&self) -> Result, Error> { + // TODO: consider using a larger value than i64 for leaf index, ruint should + // have postgres compatibility for u256 + async fn get_deletions(self) -> Result, Error> { let query = sqlx::query( r#" - SELECT batch_size, url, timeout_s, prover_type - FROM provers + SELECT * + FROM deletions "#, ); - let result = self.pool.fetch_all(query).await?; + let result = self.fetch_all(query).await?; Ok(result - .iter() - .map(|row| { - let batch_size = row.get::(0) as usize; - let url = row.get::(1); - let timeout_s = row.get::(2) as u64; - let prover_type = row.get::(3); - - ProverConfig { - url, - timeout_s, - batch_size, - prover_type, - } + .into_iter() + .map(|row| DeletionEntry { + leaf_index: row.get::(0) as usize, + commitment: row.get::(1), }) - .collect()) + .collect::>()) } - pub async fn insert_prover_configuration( - &self, - batch_size: usize, - url: impl ToString, - timeout_seconds: u64, - prover_type: ProverType, - ) -> Result<(), Error> { - let url = url.to_string(); - - let query = sqlx::query( - r#" - INSERT INTO provers (batch_size, url, timeout_s, prover_type) - VALUES ($1, $2, $3, $4) - "#, - ) - .bind(batch_size as i64) - .bind(url) - .bind(timeout_seconds as i64) - .bind(prover_type); + /// Remove a list of entries from the deletions table + async fn remove_deletions(self, commitments: &[Hash]) -> Result<(), Error> { + let commitments = commitments + .iter() + .map(|c| c.to_be_bytes()) + .collect::>(); - self.pool.execute(query).await?; + sqlx::query("DELETE FROM deletions WHERE commitment = Any($1)") + .bind(commitments) + .execute(self) + .await?; Ok(()) } - pub async fn insert_provers(&self, provers: HashSet) -> Result<(), Error> { - if provers.is_empty() { - return Ok(()); - } - - let mut query_builder = sqlx::QueryBuilder::new( + async fn get_eligible_unprocessed_commitments( + self, + status: UnprocessedStatus, + ) -> Result, Error> { + let query = sqlx::query( r#" - INSERT INTO provers (batch_size, url, timeout_s, prover_type) + SELECT * FROM unprocessed_identities + WHERE status = $1 AND CURRENT_TIMESTAMP > eligibility + LIMIT $2 "#, - ); - - query_builder.push_values(provers, |mut b, prover| { - b.push_bind(prover.batch_size as i64) - .push_bind(prover.url) - .push_bind(prover.timeout_s as i64) - .push_bind(prover.prover_type); - }); + ) + .bind(<&str>::from(status)) + .bind(MAX_UNPROCESSED_FETCH_COUNT); - let query = query_builder.build(); + let result = self.fetch_all(query).await?; - self.pool.execute(query).await?; - Ok(()) + Ok(result + .into_iter() + .map(|row| types::UnprocessedCommitment { + commitment: row.get::(0), + status, + created_at: row.get::<_, _>(2), + processed_at: row.get::<_, _>(3), + error_message: row.get::<_, _>(4), + eligibility_timestamp: row.get::<_, _>(5), + }) + .collect::>()) } - pub async fn remove_prover( - &self, - batch_size: usize, - prover_type: ProverType, - ) -> Result<(), Error> { + async fn get_unprocessed_commit_status( + self, + commitment: &Hash, + ) -> Result, Error> { let query = sqlx::query( r#" - DELETE FROM provers WHERE batch_size = $1 AND prover_type = $2 + SELECT status, error_message FROM unprocessed_identities WHERE commitment = $1 "#, ) - .bind(batch_size as i64) - .bind(prover_type); + .bind(commitment); - self.pool.execute(query).await?; + let result = self.fetch_optional(query).await?; - Ok(()) + if let Some(row) = result { + return Ok(Some(( + row.get::<&str, _>(0).parse().expect("couldn't read status"), + row.get::, _>(1).unwrap_or_default(), + ))); + }; + Ok(None) } - pub async fn insert_new_identity( - &self, - identity: Hash, - eligibility_timestamp: sqlx::types::chrono::DateTime, - ) -> Result { + async fn remove_unprocessed_identity(self, commitment: &Hash) -> Result<(), Error> { let query = sqlx::query( r#" - INSERT INTO unprocessed_identities (commitment, status, created_at, eligibility) - VALUES ($1, $2, CURRENT_TIMESTAMP, $3) + DELETE FROM unprocessed_identities WHERE commitment = $1 "#, ) - .bind(identity) - .bind(<&str>::from(UnprocessedStatus::New)) - .bind(eligibility_timestamp); + .bind(commitment); - self.pool.execute(query).await?; - Ok(identity) + self.execute(query).await?; + + Ok(()) } - pub async fn insert_new_recovery( - &self, - existing_commitment: &Hash, - new_commitment: &Hash, - ) -> Result<(), Error> { - let query = sqlx::query( + async fn identity_exists(self, commitment: Hash) -> Result { + Ok(sqlx::query( r#" - INSERT INTO recoveries (existing_commitment, new_commitment) - VALUES ($1, $2) + select + EXISTS (select commitment from unprocessed_identities where commitment = $1) OR + EXISTS (select commitment from identities where commitment = $1); "#, ) - .bind(existing_commitment) - .bind(new_commitment); - self.pool.execute(query).await?; - Ok(()) + .bind(commitment) + .fetch_one(self) + .await? + .get::(0)) } +} - pub async fn get_latest_deletion(&self) -> Result { - let query = - sqlx::query("SELECT deletion_timestamp FROM latest_deletion_root WHERE Lock = 'X';"); +impl Database { + #[instrument(skip_all)] + pub async fn new(config: &DatabaseConfig) -> Result { + info!(url = %&config.database, "Connecting to database"); - let row = self.pool.fetch_optional(query).await?; + // Create database if requested and does not exist + if config.migrate && !Postgres::database_exists(config.database.expose()).await? { + warn!(url = %&config.database, "Database does not exist, creating database"); + Postgres::create_database(config.database.expose()).await?; + } - if let Some(row) = row { - Ok(LatestDeletionEntry { - timestamp: row.get(0), - }) - } else { - Ok(LatestDeletionEntry { - timestamp: Utc::now(), - }) + // Create a connection pool + let pool = PoolOptions::::new() + .max_connections(config.max_connections) + .connect(config.database.expose()) + .await + .context("error connecting to database")?; + + let version = pool + .fetch_one("SELECT version()") + .await + .context("error getting database version")? + .get::(0); + info!(url = %&config.database, ?version, "Connected to database"); + + // Run migrations if requested. + let latest = MIGRATOR + .migrations + .last() + .expect("Missing migrations") + .version; + + if config.migrate { + info!(url = %&config.database, "Running migrations"); + MIGRATOR.run(&pool).await?; + } + + // Validate database schema version + let mut conn = pool.acquire().await?; + + if conn.dirty_version().await?.is_some() { + error!( + url = %&config.database, + version, + expected = latest, + "Database is in incomplete migration state.", + ); + return Err(anyhow!("Database is in incomplete migration state.")); + } + + let version = conn + .list_applied_migrations() + .await? + .last() + .expect("Missing migrations") + .version; + + match version.cmp(&latest) { + Ordering::Less => { + error!( + url = %&config.database, + version, + expected = latest, + "Database is not up to date, try rerunning with --database-migrate", ); + return Err(anyhow!( + "Database is not up to date, try rerunning with --database-migrate" + )); + } + Ordering::Greater => { + error!( + url = %&config.database, + version, + latest, + "Database version is newer than this version of the software, please update.", ); + return Err(anyhow!( + "Database version is newer than this version of the software, please update." + )); + } + Ordering::Equal => { + info!( + url = %&config.database, + version, + latest, + "Database version is up to date.", + ); + } } - } - - pub async fn update_latest_insertion_timestamp( - &self, - insertion_timestamp: DateTime, - ) -> Result<(), Error> { - let query = sqlx::query( - r#" - INSERT INTO latest_insertion_timestamp (Lock, insertion_timestamp) - VALUES ('X', $1) - ON CONFLICT (Lock) - DO UPDATE SET insertion_timestamp = EXCLUDED.insertion_timestamp; - "#, - ) - .bind(insertion_timestamp); - self.pool.execute(query).await?; - Ok(()) + Ok(Self { pool }) } - pub async fn update_latest_deletion( - &self, - deletion_timestamp: DateTime, - ) -> Result<(), Error> { - let query = sqlx::query( - r#" - INSERT INTO latest_deletion_root (Lock, deletion_timestamp) - VALUES ('X', $1) - ON CONFLICT (Lock) - DO UPDATE SET deletion_timestamp = EXCLUDED.deletion_timestamp; - "#, - ) - .bind(deletion_timestamp); + /// Marks the identities and roots from before a given root hash as mined + /// Also marks following roots as pending + #[instrument(skip(self), level = "debug")] + pub async fn mark_root_as_processed(&self, root: &Hash) -> Result<(), Error> { + let mined_status = ProcessedStatus::Mined; + let processed_status = ProcessedStatus::Processed; + let pending_status = ProcessedStatus::Pending; - self.pool.execute(query).await?; - Ok(()) - } + let mut tx = self.pool.begin().await?; - pub async fn get_recoveries(&self) -> Result, Error> { - Ok( - sqlx::query_as::<_, RecoveryEntry>("SELECT * FROM recoveries") - .fetch_all(&self.pool) - .await?, - ) - } + let root_id = tx.get_id_by_root(root).await?; - pub async fn find_recoveries_by_prev_commit( - &self, - prev_commits: &[U256], - ) -> Result, Error> { - // TODO: upstream PgHasArrayType impl to ruint - let prev_commits = prev_commits - .iter() - .map(|c| c.to_be_bytes()) - .collect::>(); + let Some(root_id) = root_id else { + return Err(Error::MissingRoot { root: *root }); + }; - let res = sqlx::query_as::<_, RecoveryEntry>( + let root_id = root_id as i64; + // TODO: Can I get rid of line `AND status <> $2 + let update_previous_roots = sqlx::query( r#" - SELECT * - FROM recoveries - WHERE existing_commitment = ANY($1) + UPDATE identities + SET status = $2, mined_at = CURRENT_TIMESTAMP + WHERE id <= $1 + AND status <> $2 + AND status <> $3 "#, ) - .bind(&prev_commits) - .fetch_all(&self.pool) - .await?; - - Ok(res) - } + .bind(root_id) + .bind(<&str>::from(processed_status)) + .bind(<&str>::from(mined_status)); - pub async fn insert_new_deletion( - &self, - leaf_index: usize, - identity: &Hash, - ) -> Result<(), Error> { - let query = sqlx::query( + let update_next_roots = sqlx::query( r#" - INSERT INTO deletions (leaf_index, commitment) - VALUES ($1, $2) + UPDATE identities + SET status = $2, mined_at = NULL + WHERE id > $1 "#, ) - .bind(leaf_index as i64) - .bind(identity); - - self.pool.execute(query).await?; - Ok(()) - } + .bind(root_id) + .bind(<&str>::from(pending_status)); - // TODO: consider using a larger value than i64 for leaf index, ruint should - // have postgres compatibility for u256 - pub async fn get_deletions(&self) -> Result, Error> { - let query = sqlx::query( - r#" - SELECT * - FROM deletions - "#, - ); + tx.execute(update_previous_roots).await?; + tx.execute(update_next_roots).await?; - let result = self.pool.fetch_all(query).await?; + tx.commit().await?; - Ok(result - .into_iter() - .map(|row| DeletionEntry { - leaf_index: row.get::(0) as usize, - commitment: row.get::(1), - }) - .collect::>()) + Ok(()) } - /// Remove a list of entries from the deletions table - pub async fn remove_deletions(&self, commitments: &[Hash]) -> Result<(), Error> { - let commitments = commitments - .iter() - .map(|c| c.to_be_bytes()) - .collect::>(); + /// Marks the identities and roots from before a given root hash as + /// finalized + #[instrument(skip(self), level = "debug")] + pub async fn mark_root_as_mined(&self, root: &Hash) -> Result<(), Error> { + let mined_status = ProcessedStatus::Mined; - sqlx::query("DELETE FROM deletions WHERE commitment = Any($1)") - .bind(commitments) - .execute(&self.pool) + let mut tx = self.pool.begin().await?; + tx.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;") .await?; - Ok(()) - } + let root_id = tx.get_id_by_root(root).await?; - pub async fn get_eligible_unprocessed_commitments( - &self, - status: UnprocessedStatus, - ) -> Result, Error> { - let query = sqlx::query( + let Some(root_id) = root_id else { + return Err(Error::MissingRoot { root: *root }); + }; + + let root_id = root_id as i64; + + let update_previous_roots = sqlx::query( r#" - SELECT * FROM unprocessed_identities - WHERE status = $1 AND CURRENT_TIMESTAMP > eligibility - LIMIT $2 + UPDATE identities + SET status = $2 + WHERE id <= $1 + AND status <> $2 "#, ) - .bind(<&str>::from(status)) - .bind(MAX_UNPROCESSED_FETCH_COUNT); + .bind(root_id) + .bind(<&str>::from(mined_status)); - let result = self.pool.fetch_all(query).await?; + tx.execute(update_previous_roots).await?; - Ok(result - .into_iter() - .map(|row| types::UnprocessedCommitment { - commitment: row.get::(0), - status, - created_at: row.get::<_, _>(2), - processed_at: row.get::<_, _>(3), - error_message: row.get::<_, _>(4), - eligibility_timestamp: row.get::<_, _>(5), - }) - .collect::>()) + tx.commit().await?; + + Ok(()) } - pub async fn get_unprocessed_commit_status( + pub async fn get_identity_history_entries( &self, commitment: &Hash, - ) -> Result, Error> { - let query = sqlx::query( + ) -> Result, Error> { + let unprocessed = sqlx::query( r#" - SELECT status, error_message FROM unprocessed_identities WHERE commitment = $1 - "#, + SELECT commitment, status, eligibility + FROM unprocessed_identities + WHERE commitment = $1 + "#, ) .bind(commitment); - let result = self.pool.fetch_optional(query).await?; + let rows = self.pool.fetch_all(unprocessed).await?; + let unprocessed_updates = rows + .into_iter() + .map(|row| { + let eligibility_timestamp: DateTime = row.get(2); + let held_back = Utc::now() < eligibility_timestamp; - if let Some(row) = result { - return Ok(Some(( - row.get::<&str, _>(0).parse().expect("couldn't read status"), - row.get::, _>(1).unwrap_or_default(), - ))); + CommitmentHistoryEntry { + leaf_index: None, + commitment: row.get::(0), + held_back, + status: row + .get::<&str, _>(1) + .parse() + .expect("Failed to parse unprocessed status"), + } + }) + .collect::>(); + + let leaf_index = self.get_identity_leaf_index(commitment).await?; + let Some(leaf_index) = leaf_index else { + return Ok(unprocessed_updates); }; - Ok(None) - } - pub async fn remove_unprocessed_identity(&self, commitment: &Hash) -> Result<(), Error> { - let query = sqlx::query( + let identity_deletions = sqlx::query( r#" - DELETE FROM unprocessed_identities WHERE commitment = $1 + SELECT commitment + FROM deletions + WHERE leaf_index = $1 "#, ) - .bind(commitment); - - self.pool.execute(query).await?; + .bind(leaf_index.leaf_index as i64); - Ok(()) - } + let rows = self.pool.fetch_all(identity_deletions).await?; + let deletions = rows + .into_iter() + .map(|_row| CommitmentHistoryEntry { + leaf_index: Some(leaf_index.leaf_index), + commitment: Hash::ZERO, + held_back: false, + status: UnprocessedStatus::New.into(), + }) + .collect::>(); - pub async fn identity_exists(&self, commitment: Hash) -> Result { - let query_unprocessed_identity = sqlx::query( - r#"SELECT exists(SELECT 1 FROM unprocessed_identities where commitment = $1)"#, + let processed_updates = sqlx::query( + r#" + SELECT commitment, status + FROM identities + WHERE leaf_index = $1 + ORDER BY id ASC + "#, ) - .bind(commitment); - - let row_unprocessed = self.pool.fetch_one(query_unprocessed_identity).await?; - - let query_processed_identity = - sqlx::query(r#"SELECT exists(SELECT 1 FROM identities where commitment = $1)"#) - .bind(commitment); - - let row_processed = self.pool.fetch_one(query_processed_identity).await?; + .bind(leaf_index.leaf_index as i64); - let exists = row_unprocessed.get::(0) || row_processed.get::(0); + let rows = self.pool.fetch_all(processed_updates).await?; + let processed_updates: Vec = rows + .into_iter() + .map(|row| CommitmentHistoryEntry { + leaf_index: Some(leaf_index.leaf_index), + commitment: row.get::(0), + held_back: false, + status: row + .get::<&str, _>(1) + .parse() + .expect("Status is unreadable, database is corrupt"), + }) + .collect(); - Ok(exists) + Ok([processed_updates, unprocessed_updates, deletions] + .concat() + .into_iter() + .collect()) } // TODO: add docs diff --git a/src/identity_tree.rs b/src/identity_tree.rs index 011e24bc..6a90e8cf 100644 --- a/src/identity_tree.rs +++ b/src/identity_tree.rs @@ -7,6 +7,7 @@ use semaphore::merkle_tree::Hasher; use semaphore::poseidon_tree::{PoseidonHash, Proof}; use semaphore::{lazy_merkle_tree, Field}; use serde::Serialize; +use sqlx::prelude::FromRow; use tracing::{info, warn}; mod status; @@ -16,8 +17,9 @@ pub type Hash = ::Hash; pub use self::status::{ProcessedStatus, Status, UnknownStatus, UnprocessedStatus}; -#[derive(Clone, Eq, PartialEq, Hash, Debug)] +#[derive(Clone, Eq, PartialEq, Hash, Debug, FromRow)] pub struct TreeUpdate { + #[sqlx(try_from = "i64")] pub leaf_index: usize, pub element: Hash, } @@ -38,10 +40,11 @@ pub struct TreeItem { pub leaf_index: usize, } -#[derive(Debug, Serialize)] +#[derive(Debug, Serialize, FromRow)] #[serde(rename_all = "camelCase")] pub struct RootItem { pub root: Field, + #[sqlx(try_from = "&'a str")] pub status: ProcessedStatus, pub pending_valid_as_of: chrono::DateTime, pub mined_valid_as_of: Option>, diff --git a/src/identity_tree/status.rs b/src/identity_tree/status.rs index 4a5d479d..f08c18fe 100644 --- a/src/identity_tree/status.rs +++ b/src/identity_tree/status.rs @@ -63,6 +63,14 @@ impl FromStr for ProcessedStatus { } } +impl TryFrom<&str> for ProcessedStatus { + type Error = UnknownStatus; + + fn try_from(s: &str) -> Result { + ProcessedStatus::from_str(s) + } +} + impl From for &str { fn from(scope: ProcessedStatus) -> Self { match scope { diff --git a/src/prover.rs b/src/prover.rs index 5f7a8f97..9844ca1f 100644 --- a/src/prover.rs +++ b/src/prover.rs @@ -23,6 +23,7 @@ use once_cell::sync::Lazy; use prometheus::{exponential_buckets, register_histogram, Histogram}; pub use proof::Proof; use serde::{Deserialize, Serialize}; +use sqlx::FromRow; use url::Url; use crate::prover::identity::Identity; @@ -51,18 +52,20 @@ static PROVER_PROVING_TIME: Lazy = Lazy::new(|| { /// Configuration options for the component responsible for interacting with the /// prover service. -#[derive(Clone, Debug, Eq, Serialize, Deserialize)] +#[derive(Clone, Debug, Eq, Serialize, Deserialize, FromRow)] pub struct ProverConfig { /// The URL at which to contact the semaphore prover service for proof /// generation. pub url: String, /// The number of seconds to wait before timing out the transaction. + #[sqlx(try_from = "i64")] pub timeout_s: u64, // TODO Add and query a prover `info` endpoint instead. /// The batch size that the prover is set up to work with. This must match /// the deployed prover. + #[sqlx(try_from = "i64")] pub batch_size: usize, // TODO: add docs diff --git a/src/task_monitor.rs b/src/task_monitor.rs index 755d38bd..d6c6795d 100644 --- a/src/task_monitor.rs +++ b/src/task_monitor.rs @@ -8,7 +8,7 @@ use tokio::task::JoinHandle; use tracing::{info, instrument, warn}; use crate::app::App; -use crate::database::Database; +use crate::database::{Database, DatabaseExt as _}; pub mod tasks; diff --git a/src/task_monitor/tasks/finalize_identities.rs b/src/task_monitor/tasks/finalize_identities.rs index ece7d753..89828a21 100644 --- a/src/task_monitor/tasks/finalize_identities.rs +++ b/src/task_monitor/tasks/finalize_identities.rs @@ -14,7 +14,7 @@ use crate::app::App; use crate::contracts::abi::{BridgedWorldId, RootAddedFilter, TreeChangeKind, TreeChangedFilter}; use crate::contracts::scanner::BlockScanner; use crate::contracts::IdentityManager; -use crate::database::Database; +use crate::database::{Database, DatabaseExt as _}; use crate::identity_tree::{Canonical, Intermediate, TreeVersion, TreeWithNextVersion}; use crate::task_monitor::TaskMonitor; diff --git a/src/task_monitor/tasks/process_identities.rs b/src/task_monitor/tasks/process_identities.rs index 8e97a9d4..e3a5351c 100644 --- a/src/task_monitor/tasks/process_identities.rs +++ b/src/task_monitor/tasks/process_identities.rs @@ -12,6 +12,7 @@ use tracing::instrument; use crate::app::App; use crate::contracts::IdentityManager; +use crate::database::DatabaseExt as _; use crate::ethereum::write::TransactionId; use crate::identity_tree::{ AppliedTreeUpdate, Hash, Intermediate, TreeVersion, TreeVersionReadOps, TreeWithNextVersion, From 869b7b151577f9e345cae7fcc87debd0f08dd2fc Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Wed, 7 Feb 2024 15:35:32 -0800 Subject: [PATCH 04/10] clippy lints and cargo update --- Cargo.lock | 2299 ++++++++++++++++++++----------------------- src/app.rs | 2 +- src/lib.rs | 2 +- src/main.rs | 6 +- tests/common/mod.rs | 2 +- 5 files changed, 1086 insertions(+), 1225 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac50c0b6..84616bfe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,11 +14,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.17.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli", + "gimli 0.28.1", ] [[package]] @@ -29,32 +29,20 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" -dependencies = [ - "cfg-if", - "cipher 0.3.0", - "cpufeatures", - "opaque-debug", -] - -[[package]] -name = "aes" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", - "cipher 0.4.3", + "cipher", "cpufeatures", ] [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ "getrandom", "once_cell", @@ -76,13 +64,19 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "alloy-rlp" version = "0.3.4" @@ -119,58 +113,57 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -200,7 +193,7 @@ dependencies = [ "cfg-if", "color-eyre 0.5.11", "criterion", - "ethers-core 2.0.10 (git+https://github.com/gakonst/ethers-rs)", + "ethers-core 2.0.13 (git+https://github.com/gakonst/ethers-rs)", "fnv", "hex", "num", @@ -289,7 +282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" dependencies = [ "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -299,7 +292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -311,7 +304,7 @@ dependencies = [ "num-bigint", "num-traits", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -324,7 +317,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -398,7 +391,7 @@ checksum = "8dd4e5f0bf8285d5ed538d27fab7411f3e297908fd93c62195de8bee3f199e82" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -435,9 +428,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ascii-canvas" @@ -450,34 +443,35 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", + "pin-project-lite", ] [[package]] name = "async-stream-impl" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -500,6 +494,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "atomic-write-file" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436" +dependencies = [ + "nix 0.27.1", + "rand", +] + [[package]] name = "atty" version = "0.2.14" @@ -513,14 +517,13 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] @@ -531,12 +534,11 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "aws-config" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004dc45f6b869e6a70725df448004a720b7f52f6607d55d8815cbd5448f86def" +checksum = "8b30c39ebe61f75d1b3785362b1586b41991873c9ab3e317a9181c246fb71d82" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-sdk-sso", "aws-sdk-ssooidc", @@ -551,10 +553,10 @@ dependencies = [ "bytes", "fastrand", "hex", - "http", + "http 0.2.11", "hyper", - "ring 0.17.5", - "time 0.3.17", + "ring 0.17.7", + "time", "tokio", "tracing", "zeroize", @@ -562,9 +564,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa51c87f10211f37cd78e6d01d6f18b3f96a086906ed361d11e04ac53e29508" +checksum = "33cc49dcdd31c8b6e79850a179af4c367669150c7ac0135f176c61bec81a70f7" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -572,51 +574,36 @@ dependencies = [ "zeroize", ] -[[package]] -name = "aws-http" -version = "0.60.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "361c4310fdce94328cc2d1ca0c8a48c13f43009c61d3367585685a50ca8c66b6" -dependencies = [ - "aws-smithy-runtime-api", - "aws-smithy-types", - "aws-types", - "bytes", - "http", - "http-body", - "pin-project-lite", - "tracing", -] - [[package]] name = "aws-runtime" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0953f7fc1c4428511345e28ea3e98c8b59c9e91eafae30bf76d71d70642693" +checksum = "eb031bff99877c26c28895766f7bb8484a05e24547e370768d6cc9db514662aa" dependencies = [ "aws-credential-types", - "aws-http", "aws-sigv4", "aws-smithy-async", "aws-smithy-http", "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", + "bytes", "fastrand", - "http", + "http 0.2.11", + "http-body", "percent-encoding", + "pin-project-lite", "tracing", - "uuid 1.6.1", + "uuid 1.7.0", ] [[package]] name = "aws-sdk-cognitoidentityprovider" -version = "1.4.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8791a43ab0a0a847e0df7c545c8a8302a9b1e63c76838db2b4f85f20b8d4503a" +checksum = "dc6a43cbe8f61089c4480440f75fbf4b71c2e1df4eb8369209f5c03020adabff" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -626,19 +613,19 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", - "regex", + "http 0.2.11", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sso" -version = "1.4.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e0b81eaef9eb951061b5a58f660815430e3f04eacaa4b2318e7474b0b7cbf17" +checksum = "f486420a66caad72635bc2ce0ff6581646e0d32df02aa39dc983bfe794955a5b" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -648,19 +635,19 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", - "regex", + "http 0.2.11", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-ssooidc" -version = "1.4.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e322a916694038a7972a3bb12181151c1645914443a2c3be6379b27533bbb99" +checksum = "39ddccf01d82fce9b4a15c8ae8608211ee7db8ed13a70b514bbfe41df3d24841" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -670,19 +657,19 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", - "regex", + "http 0.2.11", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "1.4.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbee86e8d9b1be709bd0f38b9ab3f196e39b0b6f3262a0a919a9d30f25debd94" +checksum = "1a591f8c7e6a621a501b2b5d2e88e1697fcb6274264523a6ad4d5959889a41ce" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", "aws-smithy-http", @@ -693,16 +680,17 @@ dependencies = [ "aws-smithy-types", "aws-smithy-xml", "aws-types", - "http", - "regex", + "http 0.2.11", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sigv4" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bcbad6e0f130232b22e4b4e28834348ce5b79c23b5059b387c08fd0dc8f876" +checksum = "c371c6b0ac54d4605eb6f016624fb5c7c2925d315fdf600ac1bf21b19d5f1742" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -712,20 +700,20 @@ dependencies = [ "form_urlencoded", "hex", "hmac", - "http", + "http 0.2.11", + "http 1.0.0", "once_cell", "percent-encoding", - "regex", "sha2", - "time 0.3.17", + "time", "tracing", ] [[package]] name = "aws-smithy-async" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573441a5a0219e436e86a7f9a20b0f2505c5ae6fe7fe3eba6e3950991c9ad914" +checksum = "72ee2d09cce0ef3ae526679b522835d63e75fb427aca5413cd371e490d52dcc6" dependencies = [ "futures-util", "pin-project-lite", @@ -734,22 +722,22 @@ dependencies = [ [[package]] name = "aws-smithy-client" -version = "0.60.0" +version = "0.60.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00d51e79571528981b4eaf1040ca1248ce155149914926eebd19feadc88bd70" +checksum = "755df81cd785192ee212110f3df2b478704ddd19e7ac91263d23286c26384c4d" [[package]] name = "aws-smithy-http" -version = "0.60.0" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1de8aee22f67de467b2e3d0dd0fb30859dc53f579a63bd5381766b987db644" +checksum = "dab56aea3cd9e1101a0a999447fb346afb680ab1406cebc44b32346e25b4117d" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "bytes-utils", "futures-core", - "http", + "http 0.2.11", "http-body", "once_cell", "percent-encoding", @@ -760,18 +748,18 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.60.0" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a46dd338dc9576d6a6a5b5a19bd678dcad018ececee11cf28ecd7588bd1a55c" +checksum = "fd3898ca6518f9215f62678870064398f00031912390efd03f1f6ef56d83aa8e" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-query" -version = "0.60.0" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5b8c7a86d4b6399169670723b7e6f21a39fc833a30f5c5a2f997608178129" +checksum = "bda4b1dfc9810e35fba8a620e900522cd1bd4f9578c446e82f49d1ce41d2e9f9" dependencies = [ "aws-smithy-types", "urlencoding", @@ -779,9 +767,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0c628feae802ab1589936e2aaef6f8ab2b8fc1ee1f947c276dd8a7c3cda1904" +checksum = "fafdab38f40ad7816e7da5dec279400dd505160780083759f01441af1bbb10ea" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -790,7 +778,7 @@ dependencies = [ "bytes", "fastrand", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "hyper-rustls", @@ -804,14 +792,14 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7460e5cc8e6eb0749608535854352f6e121433960ba05daf4dbde0e42c1199a5" +checksum = "c18276dd28852f34b3bf501f4f3719781f4999a51c7bff1a5c6dc8c4529adc29" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes", - "http", + "http 0.2.11", "pin-project-lite", "tokio", "tracing", @@ -820,66 +808,66 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba838f43d0d72d76918895a93c3ad647f75a058541a60e85beefb6bb0a9bd40" +checksum = "bb3e134004170d3303718baa2a4eb4ca64ee0a1c0a7041dca31b38be0fb414f3" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", - "http", + "http 0.2.11", "http-body", - "itoa 1.0.9", + "itoa", "num-integer", "pin-project-lite", "pin-utils", "ryu", "serde", - "time 0.3.17", + "time", "tokio", "tokio-util", ] [[package]] name = "aws-smithy-xml" -version = "0.60.0" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec40d74a67fd395bc3f6b4ccbdf1543672622d905ef3f979689aea5b730cb95" +checksum = "8604a11b25e9ecaf32f9aa56b9fe253c5e2f606a3477f0071e96d3155a5ed218" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa59f6f26a3472ca2ce7e7802d037a0a9a7ac23de5761eadd9b68f31ac4fd21" +checksum = "789bbe008e65636fe1b6dbbb374c40c8960d1232b96af5ff4aec349f9c4accf4" dependencies = [ "aws-credential-types", "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "http", + "http 0.2.11", "rustc_version 0.4.0", "tracing", ] [[package]] name = "axum" -version = "0.6.19" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a1de45611fdb535bfde7b7de4fd54f4fd2b17b1737c0a59b69bf9b92074b8c" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", "bitflags 1.3.2", "bytes", "futures-util", - "http", + "http 0.2.11", "http-body", "hyper", - "itoa 1.0.9", + "itoa", "matchit", "memchr", "mime", @@ -906,7 +894,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http", + "http 0.2.11", "http-body", "mime", "rustversion", @@ -916,13 +904,13 @@ dependencies = [ [[package]] name = "axum-server" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8456dab8f11484979a86651da8e619b355ede5d61a160755155f6c344bd18c47" +checksum = "bace45b270e36e3c27a190c65883de6dfc9f1d18c829907c127464815dc67b24" dependencies = [ "bytes", "futures-util", - "http", + "http 0.2.11", "http-body", "hyper", "tokio", @@ -931,16 +919,16 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide 0.5.4", - "object 0.29.0", + "miniz_oxide", + "object 0.32.2", "rustc-demangle", ] @@ -958,9 +946,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64-simd" @@ -974,9 +962,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bech32" @@ -1016,9 +1004,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -1048,9 +1036,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] @@ -1074,14 +1062,13 @@ dependencies = [ "lazy_static", "memchr", "regex-automata 0.1.10", - "serde", ] [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -1091,36 +1078,37 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytecheck" -version = "0.6.9" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ "bytecheck_derive", "ptr_meta", + "simdutf8", ] [[package]] name = "bytecheck_derive" -version = "0.6.9" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" dependencies = [ "serde", ] @@ -1158,31 +1146,31 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.1" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +checksum = "ceed8ef69d8518a5dda55c07425450b58a4e1946f4951eab6d7191ee86c2443d" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" -version = "0.17.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.14", + "semver 1.0.21", "serde", "serde_json", "thiserror", @@ -1212,34 +1200,24 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", - "time 0.1.44", "wasm-bindgen", - "winapi", -] - -[[package]] -name = "cipher" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" -dependencies = [ - "generic-array", + "windows-targets 0.52.0", ] [[package]] name = "cipher" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", @@ -1258,20 +1236,19 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.14" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98330784c494e49850cb23b8e2afcca13587d2500b2e3f1f78ae20248059c9be" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.14" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e182eb5f2562a67dda37e2c57af64d720a9e010c5e860ed87c056586aeafa52e" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", @@ -1284,21 +1261,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "cli-batteries" @@ -1307,14 +1284,14 @@ source = "git+https://github.com/recmo/cli-batteries?rev=fc1186d1aba6a25120570fe dependencies = [ "ansi_term", "chrono", - "clap 4.3.14", + "clap 4.4.18", "color-eyre 0.6.2", "eyre", "futures", "heck", "hex", "hex-literal 0.4.1", - "http", + "http 0.2.11", "hyper", "itertools 0.10.5", "mimalloc", @@ -1328,30 +1305,20 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.17", + "time", "tokio", "tracing", "tracing-error 0.2.0", "tracing-flame", "tracing-futures", - "tracing-log", + "tracing-log 0.1.4", "tracing-opentelemetry", "tracing-serde", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", "url", "users", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "cognito_srp" version = "0.1.2" @@ -1421,7 +1388,7 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ - "base64 0.21.0", + "base64 0.21.7", "bech32", "bs58", "digest 0.10.7", @@ -1457,7 +1424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" dependencies = [ "backtrace", - "color-spantrace 0.2.0", + "color-spantrace 0.2.1", "eyre", "indenter", "once_cell", @@ -1480,9 +1447,9 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba75b3d9449ecdccb27ecbc479fdc0b87fa2dd43d2f8298f9bf0e59aacc8dce" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" dependencies = [ "once_cell", "owo-colors 3.5.0", @@ -1521,7 +1488,7 @@ dependencies = [ "rust-ini", "serde", "serde_json", - "toml 0.5.9", + "toml 0.5.11", "yaml-rust", ] @@ -1539,21 +1506,22 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa72a10d0e914cad6bcad4e7409e68d230c1c2db67896e19a37f758b1fcbdab5" +checksum = "18d59688ad0945eaf6b84cb44fedbe93484c81b48970e98f09db8a22832d7961" dependencies = [ "cfg-if", "cpufeatures", "hex", + "proptest", "serde", ] [[package]] name = "const-oid" -version = "0.9.2" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "constant_time_eq" @@ -1563,9 +1531,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -1573,15 +1541,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "corosensei" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9847f90f32a50b0dcbd68bc23ff242798b13080b97b0569f6ed96a45ce4cf2cd" +checksum = "80128832c58ea9cbd041d2a759ec449224487b2c1e400453d99d244eead87a8e" dependencies = [ "autocfg", "cfg-if", @@ -1592,9 +1560,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -1618,7 +1586,7 @@ dependencies = [ "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli", + "gimli 0.26.2", "log", "regalloc", "smallvec", @@ -1660,18 +1628,18 @@ dependencies = [ [[package]] name = "crc" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53757d12b596c16c78b83458d732a5d1a17ab3f53f2f7412f6fb57cc8a140ab3" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" dependencies = [ "crc-catalog", ] [[package]] name = "crc-catalog" -version = "2.1.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d0165d2900ae6778e36e80bbc4da3b5eefccee9ba939761f9c2882a5d9af3ff" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" @@ -1720,56 +1688,46 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset 0.7.1", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -1779,9 +1737,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.5.1" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", "rand_core", @@ -1811,22 +1769,21 @@ dependencies = [ [[package]] name = "csv" -version = "1.1.6" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ - "bstr", "csv-core", - "itoa 0.4.8", + "itoa", "ryu", "serde", ] [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] @@ -1837,58 +1794,14 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher 0.4.3", -] - -[[package]] -name = "cxx" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 1.0.107", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.107", + "cipher", ] [[package]] name = "darling" -version = "0.14.2" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +checksum = "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8" dependencies = [ "darling_core", "darling_macro", @@ -1896,36 +1809,36 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.2" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +checksum = "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] name = "darling_macro" -version = "0.14.2" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" +checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" dependencies = [ "darling_core", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.3", "lock_api", "once_cell", "parking_lot_core", @@ -1933,21 +1846,30 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "der" -version = "0.7.3" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b10af9f9f9f2134a42d3f8aa74658660f2e0234b0eb81bd171df8aa32779ed" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", "pem-rfc7468", "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "derivative" version = "2.2.0" @@ -1956,7 +1878,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -1967,7 +1889,7 @@ checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -2047,42 +1969,44 @@ checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" [[package]] name = "dotenvy" -version = "0.15.6" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dunce" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "ecdsa" -version = "0.16.1" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1b0a1222f8072619e8a6b667a854020a03d363738303203c09468b3424a420a" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature", + "spki", ] [[package]] name = "either" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" dependencies = [ "serde", ] [[package]] name = "elliptic-curve" -version = "0.13.5" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", @@ -2099,9 +2023,9 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7402b94a93c24e742487327a7cd839dc9d36fec9de9fb25b09f2dae459f36c3" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" dependencies = [ "log", ] @@ -2114,9 +2038,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -2127,7 +2051,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.0", + "base64 0.21.7", "bytes", "hex", "k256", @@ -2141,14 +2065,14 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ "heck", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] @@ -2168,28 +2092,28 @@ checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "enumset" -version = "1.0.12" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753" +checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.6.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0" +checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" dependencies = [ "darling", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] @@ -2200,34 +2124,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -2247,7 +2149,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ - "aes 0.8.2", + "aes", "ctr", "digest 0.10.7", "hex", @@ -2297,9 +2199,9 @@ dependencies = [ [[package]] name = "ethereum-types" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81224dc661606574f5a0f28c9947d0ee1d93ff11c5f1c4e7272f52e8c0b5483c" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ "ethbloom", "fixed-hash", @@ -2313,13 +2215,13 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad13497f6e0a24292fc7b408e30d22fe9dc262da1f40d7b542c3a44e7fc0476" +checksum = "6c7cd562832e2ff584fa844cd2f6e5d4f35bbe11b28c7c9b8df957b2e1d0c701" dependencies = [ "ethers-addressbook", "ethers-contract", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethers-etherscan", "ethers-middleware", "ethers-providers", @@ -2329,11 +2231,11 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e9e8acd0ed348403cc73a670c24daba3226c40b98dc1a41903766b3ab6240a" +checksum = "35dc9a249c066d17e8947ff52a4116406163cf92c7f0763cb8c001760b26403f" dependencies = [ - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell", "serde", "serde_json", @@ -2341,14 +2243,14 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d79269278125006bb0552349c03593ffa9702112ca88bc7046cc669f148fb47c" +checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" dependencies = [ "const-hex", "ethers-contract-abigen", "ethers-contract-derive", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethers-providers", "futures-util", "once_cell", @@ -2360,14 +2262,14 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce95a43c939b2e4e2f3191c5ad4a1f279780b8a39139c9905b43a7433531e2ab" +checksum = "f9f96502317bf34f6d71a3e3d270defaa9485d754d789e15a8e04a84161c95eb" dependencies = [ "Inflector", "const-hex", "dunce", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethers-etherscan", "eyre", "prettyplease", @@ -2377,32 +2279,32 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.32", - "toml 0.7.8", + "syn 2.0.48", + "toml 0.8.10", "walkdir", ] [[package]] name = "ethers-contract-derive" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9ce44906fc871b3ee8c69a695ca7ec7f70e50cb379c9b9cb5e532269e492f6" +checksum = "452ff6b0a64507ce8d67ffd48b1da3b42f03680dcf5382244e9c93822cbbf5de" dependencies = [ "Inflector", "const-hex", "ethers-contract-abigen", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2", "quote", "serde_json", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "ethers-core" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0a17f0708692024db9956b31d7a20163607d2745953f5ae8125ab368ba280ad" +checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" dependencies = [ "arrayvec", "bytes", @@ -2421,7 +2323,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.32", + "syn 2.0.48", "tempfile", "thiserror", "tiny-keccak", @@ -2430,8 +2332,8 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.10" -source = "git+https://github.com/gakonst/ethers-rs#08bcb67c36d9a2869950e51ecf76124c9febe035" +version = "2.0.13" +source = "git+https://github.com/gakonst/ethers-rs#4d267f763a19e42a09e92741e1489c123f852f53" dependencies = [ "arrayvec", "bytes", @@ -2456,13 +2358,14 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e53451ea4a8128fbce33966da71132cf9e1040dcfd2a2084fd7733ada7b2045" +checksum = "16d45b981f5fa769e1d0343ebc2a44cfa88c9bc312eb681b676318b40cef6fb1" dependencies = [ - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest", - "semver 1.0.14", + "semver 1.0.21", "serde", "serde_json", "thiserror", @@ -2471,14 +2374,14 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473f1ccd0c793871bbc248729fa8df7e6d2981d6226e4343e3bbaa9281074d5d" +checksum = "145211f34342487ef83a597c1e69f0d3e01512217a7c72cc8a25931854c7dca0" dependencies = [ "async-trait", "auto_impl", "ethers-contract", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethers-etherscan", "ethers-providers", "ethers-signers", @@ -2498,23 +2401,23 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6838fa110e57d572336178b7c79e94ff88ef976306852d8cb87d9e5b1fc7c0b5" +checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.0", + "base64 0.21.7", "bytes", "const-hex", "enr", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "futures-channel", "futures-core", "futures-timer", "futures-util", "hashers", - "http", + "http 0.2.11", "instant", "jsonwebtoken", "once_cell", @@ -2537,9 +2440,9 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea44bec930f12292866166f9ddbea6aa76304850e4d8dcd66dc492b43d00ff1" +checksum = "b3b125a103b56aef008af5d5fb48191984aa326b50bfd2557d231dc499833de3" dependencies = [ "async-trait", "coins-bip32", @@ -2547,7 +2450,7 @@ dependencies = [ "const-hex", "elliptic-curve", "eth-keystore", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "rand", "sha2", "thiserror", @@ -2556,15 +2459,15 @@ dependencies = [ [[package]] name = "ethers-solc" -version = "2.0.10" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de34e484e7ae3cab99fbfd013d6c5dc7f9013676a4e0e414d8b12e1213e8b3ba" +checksum = "d21df08582e0a43005018a858cc9b465c5fff9cf4056651be64f844e57d1f55f" dependencies = [ "cfg-if", "const-hex", "dirs", "dunce", - "ethers-core 2.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ethers-core 2.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "glob", "home", "md-5", @@ -2573,7 +2476,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.14", + "semver 1.0.21", "serde", "serde_json", "solang-parser", @@ -2594,9 +2497,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "eyre" -version = "0.6.8" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -2610,9 +2513,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fastrlp" @@ -2635,6 +2538,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -2655,12 +2564,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", - "miniz_oxide 0.6.2", + "miniz_oxide", ] [[package]] @@ -2697,9 +2606,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -2722,9 +2631,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.26" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -2737,9 +2646,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -2747,15 +2656,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.26" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -2775,9 +2684,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-locks" @@ -2791,26 +2700,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -2824,9 +2733,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -2862,13 +2771,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -2878,10 +2787,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" dependencies = [ "fallible-iterator", - "indexmap 1.9.2", + "indexmap 1.9.3", "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + [[package]] name = "glob" version = "0.3.1" @@ -2913,17 +2828,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.21" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", - "indexmap 1.9.2", + "http 0.2.11", + "indexmap 2.2.2", "slab", "tokio", "tokio-util", @@ -2942,7 +2857,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -2951,14 +2866,18 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.7", + "allocator-api2", +] [[package]] name = "hashers" @@ -2971,11 +2890,11 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.12.3", + "hashbrown 0.14.3", ] [[package]] @@ -2998,9 +2917,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" [[package]] name = "hex" @@ -3022,9 +2941,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac", ] @@ -3040,32 +2959,43 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", ] [[package]] name = "http" -version = "0.2.9" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" dependencies = [ "bytes", "fnv", - "itoa 1.0.9", + "itoa", ] [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.11", "pin-project-lite", ] @@ -3077,9 +3007,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -3099,22 +3029,22 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "httparse", "httpdate", - "itoa 1.0.9", + "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2", "tokio", "tower-service", "tracing", @@ -3123,12 +3053,12 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http", + "http 0.2.11", "hyper", "log", "rustls", @@ -3164,26 +3094,25 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows-core", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -3194,9 +3123,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -3237,7 +3166,7 @@ checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -3248,9 +3177,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", @@ -3259,12 +3188,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -3293,36 +3222,30 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074" - -[[package]] -name = "io-lifetimes" -version = "1.0.2" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e394faa0efb47f9f227f1cd89978f854542b318a6f64fa695489c9c993056656" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ + "hermit-abi 0.3.5", "libc", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.5.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes 1.0.2", - "rustix 0.37.3", - "windows-sys 0.48.0", + "hermit-abi 0.3.5", + "rustix 0.38.31", + "windows-sys 0.52.0", ] [[package]] @@ -3344,31 +3267,34 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "0.4.8" +name = "itertools" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -3390,7 +3316,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.0", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -3400,9 +3326,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -3414,9 +3340,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] @@ -3436,7 +3362,7 @@ dependencies = [ "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.7.4", + "regex-syntax 0.7.5", "string_cache", "term", "tiny-keccak", @@ -3466,9 +3392,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.150" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libloading" @@ -3488,32 +3414,34 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libmimalloc-sys" -version = "0.1.28" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d1c67deb83e6b75fa4fe3309e09cfeade12e7721d95322af500d3814ea60c9" +checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664" dependencies = [ "cc", "libc", ] [[package]] -name = "libsqlite3-sys" -version = "0.26.0" +name = "libredox" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "cc", - "pkg-config", - "vcpkg", + "bitflags 2.4.2", + "libc", + "redox_syscall", ] [[package]] -name = "link-cplusplus" -version = "1.0.7" +name = "libsqlite3-sys" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" dependencies = [ "cc", + "pkg-config", + "vcpkg", ] [[package]] @@ -3524,27 +3452,21 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.0.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" - -[[package]] -name = "linux-raw-sys" -version = "0.3.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -3552,12 +3474,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "loupe" @@ -3565,7 +3484,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b6a72dfa44fe15b5e76b94307eeb2ff995a8c5b283b55008940c02e0c5b634d" dependencies = [ - "indexmap 1.9.2", + "indexmap 1.9.3", "loupe-derive", "rustversion", ] @@ -3577,7 +3496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fbfc88337168279f2e9ae06e157cfed4efd3316e14dc96ed074d4f2e6c5952" dependencies = [ "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -3600,9 +3519,9 @@ dependencies = [ [[package]] name = "mach2" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" dependencies = [ "libc", ] @@ -3624,30 +3543,31 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -3678,7 +3598,7 @@ dependencies = [ "async-trait", "axum", "chrono", - "clap 4.3.14", + "clap 4.4.18", "ethers", "hyper", "oz-api", @@ -3686,23 +3606,23 @@ dependencies = [ "serde_json", "tokio", "tracing", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", ] [[package]] name = "mimalloc" -version = "0.1.32" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2374e2999959a7b583e1811a1ddbf1d3a4b9496eceb9746f1192a59d871eca" +checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c" dependencies = [ "libmimalloc-sys", ] [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal-lexical" @@ -3712,30 +3632,21 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.6.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] @@ -3749,7 +3660,7 @@ dependencies = [ "combine", "libc", "mach2", - "nix", + "nix 0.26.4", "sysctl", "thiserror", "widestring", @@ -3799,11 +3710,22 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.2", + "cfg-if", + "libc", +] + [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -3821,9 +3743,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ "num-bigint", "num-complex", @@ -3835,9 +3757,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -3864,13 +3786,19 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.45" @@ -3920,29 +3848,29 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.5", "libc", ] [[package]] name = "num_enum" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -3953,24 +3881,24 @@ checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" dependencies = [ "crc32fast", "hashbrown 0.11.2", - "indexmap 1.9.2", + "indexmap 1.9.3", "memchr", ] [[package]] name = "object" -version = "0.29.0" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -4006,16 +3934,16 @@ dependencies = [ "bytes", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "openssl" -version = "0.10.55" +version = "0.10.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "cfg-if", "foreign-types", "libc", @@ -4026,13 +3954,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] @@ -4043,9 +3971,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.90" +version = "0.9.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" dependencies = [ "cc", "libc", @@ -4071,8 +3999,8 @@ checksum = "daf08569fbddd2149b268e2bde2bca0bab84bc19ee2efcc234f855f49a911536" dependencies = [ "async-trait", "futures-core", - "http", - "indexmap 1.9.2", + "http 0.2.11", + "indexmap 1.9.3", "itertools 0.10.5", "once_cell", "opentelemetry", @@ -4092,7 +4020,7 @@ checksum = "a819b71d6530c4297b49b3cae2939ab3a8cc1b9f382826a1bc29dd0ca3864906" dependencies = [ "async-trait", "bytes", - "http", + "http 0.2.11", "opentelemetry_api", "reqwest", ] @@ -4106,7 +4034,7 @@ dependencies = [ "async-trait", "futures", "futures-util", - "http", + "http 0.2.11", "opentelemetry", "opentelemetry-proto", "prost", @@ -4146,7 +4074,7 @@ dependencies = [ "fnv", "futures-channel", "futures-util", - "indexmap 1.9.2", + "indexmap 1.9.3", "once_cell", "pin-project-lite", "thiserror", @@ -4235,9 +4163,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.2.1" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec", "bitvec", @@ -4249,14 +4177,14 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.3" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -4271,15 +4199,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.4" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "smallvec", - "windows-sys 0.42.0", + "windows-targets 0.48.5", ] [[package]] @@ -4295,9 +4223,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.9" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "path-slash" @@ -4353,15 +4281,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.6" +version = "2.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" +checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" dependencies = [ "memchr", "thiserror", @@ -4370,9 +4298,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.6" +version = "2.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcd6ab1236bbdb3a49027e920e693192ebfe8913f6d60e294de57463a493cfde" +checksum = "22e1288dbd7786462961e69bfd4df7848c1e37e8b74303dbdab82c3a9cdd2809" dependencies = [ "pest", "pest_generator", @@ -4380,22 +4308,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.6" +version = "2.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a31940305ffc96863a735bef7c7994a00b325a7138fdbc5bda0f1a0476d3275" +checksum = "1381c29a877c6d34b8c176e734f35d7f7f5b3adaefe940cb4d1bb7af94678e2e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "pest_meta" -version = "2.7.6" +version = "2.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ff62f5259e53b78d1af898941cdcdccfae7385cf7d793a6e55de5d05bb4b7d" +checksum = "d0934d6907f148c22a3acbda520c7eed243ad7487a30f51f6ce52b58b7077a8a" dependencies = [ "once_cell", "pest", @@ -4404,12 +4332,12 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 1.9.2", + "indexmap 2.2.2", ] [[package]] @@ -4452,7 +4380,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -4475,22 +4403,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -4528,15 +4456,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -4547,15 +4475,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] @@ -4569,6 +4497,12 @@ dependencies = [ "tokio", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -4583,19 +4517,19 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "primitive-types" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", @@ -4607,13 +4541,30 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "thiserror", - "toml 0.5.9", + "toml_edit 0.19.15", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", ] [[package]] @@ -4625,7 +4576,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", "version_check", ] @@ -4642,24 +4593,24 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "procfs" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfb6451c91904606a1abe93e83a8ec851f45827fa84273f256ade45dc095818" +checksum = "b1de8dacb0873f77e6aefc6d71e044761fcc68060290f5b1089fcdf84626bb69" dependencies = [ "bitflags 1.3.2", "byteorder", "hex", "lazy_static", - "rustix 0.35.13", + "rustix 0.36.17", ] [[package]] @@ -4685,7 +4636,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -4715,7 +4666,7 @@ dependencies = [ "itertools 0.10.5", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -4741,14 +4692,14 @@ checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "quote" -version = "1.0.31" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -4800,9 +4751,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -4810,42 +4761,31 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] @@ -4862,14 +4802,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.1" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.3", - "regex-syntax 0.7.4", + "regex-automata 0.4.5", + "regex-syntax 0.8.2", ] [[package]] @@ -4878,31 +4818,37 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax 0.6.28", + "regex-syntax 0.6.29", ] [[package]] name = "regex-automata" -version = "0.3.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.4", + "regex-syntax 0.8.2", ] +[[package]] +name = "regex-lite" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" + [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "regex-syntax" @@ -4924,26 +4870,26 @@ dependencies = [ [[package]] name = "rend" -version = "0.3.6" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" dependencies = [ - "base64 0.21.0", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "hyper-rustls", @@ -4961,6 +4907,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -5001,9 +4948,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.5" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", "getrandom", @@ -5024,27 +4971,31 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.39" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2b3485b07d96ddfd3134767b8a447b45ea4eb91448d0a35180ec0ffd5ed15" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ + "bitvec", "bytecheck", + "bytes", "hashbrown 0.12.3", "ptr_meta", "rend", "rkyv_derive", "seahash", + "tinyvec", + "uuid 1.7.0", ] [[package]] name = "rkyv_derive" -version = "0.7.39" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -5066,14 +5017,14 @@ checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "rmp" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" dependencies = [ "byteorder", "num-traits", @@ -5093,21 +5044,20 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.1" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f1471dbb4be5de45050e8ef7040625298ccb9efe941419ac2697088715925f" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" dependencies = [ - "byteorder", "const-oid", "digest 0.10.7", "num-bigint-dig", "num-integer", - "num-iter", "num-traits", "pkcs1", "pkcs8", "rand_core", "signature", + "spki", "subtle", "zeroize", ] @@ -5156,9 +5106,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -5187,58 +5137,44 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.14", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.35.13" +version = "0.36.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727a1a6d65f786ec22df8a81ca3121107f235970dc1705ed681d3e6e8b9cd5f9" +checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" dependencies = [ "bitflags 1.3.2", - "errno 0.2.8", - "io-lifetimes 0.7.5", + "errno", + "io-lifetimes", "libc", - "linux-raw-sys 0.0.46", - "windows-sys 0.42.0", -] - -[[package]] -name = "rustix" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b24138615de35e32031d041a09032ef3487a616d901ca4db224e7d557efae2" -dependencies = [ - "bitflags 1.3.2", - "errno 0.3.1", - "io-lifetimes 1.0.2", - "libc", - "linux-raw-sys 0.3.1", + "linux-raw-sys 0.1.4", "windows-sys 0.45.0", ] [[package]] name = "rustix" -version = "0.38.13" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ - "bitflags 2.4.0", - "errno 0.3.1", + "bitflags 2.4.2", + "errno", "libc", - "linux-raw-sys 0.4.7", - "windows-sys 0.48.0", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.8" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.5", + "ring 0.17.7", "rustls-webpki", "sct", ] @@ -5257,11 +5193,11 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.13.1", + "base64 0.21.7", ] [[package]] @@ -5270,21 +5206,21 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.5", + "ring 0.17.7", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.9" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "salsa20" @@ -5292,7 +5228,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ - "cipher 0.4.3", + "cipher", ] [[package]] @@ -5306,9 +5242,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.3.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d8a765117b237ef233705cc2cc4c6a27fccd46eea6ef0c8c6dae5f3ef407f8" +checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" dependencies = [ "cfg-if", "derive_more", @@ -5318,37 +5254,30 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.3.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcd47b380d8c4541044e341dcd9475f55ba37ddc50c908d945fc036a8642496" +checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "schannel" -version = "0.1.20" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "lazy_static", - "windows-sys 0.36.1", + "windows-sys 0.52.0", ] [[package]] name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" @@ -5364,12 +5293,12 @@ dependencies = [ [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -5380,9 +5309,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", @@ -5394,9 +5323,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.7.0" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -5407,9 +5336,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -5418,7 +5347,7 @@ dependencies = [ [[package]] name = "semaphore" version = "0.1.0" -source = "git+https://github.com/worldcoin/semaphore-rs?branch=main#a45738039e0b0a8adbac5ee193958f1e238d7de4" +source = "git+https://github.com/worldcoin/semaphore-rs?branch=main#08b9fd7a9d92260d2ed3d1031db4a90fa7408777" dependencies = [ "ark-bn254", "ark-circom", @@ -5430,7 +5359,7 @@ dependencies = [ "bincode", "color-eyre 0.6.2", "enumset", - "ethers-core 2.0.10 (git+https://github.com/gakonst/ethers-rs)", + "ethers-core 2.0.13 (git+https://github.com/gakonst/ethers-rs)", "hex", "hex-literal 0.3.4", "mmap-rs", @@ -5453,18 +5382,18 @@ dependencies = [ [[package]] name = "semaphore-depth-config" version = "0.1.0" -source = "git+https://github.com/worldcoin/semaphore-rs?branch=main#a45738039e0b0a8adbac5ee193958f1e238d7de4" +source = "git+https://github.com/worldcoin/semaphore-rs?branch=main#08b9fd7a9d92260d2ed3d1031db4a90fa7408777" [[package]] name = "semaphore-depth-macros" version = "0.1.0" -source = "git+https://github.com/worldcoin/semaphore-rs?branch=main#a45738039e0b0a8adbac5ee193958f1e238d7de4" +source = "git+https://github.com/worldcoin/semaphore-rs?branch=main#08b9fd7a9d92260d2ed3d1031db4a90fa7408777" dependencies = [ "itertools 0.10.5", "proc-macro2", "quote", "semaphore-depth-config", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -5478,9 +5407,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.14" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" dependencies = [ "serde", ] @@ -5502,24 +5431,24 @@ checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "send_wrapper" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.171" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.7" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" dependencies = [ "serde", ] @@ -5536,40 +5465,41 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.171" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.103" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ - "itoa 1.0.9", + "itoa", "ryu", "serde", ] [[package]] name = "serde_path_to_error" -version = "0.1.9" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b04f22b563c91331a10074bda3dd5492e3cc39d56bd557e91c0af42b6c7341" +checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" dependencies = [ + "itoa", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -5581,16 +5511,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.9", + "itoa", "ryu", "serde", ] [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -5610,9 +5540,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ "digest 0.10.7", "keccak", @@ -5620,27 +5550,27 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] [[package]] name = "signature" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core", @@ -5657,7 +5587,7 @@ dependencies = [ "axum-server", "bytes", "chrono", - "clap 4.3.14", + "clap 4.4.18", "cli-batteries", "config", "ethers", @@ -5690,16 +5620,22 @@ dependencies = [ "test-case", "thiserror", "tokio", - "toml 0.8.8", + "toml 0.8.10", "tracing", "tracing-futures", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", "tracing-test", "tx-sitter-client", "url", "zeroize", ] +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + [[package]] name = "similar" version = "2.4.0" @@ -5729,39 +5665,29 @@ dependencies = [ "num-bigint", "num-traits", "thiserror", - "time 0.3.17", + "time", ] [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -5775,9 +5701,9 @@ dependencies = [ [[package]] name = "solang-parser" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb9fa2fa2fa6837be8a2495486ff92e3ffe68a99b6eeba288e139efdd842457" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" dependencies = [ "itertools 0.11.0", "lalrpop", @@ -5804,9 +5730,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a5be806ab6f127c3da44b7378837ebf01dadca8510a0e572460216b228bd0e" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -5814,20 +5740,20 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87e292b4291f154971a43c3774364e2cbcaec599d3f5bf6fa9d122885dbc38a" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" dependencies = [ - "itertools 0.10.5", + "itertools 0.12.1", "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33" +checksum = "dba03c279da73694ef99763320dea58b51095dfe87d001b1d4b5fe78ba8763cf" dependencies = [ "sqlx-core", "sqlx-macros", @@ -5838,9 +5764,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" +checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd" dependencies = [ "ahash 0.8.7", "atoi", @@ -5859,7 +5785,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.1.0", + "indexmap 2.2.2", "log", "memchr", "native-tls", @@ -5880,23 +5806,24 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec" +checksum = "89961c00dc4d7dffb7aee214964b065072bff69e36ddb9e2c107541f75e4f2a5" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "sqlx-macros-core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc" +checksum = "d0bd4519486723648186a08785143599760f7cc81c52334a55d6a83ea1e20841" dependencies = [ + "atomic-write-file", "dotenvy", "either", "heck", @@ -5911,7 +5838,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 1.0.107", + "syn 1.0.109", "tempfile", "tokio", "url", @@ -5919,13 +5846,13 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db" +checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" dependencies = [ "atoi", - "base64 0.21.0", - "bitflags 2.4.0", + "base64 0.21.7", + "bitflags 2.4.2", "byteorder", "bytes", "chrono", @@ -5941,7 +5868,7 @@ dependencies = [ "hex", "hkdf", "hmac", - "itoa 1.0.9", + "itoa", "log", "md-5", "memchr", @@ -5962,13 +5889,13 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624" +checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" dependencies = [ "atoi", - "base64 0.21.0", - "bitflags 2.4.0", + "base64 0.21.7", + "bitflags 2.4.2", "byteorder", "chrono", "crc", @@ -5982,7 +5909,7 @@ dependencies = [ "hkdf", "hmac", "home", - "itoa 1.0.9", + "itoa", "log", "md-5", "memchr", @@ -6002,9 +5929,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f" +checksum = "210976b7d948c7ba9fced8ca835b11cbb2d677c59c79de41ac0d397e14547490" dependencies = [ "atoi", "chrono", @@ -6021,6 +5948,7 @@ dependencies = [ "sqlx-core", "tracing", "url", + "urlencoding", ] [[package]] @@ -6037,9 +5965,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", @@ -6050,10 +5978,11 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -6075,35 +6004,35 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "svm-rs" -version = "0.3.2" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0cc95be7cc2c384a2f57cac56548d2178650905ebe5725bc8970ccc25529060" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" dependencies = [ "dirs", "fs2", "hex", "once_cell", "reqwest", - "semver 1.0.14", + "semver 1.0.21", "serde", "serde_json", "sha2", @@ -6114,9 +6043,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -6125,9 +6054,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.32" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -6136,29 +6065,17 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.107", - "unicode-xid", -] +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sysctl" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed66d6a2ccbd656659289bc90767895b7abbdec897a0fc6031aca3ed1cb51d3e" +checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "byteorder", "enum-as-inner", "libc", @@ -6201,21 +6118,20 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.5" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9410d0f6853b1d94f0e519fb95df60f29d2c1eff2d921ffdf01a4c8a3b54f12d" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.38.13", - "windows-sys 0.48.0", + "rustix 0.38.31", + "windows-sys 0.52.0", ] [[package]] @@ -6229,57 +6145,46 @@ dependencies = [ "winapi", ] -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - [[package]] name = "terminal_size" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ca90c434fd12083d1a6bdcbe9f92a14f96c8a1ba600ba451734ac334521f7a" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.35.13", - "windows-sys 0.42.0", + "rustix 0.38.31", + "windows-sys 0.48.0", ] [[package]] name = "test-case" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f1e820b7f1d95a0cdbf97a5df9de10e1be731983ab943e56703ac1b8e9d425" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" dependencies = [ "test-case-macros", ] [[package]] name = "test-case-core" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c25e2cb8f5fcd7318157634e8838aa6f7e4715c96637f969fabaccd1ef5462" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ "cfg-if", - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "test-case-macros" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37cfd7bbc88a0104e304229fba519bdc45501a30b760fb72240342f1289ad257" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", "test-case-core", ] @@ -6294,51 +6199,44 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.39" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.39" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ + "cfg-if", "once_cell", ] [[package]] name = "time" -version = "0.1.44" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" -dependencies = [ - "itoa 1.0.9", + "deranged", + "itoa", + "num-conv", + "powerfmt", "serde", "time-core", "time-macros", @@ -6346,16 +6244,17 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -6389,15 +6288,15 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.33.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -6407,7 +6306,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -6425,13 +6324,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] @@ -6456,9 +6355,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -6484,9 +6383,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -6498,66 +6397,74 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "toml" -version = "0.7.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.19.15", + "toml_edit 0.22.4", ] [[package]] -name = "toml" -version = "0.8.8" +name = "toml_datetime" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", - "serde_spanned", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.2", "toml_datetime", - "toml_edit 0.21.0", + "winnow", ] [[package]] -name = "toml_datetime" -version = "0.6.5" +name = "toml_edit" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "serde", + "indexmap 2.2.2", + "toml_datetime", + "winnow", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.1.0", - "serde", - "serde_spanned", + "indexmap 2.2.2", "toml_datetime", "winnow", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.2", "serde", "serde_spanned", "toml_datetime", @@ -6578,7 +6485,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "hyper-timeout", @@ -6604,7 +6511,7 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", - "indexmap 1.9.2", + "indexmap 1.9.3", "pin-project", "pin-project-lite", "rand", @@ -6630,11 +6537,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -6643,20 +6549,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -6679,7 +6585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" dependencies = [ "tracing", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", ] [[package]] @@ -6690,7 +6596,7 @@ checksum = "0bae117ee14789185e129aaee5d93750abe67fdc5a9a62650452bfe4e122a3a9" dependencies = [ "lazy_static", "tracing", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", ] [[package]] @@ -6705,14 +6611,25 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "ahash 0.7.6", - "lazy_static", + "ahash 0.7.7", "log", "lru", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", "tracing-core", ] @@ -6726,8 +6643,8 @@ dependencies = [ "opentelemetry", "tracing", "tracing-core", - "tracing-log", - "tracing-subscriber 0.3.17", + "tracing-log 0.1.4", + "tracing-subscriber 0.3.18", ] [[package]] @@ -6753,9 +6670,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -6769,7 +6686,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", "tracing-serde", ] @@ -6781,7 +6698,7 @@ checksum = "3a2c0ff408fe918a94c428a3f2ad04e4afd5c95bbc08fcf868eff750c15728a4" dependencies = [ "lazy_static", "tracing-core", - "tracing-subscriber 0.3.17", + "tracing-subscriber 0.3.18", "tracing-test-macro", ] @@ -6793,14 +6710,14 @@ checksum = "258bc1c4f8e2e73a977812ab339d503e6feeb92700f6d07a6de4d321522d5c08" dependencies = [ "lazy_static", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" @@ -6811,7 +6728,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 0.2.11", "httparse", "log", "native-tls", @@ -6838,21 +6755,21 @@ dependencies = [ [[package]] name = "typenum" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", "crunchy", @@ -6868,24 +6785,24 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -6898,15 +6815,15 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -6934,9 +6851,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -6946,9 +6863,9 @@ dependencies = [ [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "users" @@ -6984,9 +6901,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" [[package]] name = "valuable" @@ -7014,31 +6931,23 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -7047,9 +6956,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -7057,24 +6966,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -7084,9 +6993,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7094,28 +7003,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasm-encoder" -version = "0.20.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05632e0a66a6ed8cca593c24223aabd6262f256c3693ad9822c315285f010614" +checksum = "e09bca7d6388637d27fb5edbeab11f56bfabcef8743c55ae34370e1e5030a071" dependencies = [ "leb128", ] @@ -7127,7 +7036,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea8d8361c9d006ea3d7797de7bd6b1492ffd0f91a22430cfda6c1658ad57bedf" dependencies = [ "cfg-if", - "indexmap 1.9.2", + "indexmap 1.9.3", "js-sys", "loupe", "more-asserts", @@ -7187,7 +7096,7 @@ dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "gimli", + "gimli 0.26.2", "loupe", "more-asserts", "rayon", @@ -7207,7 +7116,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -7315,7 +7224,7 @@ checksum = "39df01ea05dc0a9bab67e054c7cb01521e53b35a7bb90bd02eca564ed0b2667f" dependencies = [ "backtrace", "enum-iterator", - "indexmap 1.9.2", + "indexmap 1.9.3", "loupe", "more-asserts", "rkyv", @@ -7334,7 +7243,7 @@ dependencies = [ "cfg-if", "corosensei", "enum-iterator", - "indexmap 1.9.2", + "indexmap 1.9.3", "lazy_static", "libc", "loupe", @@ -7359,10 +7268,11 @@ checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" [[package]] name = "wast" -version = "50.0.0" +version = "70.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2cbb59d4ac799842791fe7e806fa5dbbf6b5554d538e51cc8e176db6ff0ae34" +checksum = "a3d5061300042ff5065123dae1e27d00c03f567d34a2937c8472255148a216dc" dependencies = [ + "bumpalo", "leb128", "memchr", "unicode-width", @@ -7371,18 +7281,18 @@ dependencies = [ [[package]] name = "wat" -version = "1.0.52" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584aaf7a1ecf4d383bbe1a25eeab0cbb8ff96acc6796707ff65cde48f4632f15" +checksum = "afd7357b6cc46d46a2509c43dcb1dd4131dafbf4e75562d87017b5a05ffad2d6" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -7390,31 +7300,27 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "which" -version = "4.3.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.31", ] [[package]] name = "whoami" -version = "1.2.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6631b6a2fd59b1841b622e8f1a7ad241ef0a46f2d580464ce8140ac94cbd571" -dependencies = [ - "bumpalo", - "wasm-bindgen", - "web-sys", -] +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" [[package]] name = "widestring" @@ -7440,9 +7346,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -7462,6 +7368,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.0", +] + [[package]] name = "windows-sys" version = "0.33.0" @@ -7475,34 +7390,6 @@ dependencies = [ "windows_x86_64_msvc 0.33.0", ] -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -7518,7 +7405,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -7547,17 +7434,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -7583,9 +7470,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" @@ -7599,12 +7486,6 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -7613,9 +7494,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" @@ -7629,12 +7510,6 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -7643,9 +7518,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" @@ -7659,12 +7534,6 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -7673,9 +7542,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" @@ -7689,12 +7558,6 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -7703,9 +7566,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" @@ -7721,9 +7584,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" @@ -7737,12 +7600,6 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -7751,9 +7608,9 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" @@ -7763,9 +7620,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" dependencies = [ "memchr", ] @@ -7782,16 +7639,17 @@ dependencies = [ [[package]] name = "ws_stream_wasm" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ca1ab42f5afed7fc332b22b6e932ca5414b209465412c8cdf0ad23bc0de645" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" dependencies = [ "async_io_stream", "futures", "js-sys", + "log", "pharos", "rustc_version 0.4.0", - "send_wrapper 0.5.0", + "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", "wasm-bindgen-futures", @@ -7845,37 +7703,36 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.48", ] [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", - "synstructure", + "syn 2.0.48", ] [[package]] name = "zip" -version = "0.6.3" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537ce7411d25e54e8ae21a7ce0b15840e7bfcff15b51d697ec3266cc76bdf080" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ - "aes 0.7.5", + "aes", "byteorder", "bzip2", "constant_time_eq", @@ -7885,7 +7742,7 @@ dependencies = [ "hmac", "pbkdf2 0.11.0", "sha1", - "time 0.3.17", + "time", "zstd", ] @@ -7910,10 +7767,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.3+zstd.1.5.2" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44ccf97612ac95f3ccb89b2d7346b345e52f1c3019be4984f0455fb4ba991f8a" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", + "pkg-config", ] diff --git a/src/app.rs b/src/app.rs index 5ad0f2df..2ef9323b 100644 --- a/src/app.rs +++ b/src/app.rs @@ -174,7 +174,7 @@ impl App { pub fn get_leftover_leaves_and_update_index( index: &mut usize, dense_prefix_depth: usize, - mined_items: &Vec, + mined_items: &[TreeUpdate], ) -> Vec> { let leftover_items = if mined_items.is_empty() { vec![] diff --git a/src/lib.rs b/src/lib.rs index 6e130269..d17320c4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ #![doc = include_str!("../Readme.md")] #![warn(clippy::cargo)] -#![allow(clippy::too_many_arguments)] +#![allow(clippy::multiple_crate_versions, clippy::too_many_arguments)] pub mod app; pub mod config; diff --git a/src/main.rs b/src/main.rs index 996dec32..bc18cb47 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,10 @@ #![doc = include_str!("../Readme.md")] #![warn(clippy::cargo)] -#![allow(clippy::module_name_repetitions, clippy::wildcard_imports)] +#![allow( + clippy::module_name_repetitions, + clippy::wildcard_imports, + clippy::multiple_crate_versions +)] use std::path::PathBuf; diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 8db9ba5f..7c0ad311 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -1,6 +1,6 @@ // We include this module in multiple in multiple integration // test crates - so some code may not be used in some cases -#![allow(dead_code, clippy::too_many_arguments)] +#![allow(dead_code, clippy::too_many_arguments, unused_imports)] pub mod abi; mod chain_mock; From cfce7e5748762f160c123b29e291ee821d8477ae Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Thu, 8 Feb 2024 10:02:20 -0800 Subject: [PATCH 05/10] cleanup --- src/database/mod.rs | 782 ++++++++++++++++++++++---------------------- 1 file changed, 389 insertions(+), 393 deletions(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 556f122f..2730debf 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -45,6 +45,275 @@ impl Deref for Database { impl<'a, T> DatabaseExt<'a> for T where T: Executor<'a, Database = Postgres> {} +impl Database { + #[instrument(skip_all)] + pub async fn new(config: &DatabaseConfig) -> Result { + info!(url = %&config.database, "Connecting to database"); + + // Create database if requested and does not exist + if config.migrate && !Postgres::database_exists(config.database.expose()).await? { + warn!(url = %&config.database, "Database does not exist, creating database"); + Postgres::create_database(config.database.expose()).await?; + } + + // Create a connection pool + let pool = PoolOptions::::new() + .max_connections(config.max_connections) + .connect(config.database.expose()) + .await + .context("error connecting to database")?; + + let version = pool + .fetch_one("SELECT version()") + .await + .context("error getting database version")? + .get::(0); + info!(url = %&config.database, ?version, "Connected to database"); + + // Run migrations if requested. + let latest = MIGRATOR + .migrations + .last() + .expect("Missing migrations") + .version; + + if config.migrate { + info!(url = %&config.database, "Running migrations"); + MIGRATOR.run(&pool).await?; + } + + // Validate database schema version + let mut conn = pool.acquire().await?; + + if conn.dirty_version().await?.is_some() { + error!( + url = %&config.database, + version, + expected = latest, + "Database is in incomplete migration state.", + ); + return Err(anyhow!("Database is in incomplete migration state.")); + } + + let version = conn + .list_applied_migrations() + .await? + .last() + .expect("Missing migrations") + .version; + + match version.cmp(&latest) { + Ordering::Less => { + error!( + url = %&config.database, + version, + expected = latest, + "Database is not up to date, try rerunning with --database-migrate", ); + return Err(anyhow!( + "Database is not up to date, try rerunning with --database-migrate" + )); + } + Ordering::Greater => { + error!( + url = %&config.database, + version, + latest, + "Database version is newer than this version of the software, please update.", ); + return Err(anyhow!( + "Database version is newer than this version of the software, please update." + )); + } + Ordering::Equal => { + info!( + url = %&config.database, + version, + latest, + "Database version is up to date.", + ); + } + } + + Ok(Self { pool }) + } + + /// Marks the identities and roots from before a given root hash as mined + /// Also marks following roots as pending + #[instrument(skip(self), level = "debug")] + pub async fn mark_root_as_processed(&self, root: &Hash) -> Result<(), Error> { + let mut tx = self.pool.begin().await?; + + let root_id = tx.get_id_by_root(root).await?; + + let Some(root_id) = root_id else { + return Err(Error::MissingRoot { root: *root }); + }; + + let root_id = root_id as i64; + // TODO: Can I get rid of line `AND status <> $2 + let update_previous_roots = sqlx::query( + r#" + UPDATE identities + SET status = $2, mined_at = CURRENT_TIMESTAMP + WHERE id <= $1 + AND status <> $2 + AND status <> $3; + "#, + ) + .bind(root_id) + .bind(<&str>::from(ProcessedStatus::Processed)) + .bind(<&str>::from(ProcessedStatus::Mined)); + + let update_next_roots = sqlx::query( + r#" + UPDATE identities + SET status = $2, mined_at = NULL + WHERE id > $1 + "#, + ) + .bind(root_id) + .bind(<&str>::from(ProcessedStatus::Pending)); + + tx.execute(update_previous_roots).await?; + tx.execute(update_next_roots).await?; + + tx.commit().await?; + + Ok(()) + } + + /// Marks the identities and roots from before a given root hash as + /// finalized + #[instrument(skip(self), level = "debug")] + pub async fn mark_root_as_mined(&self, root: &Hash) -> Result<(), Error> { + let mined_status = ProcessedStatus::Mined; + + let mut tx = self.pool.begin().await?; + tx.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;") + .await?; + + let root_id = tx.get_id_by_root(root).await?; + + let Some(root_id) = root_id else { + return Err(Error::MissingRoot { root: *root }); + }; + + let root_id = root_id as i64; + + let update_previous_roots = sqlx::query( + r#" + UPDATE identities + SET status = $2 + WHERE id <= $1 + AND status <> $2 + "#, + ) + .bind(root_id) + .bind(<&str>::from(mined_status)); + + tx.execute(update_previous_roots).await?; + + tx.commit().await?; + + Ok(()) + } + + pub async fn get_identity_history_entries( + &self, + commitment: &Hash, + ) -> Result, Error> { + let unprocessed = sqlx::query( + r#" + SELECT commitment, status, eligibility + FROM unprocessed_identities + WHERE commitment = $1 + "#, + ) + .bind(commitment); + + let rows = self.pool.fetch_all(unprocessed).await?; + let unprocessed_updates = rows + .into_iter() + .map(|row| { + let eligibility_timestamp: DateTime = row.get(2); + let held_back = Utc::now() < eligibility_timestamp; + + CommitmentHistoryEntry { + leaf_index: None, + commitment: row.get::(0), + held_back, + status: row + .get::<&str, _>(1) + .parse() + .expect("Failed to parse unprocessed status"), + } + }) + .collect::>(); + + let leaf_index = self.get_identity_leaf_index(commitment).await?; + let Some(leaf_index) = leaf_index else { + return Ok(unprocessed_updates); + }; + + let identity_deletions = sqlx::query( + r#" + SELECT commitment + FROM deletions + WHERE leaf_index = $1 + "#, + ) + .bind(leaf_index.leaf_index as i64); + + let rows = self.pool.fetch_all(identity_deletions).await?; + let deletions = rows + .into_iter() + .map(|_row| CommitmentHistoryEntry { + leaf_index: Some(leaf_index.leaf_index), + commitment: Hash::ZERO, + held_back: false, + status: UnprocessedStatus::New.into(), + }) + .collect::>(); + + let processed_updates = sqlx::query( + r#" + SELECT commitment, status + FROM identities + WHERE leaf_index = $1 + ORDER BY id ASC + "#, + ) + .bind(leaf_index.leaf_index as i64); + + let rows = self.pool.fetch_all(processed_updates).await?; + let processed_updates: Vec = rows + .into_iter() + .map(|row| CommitmentHistoryEntry { + leaf_index: Some(leaf_index.leaf_index), + commitment: row.get::(0), + held_back: false, + status: row + .get::<&str, _>(1) + .parse() + .expect("Status is unreadable, database is corrupt"), + }) + .collect(); + + Ok([processed_updates, unprocessed_updates, deletions] + .concat() + .into_iter() + .collect()) + } + + // TODO: add docs + pub async fn identity_is_queued_for_deletion(&self, commitment: &Hash) -> Result { + let query_queued_deletion = + sqlx::query(r#"SELECT exists(SELECT 1 FROM deletions where commitment = $1)"#) + .bind(commitment); + let row_unprocessed = self.pool.fetch_one(query_queued_deletion).await?; + Ok(row_unprocessed.get::(0)) + } +} + /// This trait provides the individual and composable queries to the database. /// Each method is a single atomic query, and can be composed withing a /// transaction. @@ -398,443 +667,170 @@ pub trait DatabaseExt<'a>: Executor<'a, Database = Postgres> { DO UPDATE SET deletion_timestamp = EXCLUDED.deletion_timestamp; "#, ) - .bind(deletion_timestamp); - - self.execute(query).await?; - Ok(()) - } - - async fn get_recoveries(self) -> Result, Error> { - Ok( - sqlx::query_as::<_, RecoveryEntry>("SELECT * FROM recoveries") - .fetch_all(self) - .await?, - ) - } - - async fn find_recoveries_by_prev_commit( - self, - prev_commits: &[U256], - ) -> Result, Error> { - // TODO: upstream PgHasArrayType impl to ruint - let prev_commits = prev_commits - .iter() - .map(|c| c.to_be_bytes()) - .collect::>(); - - let res = sqlx::query_as::<_, RecoveryEntry>( - r#" - SELECT * - FROM recoveries - WHERE existing_commitment = ANY($1) - "#, - ) - .bind(&prev_commits) - .fetch_all(self) - .await?; - - Ok(res) - } - - async fn insert_new_deletion(self, leaf_index: usize, identity: &Hash) -> Result<(), Error> { - let query = sqlx::query( - r#" - INSERT INTO deletions (leaf_index, commitment) - VALUES ($1, $2) - "#, - ) - .bind(leaf_index as i64) - .bind(identity); - - self.execute(query).await?; - Ok(()) - } - - // TODO: consider using a larger value than i64 for leaf index, ruint should - // have postgres compatibility for u256 - async fn get_deletions(self) -> Result, Error> { - let query = sqlx::query( - r#" - SELECT * - FROM deletions - "#, - ); - - let result = self.fetch_all(query).await?; - - Ok(result - .into_iter() - .map(|row| DeletionEntry { - leaf_index: row.get::(0) as usize, - commitment: row.get::(1), - }) - .collect::>()) - } - - /// Remove a list of entries from the deletions table - async fn remove_deletions(self, commitments: &[Hash]) -> Result<(), Error> { - let commitments = commitments - .iter() - .map(|c| c.to_be_bytes()) - .collect::>(); - - sqlx::query("DELETE FROM deletions WHERE commitment = Any($1)") - .bind(commitments) - .execute(self) - .await?; - - Ok(()) - } - - async fn get_eligible_unprocessed_commitments( - self, - status: UnprocessedStatus, - ) -> Result, Error> { - let query = sqlx::query( - r#" - SELECT * FROM unprocessed_identities - WHERE status = $1 AND CURRENT_TIMESTAMP > eligibility - LIMIT $2 - "#, - ) - .bind(<&str>::from(status)) - .bind(MAX_UNPROCESSED_FETCH_COUNT); - - let result = self.fetch_all(query).await?; - - Ok(result - .into_iter() - .map(|row| types::UnprocessedCommitment { - commitment: row.get::(0), - status, - created_at: row.get::<_, _>(2), - processed_at: row.get::<_, _>(3), - error_message: row.get::<_, _>(4), - eligibility_timestamp: row.get::<_, _>(5), - }) - .collect::>()) - } - - async fn get_unprocessed_commit_status( - self, - commitment: &Hash, - ) -> Result, Error> { - let query = sqlx::query( - r#" - SELECT status, error_message FROM unprocessed_identities WHERE commitment = $1 - "#, - ) - .bind(commitment); - - let result = self.fetch_optional(query).await?; - - if let Some(row) = result { - return Ok(Some(( - row.get::<&str, _>(0).parse().expect("couldn't read status"), - row.get::, _>(1).unwrap_or_default(), - ))); - }; - Ok(None) - } - - async fn remove_unprocessed_identity(self, commitment: &Hash) -> Result<(), Error> { - let query = sqlx::query( - r#" - DELETE FROM unprocessed_identities WHERE commitment = $1 - "#, - ) - .bind(commitment); - - self.execute(query).await?; - - Ok(()) - } - - async fn identity_exists(self, commitment: Hash) -> Result { - Ok(sqlx::query( - r#" - select - EXISTS (select commitment from unprocessed_identities where commitment = $1) OR - EXISTS (select commitment from identities where commitment = $1); - "#, - ) - .bind(commitment) - .fetch_one(self) - .await? - .get::(0)) - } -} - -impl Database { - #[instrument(skip_all)] - pub async fn new(config: &DatabaseConfig) -> Result { - info!(url = %&config.database, "Connecting to database"); - - // Create database if requested and does not exist - if config.migrate && !Postgres::database_exists(config.database.expose()).await? { - warn!(url = %&config.database, "Database does not exist, creating database"); - Postgres::create_database(config.database.expose()).await?; - } - - // Create a connection pool - let pool = PoolOptions::::new() - .max_connections(config.max_connections) - .connect(config.database.expose()) - .await - .context("error connecting to database")?; - - let version = pool - .fetch_one("SELECT version()") - .await - .context("error getting database version")? - .get::(0); - info!(url = %&config.database, ?version, "Connected to database"); - - // Run migrations if requested. - let latest = MIGRATOR - .migrations - .last() - .expect("Missing migrations") - .version; - - if config.migrate { - info!(url = %&config.database, "Running migrations"); - MIGRATOR.run(&pool).await?; - } - - // Validate database schema version - let mut conn = pool.acquire().await?; - - if conn.dirty_version().await?.is_some() { - error!( - url = %&config.database, - version, - expected = latest, - "Database is in incomplete migration state.", - ); - return Err(anyhow!("Database is in incomplete migration state.")); - } - - let version = conn - .list_applied_migrations() - .await? - .last() - .expect("Missing migrations") - .version; - - match version.cmp(&latest) { - Ordering::Less => { - error!( - url = %&config.database, - version, - expected = latest, - "Database is not up to date, try rerunning with --database-migrate", ); - return Err(anyhow!( - "Database is not up to date, try rerunning with --database-migrate" - )); - } - Ordering::Greater => { - error!( - url = %&config.database, - version, - latest, - "Database version is newer than this version of the software, please update.", ); - return Err(anyhow!( - "Database version is newer than this version of the software, please update." - )); - } - Ordering::Equal => { - info!( - url = %&config.database, - version, - latest, - "Database version is up to date.", - ); - } - } + .bind(deletion_timestamp); - Ok(Self { pool }) + self.execute(query).await?; + Ok(()) } - /// Marks the identities and roots from before a given root hash as mined - /// Also marks following roots as pending - #[instrument(skip(self), level = "debug")] - pub async fn mark_root_as_processed(&self, root: &Hash) -> Result<(), Error> { - let mined_status = ProcessedStatus::Mined; - let processed_status = ProcessedStatus::Processed; - let pending_status = ProcessedStatus::Pending; - - let mut tx = self.pool.begin().await?; - - let root_id = tx.get_id_by_root(root).await?; + async fn get_recoveries(self) -> Result, Error> { + Ok( + sqlx::query_as::<_, RecoveryEntry>("SELECT * FROM recoveries") + .fetch_all(self) + .await?, + ) + } - let Some(root_id) = root_id else { - return Err(Error::MissingRoot { root: *root }); - }; + async fn find_recoveries_by_prev_commit( + self, + prev_commits: &[U256], + ) -> Result, Error> { + // TODO: upstream PgHasArrayType impl to ruint + let prev_commits = prev_commits + .iter() + .map(|c| c.to_be_bytes()) + .collect::>(); - let root_id = root_id as i64; - // TODO: Can I get rid of line `AND status <> $2 - let update_previous_roots = sqlx::query( + let res = sqlx::query_as::<_, RecoveryEntry>( r#" - UPDATE identities - SET status = $2, mined_at = CURRENT_TIMESTAMP - WHERE id <= $1 - AND status <> $2 - AND status <> $3 + SELECT * + FROM recoveries + WHERE existing_commitment = ANY($1) "#, ) - .bind(root_id) - .bind(<&str>::from(processed_status)) - .bind(<&str>::from(mined_status)); + .bind(&prev_commits) + .fetch_all(self) + .await?; - let update_next_roots = sqlx::query( + Ok(res) + } + + async fn insert_new_deletion(self, leaf_index: usize, identity: &Hash) -> Result<(), Error> { + let query = sqlx::query( r#" - UPDATE identities - SET status = $2, mined_at = NULL - WHERE id > $1 + INSERT INTO deletions (leaf_index, commitment) + VALUES ($1, $2) "#, ) - .bind(root_id) - .bind(<&str>::from(pending_status)); - - tx.execute(update_previous_roots).await?; - tx.execute(update_next_roots).await?; - - tx.commit().await?; + .bind(leaf_index as i64) + .bind(identity); + self.execute(query).await?; Ok(()) } - /// Marks the identities and roots from before a given root hash as - /// finalized - #[instrument(skip(self), level = "debug")] - pub async fn mark_root_as_mined(&self, root: &Hash) -> Result<(), Error> { - let mined_status = ProcessedStatus::Mined; + // TODO: consider using a larger value than i64 for leaf index, ruint should + // have postgres compatibility for u256 + async fn get_deletions(self) -> Result, Error> { + let query = sqlx::query( + r#" + SELECT * + FROM deletions + "#, + ); - let mut tx = self.pool.begin().await?; - tx.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;") - .await?; + let result = self.fetch_all(query).await?; - let root_id = tx.get_id_by_root(root).await?; + Ok(result + .into_iter() + .map(|row| DeletionEntry { + leaf_index: row.get::(0) as usize, + commitment: row.get::(1), + }) + .collect::>()) + } - let Some(root_id) = root_id else { - return Err(Error::MissingRoot { root: *root }); - }; + /// Remove a list of entries from the deletions table + async fn remove_deletions(self, commitments: &[Hash]) -> Result<(), Error> { + let commitments = commitments + .iter() + .map(|c| c.to_be_bytes()) + .collect::>(); - let root_id = root_id as i64; + sqlx::query("DELETE FROM deletions WHERE commitment = Any($1)") + .bind(commitments) + .execute(self) + .await?; - let update_previous_roots = sqlx::query( + Ok(()) + } + + async fn get_eligible_unprocessed_commitments( + self, + status: UnprocessedStatus, + ) -> Result, Error> { + let query = sqlx::query( r#" - UPDATE identities - SET status = $2 - WHERE id <= $1 - AND status <> $2 + SELECT * FROM unprocessed_identities + WHERE status = $1 AND CURRENT_TIMESTAMP > eligibility + LIMIT $2 "#, ) - .bind(root_id) - .bind(<&str>::from(mined_status)); - - tx.execute(update_previous_roots).await?; + .bind(<&str>::from(status)) + .bind(MAX_UNPROCESSED_FETCH_COUNT); - tx.commit().await?; + let result = self.fetch_all(query).await?; - Ok(()) + Ok(result + .into_iter() + .map(|row| types::UnprocessedCommitment { + commitment: row.get::(0), + status, + created_at: row.get::<_, _>(2), + processed_at: row.get::<_, _>(3), + error_message: row.get::<_, _>(4), + eligibility_timestamp: row.get::<_, _>(5), + }) + .collect::>()) } - pub async fn get_identity_history_entries( - &self, + async fn get_unprocessed_commit_status( + self, commitment: &Hash, - ) -> Result, Error> { - let unprocessed = sqlx::query( + ) -> Result, Error> { + let query = sqlx::query( r#" - SELECT commitment, status, eligibility - FROM unprocessed_identities - WHERE commitment = $1 - "#, + SELECT status, error_message FROM unprocessed_identities WHERE commitment = $1 + "#, ) .bind(commitment); - let rows = self.pool.fetch_all(unprocessed).await?; - let unprocessed_updates = rows - .into_iter() - .map(|row| { - let eligibility_timestamp: DateTime = row.get(2); - let held_back = Utc::now() < eligibility_timestamp; - - CommitmentHistoryEntry { - leaf_index: None, - commitment: row.get::(0), - held_back, - status: row - .get::<&str, _>(1) - .parse() - .expect("Failed to parse unprocessed status"), - } - }) - .collect::>(); + let result = self.fetch_optional(query).await?; - let leaf_index = self.get_identity_leaf_index(commitment).await?; - let Some(leaf_index) = leaf_index else { - return Ok(unprocessed_updates); + if let Some(row) = result { + return Ok(Some(( + row.get::<&str, _>(0).parse().expect("couldn't read status"), + row.get::, _>(1).unwrap_or_default(), + ))); }; + Ok(None) + } - let identity_deletions = sqlx::query( + async fn remove_unprocessed_identity(self, commitment: &Hash) -> Result<(), Error> { + let query = sqlx::query( r#" - SELECT commitment - FROM deletions - WHERE leaf_index = $1 + DELETE FROM unprocessed_identities WHERE commitment = $1 "#, ) - .bind(leaf_index.leaf_index as i64); + .bind(commitment); - let rows = self.pool.fetch_all(identity_deletions).await?; - let deletions = rows - .into_iter() - .map(|_row| CommitmentHistoryEntry { - leaf_index: Some(leaf_index.leaf_index), - commitment: Hash::ZERO, - held_back: false, - status: UnprocessedStatus::New.into(), - }) - .collect::>(); + self.execute(query).await?; - let processed_updates = sqlx::query( + Ok(()) + } + + async fn identity_exists(self, commitment: Hash) -> Result { + Ok(sqlx::query( r#" - SELECT commitment, status - FROM identities - WHERE leaf_index = $1 - ORDER BY id ASC + select + EXISTS (select commitment from unprocessed_identities where commitment = $1) OR + EXISTS (select commitment from identities where commitment = $1); "#, ) - .bind(leaf_index.leaf_index as i64); - - let rows = self.pool.fetch_all(processed_updates).await?; - let processed_updates: Vec = rows - .into_iter() - .map(|row| CommitmentHistoryEntry { - leaf_index: Some(leaf_index.leaf_index), - commitment: row.get::(0), - held_back: false, - status: row - .get::<&str, _>(1) - .parse() - .expect("Status is unreadable, database is corrupt"), - }) - .collect(); - - Ok([processed_updates, unprocessed_updates, deletions] - .concat() - .into_iter() - .collect()) - } - - // TODO: add docs - pub async fn identity_is_queued_for_deletion(&self, commitment: &Hash) -> Result { - let query_queued_deletion = - sqlx::query(r#"SELECT exists(SELECT 1 FROM deletions where commitment = $1)"#) - .bind(commitment); - let row_unprocessed = self.pool.fetch_one(query_queued_deletion).await?; - Ok(row_unprocessed.get::(0)) + .bind(commitment) + .fetch_one(self) + .await? + .get::(0)) } } From e529558e2e591709975f361509743549995d646e Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Thu, 8 Feb 2024 10:31:26 -0800 Subject: [PATCH 06/10] moved identity_is_queued_for_deletion --- src/database/mod.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 2730debf..77361ee3 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -303,15 +303,6 @@ impl Database { .into_iter() .collect()) } - - // TODO: add docs - pub async fn identity_is_queued_for_deletion(&self, commitment: &Hash) -> Result { - let query_queued_deletion = - sqlx::query(r#"SELECT exists(SELECT 1 FROM deletions where commitment = $1)"#) - .bind(commitment); - let row_unprocessed = self.pool.fetch_one(query_queued_deletion).await?; - Ok(row_unprocessed.get::(0)) - } } /// This trait provides the individual and composable queries to the database. @@ -832,6 +823,15 @@ pub trait DatabaseExt<'a>: Executor<'a, Database = Postgres> { .await? .get::(0)) } + + // TODO: add docs + async fn identity_is_queued_for_deletion(self, commitment: &Hash) -> Result { + let query_queued_deletion = + sqlx::query(r#"SELECT exists(SELECT 1 FROM deletions where commitment = $1)"#) + .bind(commitment); + let row_unprocessed = self.fetch_one(query_queued_deletion).await?; + Ok(row_unprocessed.get::(0)) + } } #[derive(Debug, Error)] From eb8ca530a219e31b70b14d599e2ebfd4056dc677 Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Tue, 13 Feb 2024 09:59:16 -0800 Subject: [PATCH 07/10] fix ci --- .github/workflows/audit.yml | 10 +++++----- .github/workflows/test.yml | 32 ++++++++++++++++---------------- supply-chain/config.toml | 4 ++-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index c252feb7..2d96a8f1 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -3,15 +3,15 @@ name: Security Audit on: push: - branches: [ main ] + branches: [main] paths: - - '**/Cargo.toml' - - '**/Cargo.lock' + - "**/Cargo.toml" + - "**/Cargo.lock" schedule: - - cron: '0 2 * * *' # run at 2 AM UTC + - cron: "0 2 * * *" # run at 2 AM UTC env: - RUST_VERSION: 1.65 + RUST_VERSION: 1.74 jobs: security-audit: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 767973ce..1a3f460c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,13 +9,13 @@ on: branches: - main pull_request: - types: [opened,synchronize,reopened] + types: [opened, synchronize, reopened] branches: - main env: - RUST_VERSION: "1.74.0-nightly" - NIGHTLY_VERSION: nightly-2023-08-29 + RUST_VERSION: "1.78.0-nightly" + NIGHTLY_VERSION: nightly-2024-02-05 CARGO_TERM_COLOR: always # Skip incremental build and debug info generation in CI CARGO_INCREMENTAL: 0 @@ -111,16 +111,16 @@ jobs: env: CARGO_VET_VERSION: 0.8.0 steps: - - uses: actions/checkout@master - - name: Install Rust - run: rustup update stable && rustup default stable - - uses: actions/cache@v3 - with: - path: ${{ runner.tool_cache }}/cargo-vet - key: cargo-vet-bin-${{ env.CARGO_VET_VERSION }} - - name: Add the tool cache directory to the search path - run: echo "${{ runner.tool_cache }}/cargo-vet/bin" >> $GITHUB_PATH - - name: Ensure that the tool cache is populated with the cargo-vet binary - run: cargo install --root ${{ runner.tool_cache }}/cargo-vet --version ${{ env.CARGO_VET_VERSION }} cargo-vet - - name: Invoke cargo-vet - run: cargo vet --locked + - uses: actions/checkout@master + - name: Install Rust + run: rustup update stable && rustup default stable + - uses: actions/cache@v3 + with: + path: ${{ runner.tool_cache }}/cargo-vet + key: cargo-vet-bin-${{ env.CARGO_VET_VERSION }} + - name: Add the tool cache directory to the search path + run: echo "${{ runner.tool_cache }}/cargo-vet/bin" >> $GITHUB_PATH + - name: Ensure that the tool cache is populated with the cargo-vet binary + run: cargo install --root ${{ runner.tool_cache }}/cargo-vet --version ${{ env.CARGO_VET_VERSION }} cargo-vet + - name: Invoke cargo-vet + run: cargo vet --locked diff --git a/supply-chain/config.toml b/supply-chain/config.toml index 9dd7bb66..b9cf3717 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -28,7 +28,7 @@ audit-as-crates-io = true [policy.cli-batteries] audit-as-crates-io = true -[policy."ethers-core:2.0.10@git:08bcb67c36d9a2869950e51ecf76124c9febe035"] +[policy."ethers-core:2.0.13@git:4d267f763a19e42a09e92741e1489c123f852f53"] audit-as-crates-io = true [[exemptions.Inflector]] @@ -596,7 +596,7 @@ version = "2.0.10" criteria = "safe-to-deploy" [[exemptions.ethers-core]] -version = "2.0.10@git:08bcb67c36d9a2869950e51ecf76124c9febe035" +version = "2.0.13@git:4d267f763a19e42a09e92741e1489c123f852f53" criteria = "safe-to-deploy" [[exemptions.ethers-etherscan]] From fdee60853690293f5bab50fb07d0413fa4e503c7 Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Thu, 8 Feb 2024 10:29:13 -0800 Subject: [PATCH 08/10] WIP --- src/app.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/app.rs b/src/app.rs index 2ef9323b..8bb86d6b 100644 --- a/src/app.rs +++ b/src/app.rs @@ -6,6 +6,7 @@ use chrono::{Duration, Utc}; use ruint::Uint; use semaphore::poseidon_tree::LazyPoseidonTree; use semaphore::protocol::verify_proof; +use sqlx::{Postgres, Transaction}; use tracing::{info, instrument, warn}; use crate::config::Config; @@ -380,7 +381,11 @@ impl App { /// Will return `Err` if identity is already queued, not in the tree, or the /// queue malfunctions. #[instrument(level = "debug", skip(self))] - pub async fn delete_identity(&self, commitment: &Hash) -> Result<(), ServerError> { + pub async fn delete_identity( + &self, + tx: &mut Transaction<'_, Postgres>, + commitment: &Hash, + ) -> Result<(), ServerError> { // Ensure that deletion provers exist if !self.identity_manager.has_deletion_provers().await { warn!( @@ -390,13 +395,12 @@ impl App { return Err(ServerError::NoProversOnIdDeletion); } - if !self.database.identity_exists(*commitment).await? { + if !tx.identity_exists(*commitment).await? { return Err(ServerError::IdentityCommitmentNotFound); } // Get the leaf index for the id commitment - let leaf_index = self - .database + let leaf_index = tx .get_identity_leaf_index(commitment) .await? .ok_or(ServerError::IdentityCommitmentNotFound)? @@ -419,8 +423,8 @@ impl App { // Check if there are any deletions, if not, set the latest deletion timestamp // to now to ensure that the new deletion is processed by the next deletion // interval - if self.database.get_deletions().await?.is_empty() { - self.database.update_latest_deletion(Utc::now()).await?; + if tx.get_deletions().await?.is_empty() { + tx.update_latest_deletion(Utc::now()).await?; } // If the id has not been deleted, insert into the deletions table From f7e67d970945b69e3d9bf036620ddb5b00b562ee Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Thu, 8 Feb 2024 11:12:34 -0800 Subject: [PATCH 09/10] transactions --- src/app.rs | 33 +++++++++++++++++++-------------- src/database/mod.rs | 9 +++++++-- src/server/error.rs | 2 ++ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/app.rs b/src/app.rs index 8bb86d6b..d4b5c298 100644 --- a/src/app.rs +++ b/src/app.rs @@ -374,14 +374,21 @@ impl App { Ok(()) } + pub async fn delete_identity(&self, commitment: &Hash) -> Result<(), ServerError> { + let mut tx = self.database.begin().await?; + self.delete_identity_tx(&mut tx, commitment).await?; + tx.commit().await?; + Ok(()) + } + /// Queues a deletion from the merkle tree. /// /// # Errors /// /// Will return `Err` if identity is already queued, not in the tree, or the /// queue malfunctions. - #[instrument(level = "debug", skip(self))] - pub async fn delete_identity( + #[instrument(level = "debug", skip(self, tx))] + pub async fn delete_identity_tx( &self, tx: &mut Transaction<'_, Postgres>, commitment: &Hash, @@ -412,11 +419,7 @@ impl App { } // Check if the id is already queued for deletion - if self - .database - .identity_is_queued_for_deletion(commitment) - .await? - { + if tx.identity_is_queued_for_deletion(commitment).await? { return Err(ServerError::IdentityQueuedForDeletion); } @@ -428,9 +431,7 @@ impl App { } // If the id has not been deleted, insert into the deletions table - self.database - .insert_new_deletion(leaf_index, commitment) - .await?; + tx.insert_new_deletion(leaf_index, commitment).await?; Ok(()) } @@ -473,17 +474,21 @@ impl App { return Err(ServerError::UnreducedCommitment); } - if self.database.identity_exists(*new_commitment).await? { + let mut tx = self.database.begin().await?; + + if tx.identity_exists(*new_commitment).await? { return Err(ServerError::DuplicateCommitment); } // Delete the existing id and insert the commitments into the recovery table - self.delete_identity(existing_commitment).await?; + self.delete_identity_tx(&mut tx, existing_commitment) + .await?; - self.database - .insert_new_recovery(existing_commitment, new_commitment) + tx.insert_new_recovery(existing_commitment, new_commitment) .await?; + tx.commit().await?; + Ok(()) } diff --git a/src/database/mod.rs b/src/database/mod.rs index 77361ee3..762eae4d 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -59,6 +59,13 @@ impl Database { // Create a connection pool let pool = PoolOptions::::new() .max_connections(config.max_connections) + .after_connect(|conn, _| { + Box::pin(async move { + conn.execute("SET DEFAULT_TRANSACTION_ISOLATION TO 'SERIALIZABLE'") + .await?; + Ok(()) + }) + }) .connect(config.database.expose()) .await .context("error connecting to database")?; @@ -188,8 +195,6 @@ impl Database { let mined_status = ProcessedStatus::Mined; let mut tx = self.pool.begin().await?; - tx.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;") - .await?; let root_id = tx.get_id_by_root(root).await?; diff --git a/src/server/error.rs b/src/server/error.rs index e7b1533e..ed27c8db 100644 --- a/src/server/error.rs +++ b/src/server/error.rs @@ -63,6 +63,8 @@ pub enum Error { NoProversOnIdInsert, #[error("Identity Manager had no provers on point of identity deletion.")] NoProversOnIdDeletion, + #[error(transparent)] + Sqlx(#[from] sqlx::Error), #[error("The tree is uninitialized. Try again in a few moments.")] TreeStateUninitialized, #[error(transparent)] From 6a5bda0affecf6fcd6e43d73ec341e2b42b25cdc Mon Sep 17 00:00:00 2001 From: Eric Woolsey Date: Tue, 13 Feb 2024 11:19:33 -0800 Subject: [PATCH 10/10] cargo vet --- supply-chain/config.toml | 586 ++++++++------ supply-chain/imports.lock | 1581 ++++++++++++++++++++++--------------- 2 files changed, 1294 insertions(+), 873 deletions(-) diff --git a/supply-chain/config.toml b/supply-chain/config.toml index 45b9b2c6..7c2d8718 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -47,8 +47,16 @@ criteria = "safe-to-deploy" version = "0.7.6" criteria = "safe-to-deploy" +[[exemptions.ahash]] +version = "0.7.7" +criteria = "safe-to-deploy" + [[exemptions.aho-corasick]] -version = "1.0.2" +version = "1.1.1" +criteria = "safe-to-deploy" + +[[exemptions.allocator-api2]] +version = "0.2.14" criteria = "safe-to-deploy" [[exemptions.alloy-rlp]] @@ -135,16 +143,12 @@ criteria = "safe-to-deploy" version = "0.4.0" criteria = "safe-to-deploy" -[[exemptions.ascii-canvas]] -version = "3.0.0" -criteria = "safe-to-deploy" - -[[exemptions.async-stream]] -version = "0.3.3" +[[exemptions.arrayvec]] +version = "0.7.4" criteria = "safe-to-deploy" -[[exemptions.async-stream-impl]] -version = "0.3.3" +[[exemptions.ascii-canvas]] +version = "3.0.0" criteria = "safe-to-deploy" [[exemptions.async_io_stream]] @@ -155,88 +159,88 @@ criteria = "safe-to-deploy" version = "2.0.0" criteria = "safe-to-deploy" +[[exemptions.atomic-write-file]] +version = "0.1.2" +criteria = "safe-to-deploy" + [[exemptions.auto_impl]] -version = "1.1.0" +version = "1.1.2" criteria = "safe-to-deploy" [[exemptions.aws-config]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-credential-types]] -version = "1.0.3" -criteria = "safe-to-deploy" - -[[exemptions.aws-http]] -version = "0.60.0" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-runtime]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-sdk-cognitoidentityprovider]] -version = "1.4.0" +version = "1.14.0" criteria = "safe-to-deploy" [[exemptions.aws-sdk-sso]] -version = "1.4.0" +version = "1.12.0" criteria = "safe-to-deploy" [[exemptions.aws-sdk-ssooidc]] -version = "1.4.0" +version = "1.12.0" criteria = "safe-to-deploy" [[exemptions.aws-sdk-sts]] -version = "1.4.0" +version = "1.12.0" criteria = "safe-to-deploy" [[exemptions.aws-sigv4]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-async]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-client]] -version = "0.60.0" +version = "0.60.3" criteria = "safe-to-deploy" [[exemptions.aws-smithy-http]] -version = "0.60.0" +version = "0.60.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-json]] -version = "0.60.0" +version = "0.60.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-query]] -version = "0.60.0" +version = "0.60.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-runtime]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-runtime-api]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-types]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.aws-smithy-xml]] -version = "0.60.0" +version = "0.60.4" criteria = "safe-to-deploy" [[exemptions.aws-types]] -version = "1.0.3" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.axum]] -version = "0.6.19" +version = "0.6.20" criteria = "safe-to-deploy" [[exemptions.axum-core]] @@ -244,7 +248,11 @@ version = "0.3.4" criteria = "safe-to-deploy" [[exemptions.axum-server]] -version = "0.4.4" +version = "0.4.7" +criteria = "safe-to-deploy" + +[[exemptions.backtrace]] +version = "0.3.67" criteria = "safe-to-deploy" [[exemptions.base16ct]] @@ -255,12 +263,16 @@ criteria = "safe-to-deploy" version = "0.13.1" criteria = "safe-to-deploy" +[[exemptions.base64]] +version = "0.21.7" +criteria = "safe-to-deploy" + [[exemptions.base64-simd]] version = "0.8.0" criteria = "safe-to-deploy" [[exemptions.base64ct]] -version = "1.5.3" +version = "1.6.0" criteria = "safe-to-deploy" [[exemptions.bech32]] @@ -275,6 +287,10 @@ criteria = "safe-to-deploy" version = "1.3.2" criteria = "safe-to-deploy" +[[exemptions.bitflags]] +version = "2.4.2" +criteria = "safe-to-deploy" + [[exemptions.bitvec]] version = "1.0.1" criteria = "safe-to-deploy" @@ -289,18 +305,18 @@ criteria = "safe-to-deploy" [[exemptions.bstr]] version = "0.2.17" -criteria = "safe-to-deploy" +criteria = "safe-to-run" [[exemptions.byte-slice-cast]] version = "1.2.2" criteria = "safe-to-deploy" [[exemptions.bytecheck]] -version = "0.6.9" +version = "0.6.12" criteria = "safe-to-deploy" [[exemptions.bytecheck_derive]] -version = "0.6.9" +version = "0.6.12" criteria = "safe-to-deploy" [[exemptions.byteorder]] @@ -316,7 +332,11 @@ version = "0.1.4" criteria = "safe-to-deploy" [[exemptions.camino]] -version = "1.1.1" +version = "1.1.6" +criteria = "safe-to-deploy" + +[[exemptions.cargo-platform]] +version = "0.1.6" criteria = "safe-to-deploy" [[exemptions.cast]] @@ -324,7 +344,7 @@ version = "0.3.0" criteria = "safe-to-deploy" [[exemptions.chrono]] -version = "0.4.26" +version = "0.4.33" criteria = "safe-to-deploy" [[exemptions.cipher]] @@ -336,11 +356,11 @@ version = "2.34.0" criteria = "safe-to-deploy" [[exemptions.clap]] -version = "4.3.14" +version = "4.4.18" criteria = "safe-to-deploy" [[exemptions.clap_derive]] -version = "4.3.12" +version = "4.4.7" criteria = "safe-to-deploy" [[exemptions.cli-batteries]] @@ -376,7 +396,7 @@ version = "0.1.6" criteria = "safe-to-deploy" [[exemptions.color-spantrace]] -version = "0.2.0" +version = "0.2.1" criteria = "safe-to-deploy" [[exemptions.combine]] @@ -392,27 +412,31 @@ version = "0.15.8" criteria = "safe-to-run" [[exemptions.const-hex]] -version = "1.9.0" +version = "1.11.0" criteria = "safe-to-deploy" [[exemptions.const-oid]] -version = "0.9.2" +version = "0.9.6" criteria = "safe-to-deploy" [[exemptions.constant_time_eq]] version = "0.1.5" criteria = "safe-to-deploy" +[[exemptions.core-foundation]] +version = "0.9.4" +criteria = "safe-to-deploy" + [[exemptions.cpufeatures]] -version = "0.2.5" +version = "0.2.12" criteria = "safe-to-deploy" [[exemptions.crc]] -version = "3.0.0" +version = "3.0.1" criteria = "safe-to-deploy" [[exemptions.crc-catalog]] -version = "2.1.0" +version = "2.4.0" criteria = "safe-to-deploy" [[exemptions.crc32fast]] @@ -432,11 +456,15 @@ version = "0.5.6" criteria = "safe-to-deploy" [[exemptions.crossbeam-deque]] -version = "0.8.2" +version = "0.8.5" criteria = "safe-to-deploy" [[exemptions.crossbeam-epoch]] -version = "0.9.13" +version = "0.9.18" +criteria = "safe-to-deploy" + +[[exemptions.crossbeam-queue]] +version = "0.3.11" criteria = "safe-to-deploy" [[exemptions.crossbeam-utils]] @@ -444,7 +472,7 @@ version = "0.8.14" criteria = "safe-to-deploy" [[exemptions.crypto-bigint]] -version = "0.5.1" +version = "0.5.5" criteria = "safe-to-deploy" [[exemptions.crypto-mac]] @@ -452,11 +480,11 @@ version = "0.8.0" criteria = "safe-to-deploy" [[exemptions.csv]] -version = "1.1.6" +version = "1.3.0" criteria = "safe-to-deploy" [[exemptions.csv-core]] -version = "0.1.10" +version = "0.1.11" criteria = "safe-to-deploy" [[exemptions.ctr]] @@ -464,27 +492,31 @@ version = "0.9.2" criteria = "safe-to-deploy" [[exemptions.darling]] -version = "0.14.2" +version = "0.20.5" criteria = "safe-to-deploy" [[exemptions.darling_core]] -version = "0.14.2" +version = "0.20.5" criteria = "safe-to-deploy" [[exemptions.darling_macro]] -version = "0.14.2" +version = "0.20.5" criteria = "safe-to-deploy" [[exemptions.dashmap]] -version = "5.4.0" +version = "5.5.3" criteria = "safe-to-deploy" [[exemptions.data-encoding]] -version = "2.4.0" +version = "2.5.0" criteria = "safe-to-deploy" [[exemptions.der]] -version = "0.7.3" +version = "0.7.8" +criteria = "safe-to-deploy" + +[[exemptions.deranged]] +version = "0.3.10" criteria = "safe-to-deploy" [[exemptions.derivative]] @@ -520,23 +552,23 @@ version = "0.3.0" criteria = "safe-to-deploy" [[exemptions.dotenvy]] -version = "0.15.6" +version = "0.15.7" criteria = "safe-to-deploy" [[exemptions.dunce]] -version = "1.0.3" +version = "1.0.4" criteria = "safe-to-deploy" [[exemptions.ecdsa]] -version = "0.16.1" +version = "0.16.9" criteria = "safe-to-deploy" [[exemptions.elliptic-curve]] -version = "0.13.5" +version = "0.13.8" criteria = "safe-to-deploy" [[exemptions.ena]] -version = "0.14.0" +version = "0.14.2" criteria = "safe-to-deploy" [[exemptions.encode_unicode]] @@ -548,7 +580,7 @@ version = "0.9.1" criteria = "safe-to-deploy" [[exemptions.enum-as-inner]] -version = "0.5.1" +version = "0.6.0" criteria = "safe-to-deploy" [[exemptions.enum-iterator]] @@ -560,17 +592,13 @@ version = "0.7.0" criteria = "safe-to-deploy" [[exemptions.enumset]] -version = "1.0.12" +version = "1.1.3" criteria = "safe-to-deploy" [[exemptions.enumset_derive]] version = "0.6.1" criteria = "safe-to-deploy" -[[exemptions.errno]] -version = "0.2.8" -criteria = "safe-to-deploy" - [[exemptions.etcetera]] version = "0.8.0" criteria = "safe-to-deploy" @@ -588,31 +616,31 @@ version = "0.13.0" criteria = "safe-to-deploy" [[exemptions.ethereum-types]] -version = "0.14.0" +version = "0.14.1" criteria = "safe-to-deploy" [[exemptions.ethers]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-addressbook]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-contract]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-contract-abigen]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-contract-derive]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-core]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-core]] @@ -620,23 +648,23 @@ version = "2.0.13@git:4d267f763a19e42a09e92741e1489c123f852f53" criteria = "safe-to-deploy" [[exemptions.ethers-etherscan]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-middleware]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-providers]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-signers]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.ethers-solc]] -version = "2.0.10" +version = "2.0.13" criteria = "safe-to-deploy" [[exemptions.event-listener]] @@ -644,7 +672,7 @@ version = "2.5.3" criteria = "safe-to-deploy" [[exemptions.eyre]] -version = "0.6.8" +version = "0.6.12" criteria = "safe-to-deploy" [[exemptions.fallible-iterator]] @@ -659,6 +687,10 @@ criteria = "safe-to-deploy" version = "0.12.1" criteria = "safe-to-deploy" +[[exemptions.finl_unicode]] +version = "1.2.0" +criteria = "safe-to-deploy" + [[exemptions.fixed-hash]] version = "0.8.0" criteria = "safe-to-deploy" @@ -668,7 +700,7 @@ version = "0.4.2" criteria = "safe-to-deploy" [[exemptions.flate2]] -version = "1.0.25" +version = "1.0.28" criteria = "safe-to-deploy" [[exemptions.flume]] @@ -684,19 +716,31 @@ version = "2.0.0" criteria = "safe-to-deploy" [[exemptions.futures]] -version = "0.3.26" +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-executor]] +version = "0.3.30" criteria = "safe-to-deploy" [[exemptions.futures-intrusive]] version = "0.5.0" criteria = "safe-to-deploy" +[[exemptions.futures-io]] +version = "0.3.30" +criteria = "safe-to-deploy" + [[exemptions.futures-locks]] version = "0.7.1" criteria = "safe-to-deploy" [[exemptions.futures-macro]] -version = "0.3.28" +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-sink]] +version = "0.3.30" criteria = "safe-to-deploy" [[exemptions.futures-task]] @@ -723,6 +767,10 @@ criteria = "safe-to-deploy" version = "0.26.2" criteria = "safe-to-deploy" +[[exemptions.gimli]] +version = "0.28.1" +criteria = "safe-to-deploy" + [[exemptions.gloo-timers]] version = "0.2.6" criteria = "safe-to-deploy" @@ -736,7 +784,7 @@ version = "1.0.1" criteria = "safe-to-deploy" [[exemptions.hashlink]] -version = "0.8.1" +version = "0.8.4" criteria = "safe-to-deploy" [[exemptions.hermit-abi]] @@ -744,7 +792,7 @@ version = "0.1.19" criteria = "safe-to-deploy" [[exemptions.hermit-abi]] -version = "0.3.1" +version = "0.3.5" criteria = "safe-to-deploy" [[exemptions.hex-literal]] @@ -756,15 +804,11 @@ version = "0.4.1" criteria = "safe-to-deploy" [[exemptions.hkdf]] -version = "0.12.3" +version = "0.12.4" criteria = "safe-to-deploy" [[exemptions.home]] -version = "0.5.5" -criteria = "safe-to-deploy" - -[[exemptions.http-body]] -version = "0.4.5" +version = "0.5.9" criteria = "safe-to-deploy" [[exemptions.humantime]] @@ -776,7 +820,7 @@ version = "1.1.1" criteria = "safe-to-deploy" [[exemptions.hyper-rustls]] -version = "0.24.1" +version = "0.24.2" criteria = "safe-to-deploy" [[exemptions.hyper-timeout]] @@ -784,11 +828,7 @@ version = "0.4.1" criteria = "safe-to-deploy" [[exemptions.iana-time-zone]] -version = "0.1.53" -criteria = "safe-to-deploy" - -[[exemptions.iana-time-zone-haiku]] -version = "0.1.1" +version = "0.1.60" criteria = "safe-to-deploy" [[exemptions.impl-codec]] @@ -819,16 +859,12 @@ criteria = "safe-to-deploy" version = "0.1.12" criteria = "safe-to-deploy" -[[exemptions.io-lifetimes]] -version = "0.7.5" -criteria = "safe-to-deploy" - -[[exemptions.io-lifetimes]] -version = "1.0.2" +[[exemptions.ipnet]] +version = "2.5.0" criteria = "safe-to-deploy" -[[exemptions.ipnet]] -version = "2.5.1" +[[exemptions.is-terminal]] +version = "0.4.10" criteria = "safe-to-deploy" [[exemptions.itertools]] @@ -839,8 +875,12 @@ criteria = "safe-to-deploy" version = "0.11.0" criteria = "safe-to-deploy" +[[exemptions.jobserver]] +version = "0.1.27" +criteria = "safe-to-deploy" + [[exemptions.js-sys]] -version = "0.3.60" +version = "0.3.68" criteria = "safe-to-deploy" [[exemptions.json5]] @@ -848,7 +888,11 @@ version = "0.4.1" criteria = "safe-to-deploy" [[exemptions.k256]] -version = "0.13.1" +version = "0.13.3" +criteria = "safe-to-deploy" + +[[exemptions.keccak]] +version = "0.1.5" criteria = "safe-to-deploy" [[exemptions.lalrpop]] @@ -868,7 +912,11 @@ version = "0.2.2" criteria = "safe-to-deploy" [[exemptions.libmimalloc-sys]] -version = "0.1.28" +version = "0.1.35" +criteria = "safe-to-deploy" + +[[exemptions.libredox]] +version = "0.0.1" criteria = "safe-to-deploy" [[exemptions.libsqlite3-sys]] @@ -880,19 +928,15 @@ version = "0.5.6" criteria = "safe-to-deploy" [[exemptions.linux-raw-sys]] -version = "0.0.46" -criteria = "safe-to-deploy" - -[[exemptions.linux-raw-sys]] -version = "0.3.1" +version = "0.1.4" criteria = "safe-to-deploy" [[exemptions.linux-raw-sys]] -version = "0.4.7" +version = "0.4.13" criteria = "safe-to-deploy" [[exemptions.lock_api]] -version = "0.4.9" +version = "0.4.11" criteria = "safe-to-deploy" [[exemptions.loupe]] @@ -911,20 +955,28 @@ criteria = "safe-to-deploy" version = "0.3.2" criteria = "safe-to-deploy" +[[exemptions.mach2]] +version = "0.4.2" +criteria = "safe-to-deploy" + [[exemptions.maplit]] version = "1.0.2" criteria = "safe-to-run" [[exemptions.matchit]] -version = "0.7.0" +version = "0.7.3" +criteria = "safe-to-deploy" + +[[exemptions.md-5]] +version = "0.10.6" criteria = "safe-to-deploy" [[exemptions.memchr]] -version = "2.5.0" +version = "2.6.3" criteria = "safe-to-deploy" [[exemptions.memmap2]] -version = "0.5.8" +version = "0.5.10" criteria = "safe-to-deploy" [[exemptions.memoffset]] @@ -932,7 +984,7 @@ version = "0.6.5" criteria = "safe-to-deploy" [[exemptions.mimalloc]] -version = "0.1.32" +version = "0.1.39" criteria = "safe-to-deploy" [[exemptions.minimal-lexical]] @@ -940,15 +992,11 @@ version = "0.2.1" criteria = "safe-to-deploy" [[exemptions.miniz_oxide]] -version = "0.5.4" -criteria = "safe-to-deploy" - -[[exemptions.miniz_oxide]] -version = "0.6.2" +version = "0.7.2" criteria = "safe-to-deploy" [[exemptions.mio]] -version = "0.8.8" +version = "0.8.10" criteria = "safe-to-deploy" [[exemptions.mmap-rs]] @@ -959,6 +1007,10 @@ criteria = "safe-to-deploy" version = "0.2.2" criteria = "safe-to-deploy" +[[exemptions.nix]] +version = "0.15.0" +criteria = "safe-to-deploy" + [[exemptions.nix]] version = "0.26.4" criteria = "safe-to-deploy" @@ -967,16 +1019,36 @@ criteria = "safe-to-deploy" version = "7.1.1" criteria = "safe-to-deploy" +[[exemptions.num]] +version = "0.4.1" +criteria = "safe-to-deploy" + [[exemptions.num-bigint-dig]] version = "0.8.4" criteria = "safe-to-deploy" +[[exemptions.num-complex]] +version = "0.4.5" +criteria = "safe-to-deploy" + +[[exemptions.num-conv]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.num_enum]] +version = "0.7.2" +criteria = "safe-to-deploy" + +[[exemptions.num_enum_derive]] +version = "0.7.2" +criteria = "safe-to-deploy" + [[exemptions.object]] version = "0.28.4" criteria = "safe-to-deploy" [[exemptions.object]] -version = "0.29.0" +version = "0.32.2" criteria = "safe-to-deploy" [[exemptions.once_cell]] @@ -996,11 +1068,11 @@ version = "0.1.1" criteria = "safe-to-deploy" [[exemptions.openssl]] -version = "0.10.55" +version = "0.10.63" criteria = "safe-to-deploy" [[exemptions.openssl-sys]] -version = "0.9.90" +version = "0.9.99" criteria = "safe-to-deploy" [[exemptions.opentelemetry]] @@ -1056,11 +1128,11 @@ version = "3.5.0" criteria = "safe-to-deploy" [[exemptions.parity-scale-codec]] -version = "3.2.1" +version = "3.6.1" criteria = "safe-to-deploy" [[exemptions.parity-scale-codec-derive]] -version = "3.1.3" +version = "3.6.5" criteria = "safe-to-deploy" [[exemptions.parking_lot]] @@ -1068,7 +1140,7 @@ version = "0.11.2" criteria = "safe-to-deploy" [[exemptions.parking_lot_core]] -version = "0.9.4" +version = "0.9.9" criteria = "safe-to-deploy" [[exemptions.password-hash]] @@ -1100,23 +1172,23 @@ version = "0.7.0" criteria = "safe-to-deploy" [[exemptions.pest]] -version = "2.7.6" +version = "2.7.7" criteria = "safe-to-deploy" [[exemptions.pest_derive]] -version = "2.7.6" +version = "2.7.7" criteria = "safe-to-deploy" [[exemptions.pest_generator]] -version = "2.7.6" +version = "2.7.7" criteria = "safe-to-deploy" [[exemptions.pest_meta]] -version = "2.7.6" +version = "2.7.7" criteria = "safe-to-deploy" [[exemptions.petgraph]] -version = "0.6.2" +version = "0.6.4" criteria = "safe-to-deploy" [[exemptions.pharos]] @@ -1140,11 +1212,11 @@ version = "0.10.0" criteria = "safe-to-deploy" [[exemptions.pin-project]] -version = "1.1.2" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.pin-project-internal]] -version = "1.1.2" +version = "1.1.4" criteria = "safe-to-deploy" [[exemptions.pkcs1]] @@ -1156,15 +1228,19 @@ version = "0.10.2" criteria = "safe-to-deploy" [[exemptions.plotters]] -version = "0.3.4" +version = "0.3.5" criteria = "safe-to-deploy" [[exemptions.plotters-backend]] -version = "0.3.4" +version = "0.3.5" criteria = "safe-to-deploy" [[exemptions.plotters-svg]] -version = "0.3.3" +version = "0.3.5" +criteria = "safe-to-deploy" + +[[exemptions.powerfmt]] +version = "0.2.0" criteria = "safe-to-deploy" [[exemptions.ppv-lite86]] @@ -1172,19 +1248,31 @@ version = "0.2.17" criteria = "safe-to-deploy" [[exemptions.primitive-types]] -version = "0.12.1" +version = "0.12.2" criteria = "safe-to-deploy" [[exemptions.proc-macro-crate]] version = "1.2.1" criteria = "safe-to-deploy" +[[exemptions.proc-macro-crate]] +version = "2.0.0" +criteria = "safe-to-deploy" + +[[exemptions.proc-macro-crate]] +version = "3.1.0" +criteria = "safe-to-deploy" + [[exemptions.proc-macro-error]] version = "1.0.4" criteria = "safe-to-deploy" +[[exemptions.proc-macro2]] +version = "1.0.78" +criteria = "safe-to-deploy" + [[exemptions.procfs]] -version = "0.14.1" +version = "0.14.2" criteria = "safe-to-deploy" [[exemptions.prometheus]] @@ -1224,7 +1312,7 @@ version = "0.8.5" criteria = "safe-to-deploy" [[exemptions.redox_syscall]] -version = "0.2.16" +version = "0.4.1" criteria = "safe-to-deploy" [[exemptions.redox_users]] @@ -1236,7 +1324,7 @@ version = "0.0.34" criteria = "safe-to-deploy" [[exemptions.regex]] -version = "1.9.1" +version = "1.10.3" criteria = "safe-to-deploy" [[exemptions.regex-automata]] @@ -1244,19 +1332,19 @@ version = "0.1.10" criteria = "safe-to-deploy" [[exemptions.regex-automata]] -version = "0.3.3" +version = "0.4.5" criteria = "safe-to-deploy" -[[exemptions.regex-syntax]] -version = "0.6.28" +[[exemptions.regex-lite]] +version = "0.1.5" criteria = "safe-to-deploy" [[exemptions.regex-syntax]] -version = "0.7.2" +version = "0.6.28" criteria = "safe-to-deploy" [[exemptions.regex-syntax]] -version = "0.7.4" +version = "0.7.2" criteria = "safe-to-deploy" [[exemptions.region]] @@ -1264,7 +1352,7 @@ version = "3.0.0" criteria = "safe-to-deploy" [[exemptions.rend]] -version = "0.3.6" +version = "0.4.2" criteria = "safe-to-deploy" [[exemptions.rfc6979]] @@ -1276,7 +1364,7 @@ version = "0.16.20" criteria = "safe-to-deploy" [[exemptions.ring]] -version = "0.17.5" +version = "0.17.7" criteria = "safe-to-deploy" [[exemptions.ripemd]] @@ -1284,11 +1372,11 @@ version = "0.1.3" criteria = "safe-to-deploy" [[exemptions.rkyv]] -version = "0.7.39" +version = "0.7.44" criteria = "safe-to-deploy" [[exemptions.rkyv_derive]] -version = "0.7.39" +version = "0.7.44" criteria = "safe-to-deploy" [[exemptions.rlp]] @@ -1300,7 +1388,7 @@ version = "0.1.0" criteria = "safe-to-deploy" [[exemptions.rmp]] -version = "0.8.11" +version = "0.8.12" criteria = "safe-to-deploy" [[exemptions.ron]] @@ -1308,7 +1396,7 @@ version = "0.7.0" criteria = "safe-to-deploy" [[exemptions.rsa]] -version = "0.9.1" +version = "0.9.6" criteria = "safe-to-deploy" [[exemptions.ruint]] @@ -1332,19 +1420,15 @@ version = "0.3.3" criteria = "safe-to-deploy" [[exemptions.rustix]] -version = "0.35.13" +version = "0.36.17" criteria = "safe-to-deploy" [[exemptions.rustix]] -version = "0.37.3" -criteria = "safe-to-deploy" - -[[exemptions.rustix]] -version = "0.38.13" +version = "0.38.31" criteria = "safe-to-deploy" [[exemptions.rustls]] -version = "0.21.8" +version = "0.21.10" criteria = "safe-to-deploy" [[exemptions.rustls-native-certs]] @@ -1352,7 +1436,7 @@ version = "0.6.3" criteria = "safe-to-deploy" [[exemptions.rustls-pemfile]] -version = "1.0.1" +version = "1.0.4" criteria = "safe-to-deploy" [[exemptions.rustls-webpki]] @@ -1368,35 +1452,39 @@ version = "1.0.6" criteria = "safe-to-deploy" [[exemptions.scale-info]] -version = "2.3.0" +version = "2.10.0" criteria = "safe-to-deploy" [[exemptions.scale-info-derive]] -version = "2.3.0" +version = "2.10.0" criteria = "safe-to-deploy" [[exemptions.schannel]] -version = "0.1.20" +version = "0.1.23" criteria = "safe-to-deploy" [[exemptions.scrypt]] version = "0.10.0" criteria = "safe-to-deploy" +[[exemptions.sct]] +version = "0.7.1" +criteria = "safe-to-deploy" + [[exemptions.seahash]] version = "4.1.0" criteria = "safe-to-deploy" [[exemptions.sec1]] -version = "0.7.1" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.security-framework]] -version = "2.7.0" +version = "2.9.2" criteria = "safe-to-deploy" [[exemptions.security-framework-sys]] -version = "2.6.1" +version = "2.9.1" criteria = "safe-to-deploy" [[exemptions.semver]] @@ -1404,7 +1492,7 @@ version = "0.11.0" criteria = "safe-to-deploy" [[exemptions.semver]] -version = "1.0.14" +version = "1.0.21" criteria = "safe-to-deploy" [[exemptions.semver-parser]] @@ -1416,23 +1504,23 @@ version = "0.4.0" criteria = "safe-to-deploy" [[exemptions.send_wrapper]] -version = "0.5.0" +version = "0.6.0" criteria = "safe-to-deploy" [[exemptions.serde_urlencoded]] version = "0.7.1" criteria = "safe-to-deploy" -[[exemptions.sha2]] -version = "0.10.8" +[[exemptions.sha1]] +version = "0.10.6" criteria = "safe-to-deploy" -[[exemptions.signal-hook-registry]] -version = "1.4.0" +[[exemptions.sha2]] +version = "0.10.8" criteria = "safe-to-deploy" -[[exemptions.signature]] -version = "2.0.0" +[[exemptions.simdutf8]] +version = "0.1.4" criteria = "safe-to-deploy" [[exemptions.similar]] @@ -1451,12 +1539,12 @@ criteria = "safe-to-deploy" version = "0.3.10" criteria = "safe-to-deploy" -[[exemptions.smallvec]] -version = "1.10.0" +[[exemptions.slab]] +version = "0.4.9" criteria = "safe-to-deploy" -[[exemptions.socket2]] -version = "0.4.9" +[[exemptions.smallvec]] +version = "1.13.1" criteria = "safe-to-deploy" [[exemptions.socket2]] @@ -1464,7 +1552,7 @@ version = "0.5.5" criteria = "safe-to-deploy" [[exemptions.solang-parser]] -version = "0.3.2" +version = "0.3.3" criteria = "safe-to-deploy" [[exemptions.spin]] @@ -1476,39 +1564,39 @@ version = "0.9.8" criteria = "safe-to-deploy" [[exemptions.spki]] -version = "0.7.1" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlformat]] -version = "0.2.0" +version = "0.2.3" criteria = "safe-to-deploy" [[exemptions.sqlx]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlx-core]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlx-macros]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlx-macros-core]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlx-mysql]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlx-postgres]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.sqlx-sqlite]] -version = "0.7.2" +version = "0.7.3" criteria = "safe-to-deploy" [[exemptions.stable_deref_trait]] @@ -1520,7 +1608,11 @@ version = "1.1.0" criteria = "safe-to-deploy" [[exemptions.string_cache]] -version = "0.8.4" +version = "0.8.7" +criteria = "safe-to-deploy" + +[[exemptions.stringprep]] +version = "0.1.4" criteria = "safe-to-deploy" [[exemptions.strsim]] @@ -1532,23 +1624,19 @@ version = "0.25.0" criteria = "safe-to-deploy" [[exemptions.strum_macros]] -version = "0.25.2" -criteria = "safe-to-deploy" - -[[exemptions.subtle]] -version = "2.4.1" +version = "0.25.3" criteria = "safe-to-deploy" [[exemptions.svm-rs]] -version = "0.3.2" +version = "0.3.5" criteria = "safe-to-deploy" [[exemptions.sync_wrapper]] -version = "0.1.1" +version = "0.1.2" criteria = "safe-to-deploy" [[exemptions.sysctl]] -version = "0.5.4" +version = "0.5.5" criteria = "safe-to-deploy" [[exemptions.system-configuration]] @@ -1560,35 +1648,31 @@ version = "0.5.0" criteria = "safe-to-deploy" [[exemptions.target-lexicon]] -version = "0.12.5" +version = "0.12.13" criteria = "safe-to-deploy" [[exemptions.tempfile]] -version = "3.8.0" +version = "3.10.0" criteria = "safe-to-deploy" [[exemptions.term]] version = "0.7.0" criteria = "safe-to-deploy" -[[exemptions.termcolor]] -version = "1.1.3" -criteria = "safe-to-deploy" - [[exemptions.terminal_size]] -version = "0.2.2" +version = "0.3.0" criteria = "safe-to-deploy" [[exemptions.test-case]] -version = "3.2.1" +version = "3.3.1" criteria = "safe-to-deploy" [[exemptions.test-case-core]] -version = "3.2.1" +version = "3.3.1" criteria = "safe-to-deploy" [[exemptions.test-case-macros]] -version = "3.2.1" +version = "3.3.1" criteria = "safe-to-deploy" [[exemptions.textwrap]] @@ -1596,7 +1680,11 @@ version = "0.11.0" criteria = "safe-to-deploy" [[exemptions.time]] -version = "0.1.44" +version = "0.3.34" +criteria = "safe-to-deploy" + +[[exemptions.time-macros]] +version = "0.2.17" criteria = "safe-to-deploy" [[exemptions.tiny-keccak]] @@ -1612,7 +1700,7 @@ version = "1.2.0" criteria = "safe-to-deploy" [[exemptions.tokio-macros]] -version = "2.1.0" +version = "2.2.0" criteria = "safe-to-deploy" [[exemptions.tokio-rustls]] @@ -1623,8 +1711,8 @@ criteria = "safe-to-deploy" version = "0.20.1" criteria = "safe-to-deploy" -[[exemptions.toml]] -version = "0.5.9" +[[exemptions.tokio-util]] +version = "0.7.10" criteria = "safe-to-deploy" [[exemptions.tonic]] @@ -1644,7 +1732,7 @@ version = "0.3.2" criteria = "safe-to-deploy" [[exemptions.tracing]] -version = "0.1.37" +version = "0.1.40" criteria = "safe-to-deploy" [[exemptions.tracing-attributes]] @@ -1671,6 +1759,14 @@ criteria = "safe-to-deploy" version = "0.2.5" criteria = "safe-to-deploy" +[[exemptions.tracing-log]] +version = "0.1.4" +criteria = "safe-to-deploy" + +[[exemptions.tracing-log]] +version = "0.2.0" +criteria = "safe-to-deploy" + [[exemptions.tracing-opentelemetry]] version = "0.19.0" criteria = "safe-to-deploy" @@ -1700,7 +1796,7 @@ version = "1.15.0" criteria = "safe-to-deploy" [[exemptions.ucd-trie]] -version = "0.1.5" +version = "0.1.6" criteria = "safe-to-deploy" [[exemptions.uint]] @@ -1711,6 +1807,10 @@ criteria = "safe-to-deploy" version = "0.1.4" criteria = "safe-to-deploy" +[[exemptions.unicase]] +version = "2.7.0" +criteria = "safe-to-deploy" + [[exemptions.unicode_categories]] version = "0.1.1" criteria = "safe-to-deploy" @@ -1720,7 +1820,7 @@ version = "0.9.0" criteria = "safe-to-deploy" [[exemptions.urlencoding]] -version = "2.1.2" +version = "2.1.3" criteria = "safe-to-deploy" [[exemptions.users]] @@ -1736,7 +1836,7 @@ version = "0.8.2" criteria = "safe-to-deploy" [[exemptions.uuid]] -version = "1.6.1" +version = "1.7.0" criteria = "safe-to-deploy" [[exemptions.vsimd]] @@ -1744,11 +1844,7 @@ version = "0.8.0" criteria = "safe-to-deploy" [[exemptions.walkdir]] -version = "2.3.2" -criteria = "safe-to-deploy" - -[[exemptions.wasi]] -version = "0.10.0+wasi-snapshot-preview1" +version = "2.4.0" criteria = "safe-to-deploy" [[exemptions.wasi]] @@ -1756,23 +1852,27 @@ version = "0.11.0+wasi-snapshot-preview1" criteria = "safe-to-deploy" [[exemptions.wasm-bindgen]] -version = "0.2.83" +version = "0.2.91" criteria = "safe-to-deploy" [[exemptions.wasm-bindgen-backend]] -version = "0.2.83" +version = "0.2.91" criteria = "safe-to-deploy" [[exemptions.wasm-bindgen-futures]] -version = "0.4.33" +version = "0.4.41" criteria = "safe-to-deploy" [[exemptions.wasm-bindgen-macro]] -version = "0.2.83" +version = "0.2.91" criteria = "safe-to-deploy" [[exemptions.wasm-bindgen-macro-support]] -version = "0.2.83" +version = "0.2.91" +criteria = "safe-to-deploy" + +[[exemptions.wasm-bindgen-shared]] +version = "0.2.91" criteria = "safe-to-deploy" [[exemptions.wasmer]] @@ -1828,7 +1928,11 @@ version = "0.83.0" criteria = "safe-to-deploy" [[exemptions.web-sys]] -version = "0.3.60" +version = "0.3.68" +criteria = "safe-to-deploy" + +[[exemptions.webpki-roots]] +version = "0.25.4" criteria = "safe-to-deploy" [[exemptions.which]] @@ -1836,7 +1940,7 @@ version = "4.3.0" criteria = "safe-to-deploy" [[exemptions.whoami]] -version = "1.2.3" +version = "1.4.1" criteria = "safe-to-deploy" [[exemptions.widestring]] @@ -1852,7 +1956,7 @@ version = "0.4.0" criteria = "safe-to-deploy" [[exemptions.winapi-util]] -version = "0.1.5" +version = "0.1.6" criteria = "safe-to-deploy" [[exemptions.winapi-x86_64-pc-windows-gnu]] @@ -1863,12 +1967,16 @@ criteria = "safe-to-deploy" version = "0.44.0" criteria = "safe-to-deploy" +[[exemptions.windows-core]] +version = "0.52.0" +criteria = "safe-to-deploy" + [[exemptions.winreg]] version = "0.50.0" criteria = "safe-to-deploy" [[exemptions.ws_stream_wasm]] -version = "0.7.3" +version = "0.7.4" criteria = "safe-to-deploy" [[exemptions.wyz]] @@ -1892,7 +2000,7 @@ version = "0.7.31" criteria = "safe-to-deploy" [[exemptions.zeroize]] -version = "1.6.0" +version = "1.7.0" criteria = "safe-to-deploy" [[exemptions.zeroize_derive]] @@ -1900,7 +2008,7 @@ version = "1.3.2" criteria = "safe-to-deploy" [[exemptions.zip]] -version = "0.6.3" +version = "0.6.6" criteria = "safe-to-deploy" [[exemptions.zstd]] @@ -1912,5 +2020,5 @@ version = "5.0.2+zstd.1.5.2" criteria = "safe-to-deploy" [[exemptions.zstd-sys]] -version = "2.0.3+zstd.1.5.2" +version = "2.0.9+zstd.1.5.5" criteria = "safe-to-deploy" diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index 731459f3..eabadcb4 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -2,54 +2,61 @@ # cargo-vet imports lock [[publisher.anstream]] -version = "0.3.2" -when = "2023-05-01" +version = "0.6.11" +when = "2024-01-18" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.anstyle]] -version = "1.0.0" -when = "2023-04-13" +version = "1.0.6" +when = "2024-02-05" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.anstyle-parse]] -version = "0.2.0" -when = "2023-04-13" +version = "0.2.3" +when = "2023-12-04" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.anstyle-query]] -version = "1.0.0" -when = "2023-04-13" +version = "1.0.2" +when = "2023-12-08" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.anstyle-wincon]] -version = "1.0.1" -when = "2023-04-24" +version = "3.0.2" +when = "2023-12-04" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.anyhow]] -version = "1.0.72" -when = "2023-07-15" +version = "1.0.79" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.async-trait]] -version = "0.1.74" -when = "2023-10-15" +version = "0.1.77" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" +[[publisher.bumpalo]] +version = "3.14.0" +when = "2023-09-14" +user-id = 696 +user-login = "fitzgen" +user-name = "Nick Fitzgerald" + [[publisher.bzip2]] version = "0.4.4" when = "2023-01-05" @@ -65,36 +72,29 @@ user-login = "alexcrichton" user-name = "Alex Crichton" [[publisher.clap_builder]] -version = "4.3.14" -when = "2023-07-17" +version = "4.4.18" +when = "2024-01-16" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.clap_lex]] -version = "0.5.0" -when = "2023-05-19" +version = "0.6.0" +when = "2023-10-24" user-id = 6743 user-login = "epage" user-name = "Ed Page" -[[publisher.core-foundation]] -version = "0.9.3" -when = "2022-02-07" +[[publisher.core-foundation-sys]] +version = "0.8.4" +when = "2023-04-03" user-id = 5946 user-login = "jrmuizel" user-name = "Jeff Muizelaar" -[[publisher.core-foundation-sys]] -version = "0.8.3" -when = "2021-10-12" -user-id = 2396 -user-login = "jdm" -user-name = "Josh Matthews" - [[publisher.corosensei]] -version = "0.1.3" -when = "2022-07-02" +version = "0.1.4" +when = "2023-08-23" user-id = 2915 user-login = "Amanieu" user-name = "Amanieu d'Antras" @@ -135,33 +135,12 @@ when = "2022-04-11" user-id = 73222 user-login = "wasmtime-publish" -[[publisher.cxx]] -version = "1.0.82" -when = "2022-11-18" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" - -[[publisher.cxx-build]] -version = "1.0.82" -when = "2022-11-18" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" - -[[publisher.cxxbridge-flags]] -version = "1.0.82" -when = "2022-11-18" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" - -[[publisher.cxxbridge-macro]] -version = "1.0.82" -when = "2022-11-18" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" +[[publisher.encoding_rs]] +version = "0.8.33" +when = "2023-08-23" +user-id = 4484 +user-login = "hsivonen" +user-name = "Henri Sivonen" [[publisher.equivalent]] version = "1.0.1" @@ -171,8 +150,8 @@ user-login = "cuviper" user-name = "Josh Stone" [[publisher.h2]] -version = "0.3.21" -when = "2023-08-21" +version = "0.3.24" +when = "2024-01-17" user-id = 359 user-login = "seanmonstar" user-name = "Sean McArthur" @@ -185,15 +164,29 @@ user-login = "Amanieu" user-name = "Amanieu d'Antras" [[publisher.hashbrown]] -version = "0.14.2" -when = "2023-10-19" +version = "0.14.3" +when = "2023-11-26" user-id = 2915 user-login = "Amanieu" user-name = "Amanieu d'Antras" [[publisher.http]] -version = "0.2.9" -when = "2023-02-17" +version = "0.2.11" +when = "2023-11-13" +user-id = 359 +user-login = "seanmonstar" +user-name = "Sean McArthur" + +[[publisher.http]] +version = "1.0.0" +when = "2023-11-15" +user-id = 359 +user-login = "seanmonstar" +user-name = "Sean McArthur" + +[[publisher.http-body]] +version = "0.4.6" +when = "2023-12-08" user-id = 359 user-login = "seanmonstar" user-name = "Sean McArthur" @@ -206,8 +199,8 @@ user-login = "seanmonstar" user-name = "Sean McArthur" [[publisher.hyper]] -version = "0.14.27" -when = "2023-06-26" +version = "0.14.28" +when = "2023-12-18" user-id = 359 user-login = "seanmonstar" user-name = "Sean McArthur" @@ -220,57 +213,36 @@ user-login = "seanmonstar" user-name = "Sean McArthur" [[publisher.indexmap]] -version = "1.9.2" -when = "2022-11-17" +version = "1.9.3" +when = "2023-03-24" user-id = 539 user-login = "cuviper" user-name = "Josh Stone" [[publisher.indexmap]] -version = "2.1.0" -when = "2023-10-31" +version = "2.2.2" +when = "2024-01-31" user-id = 539 user-login = "cuviper" user-name = "Josh Stone" [[publisher.itoa]] -version = "0.4.8" -when = "2021-08-22" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" - -[[publisher.itoa]] -version = "1.0.9" -when = "2023-07-15" +version = "1.0.10" +when = "2023-12-09" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" -[[publisher.jobserver]] -version = "0.1.25" -when = "2022-09-23" -user-id = 1 -user-login = "alexcrichton" -user-name = "Alex Crichton" - [[publisher.libc]] -version = "0.2.150" -when = "2023-11-05" +version = "0.2.153" +when = "2024-01-31" user-id = 51017 user-login = "JohnTitor" user-name = "Yuki Okushi" -[[publisher.link-cplusplus]] -version = "1.0.7" -when = "2022-08-22" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" - [[publisher.mime]] -version = "0.3.16" -when = "2020-01-07" +version = "0.3.17" +when = "2023-03-20" user-id = 359 user-login = "seanmonstar" user-name = "Sean McArthur" @@ -283,134 +255,127 @@ user-login = "seanmonstar" user-name = "Sean McArthur" [[publisher.paste]] -version = "1.0.9" -when = "2022-08-31" +version = "1.0.14" +when = "2023-07-15" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.prettyplease]] -version = "0.2.15" -when = "2023-09-07" +version = "0.2.16" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.reqwest]] -version = "0.11.22" -when = "2023-10-03" +version = "0.11.24" +when = "2024-01-31" user-id = 359 user-login = "seanmonstar" user-name = "Sean McArthur" [[publisher.ryu]] -version = "1.0.11" -when = "2022-08-03" +version = "1.0.16" +when = "2023-12-09" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.scopeguard]] -version = "1.1.0" -when = "2020-02-16" +version = "1.2.0" +when = "2023-07-17" user-id = 2915 user-login = "Amanieu" user-name = "Amanieu d'Antras" -[[publisher.scratch]] -version = "1.0.2" -when = "2022-08-03" -user-id = 3618 -user-login = "dtolnay" -user-name = "David Tolnay" - [[publisher.serde]] -version = "1.0.171" -when = "2023-07-10" +version = "1.0.196" +when = "2024-01-26" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.serde_bytes]] -version = "0.11.7" -when = "2022-08-03" +version = "0.11.14" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.serde_derive]] -version = "1.0.171" -when = "2023-07-10" +version = "1.0.196" +when = "2024-01-26" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.serde_json]] -version = "1.0.103" -when = "2023-07-15" +version = "1.0.113" +when = "2024-01-29" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.serde_path_to_error]] -version = "0.1.9" -when = "2022-12-17" +version = "0.1.15" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.serde_spanned]] -version = "0.6.4" -when = "2023-10-23" +version = "0.6.5" +when = "2023-12-19" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.syn]] -version = "1.0.107" -when = "2022-12-18" +version = "1.0.109" +when = "2023-02-24" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.syn]] -version = "2.0.32" -when = "2023-09-10" +version = "2.0.48" +when = "2024-01-04" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.thiserror]] -version = "1.0.39" -when = "2023-03-05" +version = "1.0.56" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.thiserror-impl]] -version = "1.0.39" -when = "2023-03-05" +version = "1.0.56" +when = "2024-01-02" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.tokio]] -version = "1.33.0" -when = "2023-10-09" +version = "1.36.0" +when = "2024-02-02" user-id = 6741 user-login = "Darksonn" user-name = "Alice Ryhl" [[publisher.toml]] -version = "0.7.8" -when = "2023-09-09" +version = "0.5.11" +when = "2023-01-20" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.toml]] -version = "0.8.8" -when = "2023-11-06" +version = "0.8.10" +when = "2024-02-05" user-id = 6743 user-login = "epage" user-name = "Ed Page" @@ -430,22 +395,36 @@ user-login = "epage" user-name = "Ed Page" [[publisher.toml_edit]] -version = "0.21.0" -when = "2023-11-06" +version = "0.20.7" +when = "2023-10-27" +user-id = 6743 +user-login = "epage" +user-name = "Ed Page" + +[[publisher.toml_edit]] +version = "0.21.1" +when = "2024-01-31" +user-id = 6743 +user-login = "epage" +user-name = "Ed Page" + +[[publisher.toml_edit]] +version = "0.22.4" +when = "2024-02-06" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.try-lock]] -version = "0.2.3" -when = "2020-07-10" +version = "0.2.5" +when = "2023-12-07" user-id = 359 user-login = "seanmonstar" user-name = "Sean McArthur" [[publisher.unicode-ident]] -version = "1.0.5" -when = "2022-10-08" +version = "1.0.12" +when = "2023-09-13" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" @@ -458,36 +437,43 @@ user-login = "Manishearth" user-name = "Manish Goregaokar" [[publisher.unicode-segmentation]] -version = "1.10.0" -when = "2022-09-13" +version = "1.11.0" +when = "2024-02-07" user-id = 1139 user-login = "Manishearth" user-name = "Manish Goregaokar" [[publisher.unicode-width]] -version = "0.1.10" -when = "2022-09-13" +version = "0.1.11" +when = "2023-09-19" user-id = 1139 user-login = "Manishearth" user-name = "Manish Goregaokar" -[[publisher.windows-sys]] -version = "0.33.0" -when = "2022-02-24" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" +[[publisher.wasm-encoder]] +version = "0.41.0" +when = "2024-01-29" +user-id = 1 +user-login = "alexcrichton" +user-name = "Alex Crichton" -[[publisher.windows-sys]] -version = "0.36.1" -when = "2022-04-27" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" +[[publisher.wast]] +version = "70.0.2" +when = "2024-01-29" +user-id = 1 +user-login = "alexcrichton" +user-name = "Alex Crichton" + +[[publisher.wat]] +version = "1.0.85" +when = "2024-01-29" +user-id = 1 +user-login = "alexcrichton" +user-name = "Alex Crichton" [[publisher.windows-sys]] -version = "0.42.0" -when = "2022-09-27" +version = "0.33.0" +when = "2022-02-24" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -521,8 +507,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows-targets]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -542,8 +528,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_aarch64_gnullvm]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -562,13 +548,6 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" -[[publisher.windows_aarch64_msvc]] -version = "0.36.1" -when = "2022-04-27" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - [[publisher.windows_aarch64_msvc]] version = "0.42.2" when = "2023-03-13" @@ -577,8 +556,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_aarch64_msvc]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -597,13 +576,6 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" -[[publisher.windows_i686_gnu]] -version = "0.36.1" -when = "2022-04-27" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - [[publisher.windows_i686_gnu]] version = "0.42.2" when = "2023-03-13" @@ -612,8 +584,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_i686_gnu]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -632,13 +604,6 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" -[[publisher.windows_i686_msvc]] -version = "0.36.1" -when = "2022-04-27" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - [[publisher.windows_i686_msvc]] version = "0.42.2" when = "2023-03-13" @@ -647,8 +612,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_i686_msvc]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -667,13 +632,6 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" -[[publisher.windows_x86_64_gnu]] -version = "0.36.1" -when = "2022-04-27" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - [[publisher.windows_x86_64_gnu]] version = "0.42.2" when = "2023-03-13" @@ -682,8 +640,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_x86_64_gnu]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -703,8 +661,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_x86_64_gnullvm]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -723,13 +681,6 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" -[[publisher.windows_x86_64_msvc]] -version = "0.36.1" -when = "2022-04-27" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - [[publisher.windows_x86_64_msvc]] version = "0.42.2" when = "2023-03-13" @@ -738,8 +689,8 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows_x86_64_msvc]] -version = "0.48.0" -when = "2023-03-31" +version = "0.48.5" +when = "2023-08-18" user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" @@ -752,12 +703,19 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.winnow]] -version = "0.5.19" -when = "2023-11-03" +version = "0.5.39" +when = "2024-02-06" user-id = 6743 user-login = "epage" user-name = "Ed Page" +[[audits.bytecodealliance.wildcard-audits.bumpalo]] +who = "Nick Fitzgerald " +criteria = "safe-to-deploy" +user-id = 696 # Nick Fitzgerald (fitzgen) +start = "2019-03-16" +end = "2024-03-10" + [[audits.bytecodealliance.wildcard-audits.cranelift-bforest]] who = "Bobby Holley " criteria = "safe-to-deploy" @@ -806,74 +764,94 @@ start = "2021-10-29" end = "2024-06-26" notes = "The Bytecode Alliance is the author of this crate." -[[audits.bytecodealliance.audits.adler]] +[[audits.bytecodealliance.wildcard-audits.wasm-encoder]] who = "Alex Crichton " criteria = "safe-to-deploy" -version = "1.0.2" -notes = "This is a small crate which forbids unsafe code and is a straightforward implementation of the adler hashing algorithm." - -[[audits.bytecodealliance.audits.ahash]] -who = "Chris Fallin " -criteria = "safe-to-deploy" -delta = "0.7.6 -> 0.8.2" +user-id = 1 # Alex Crichton (alexcrichton) +start = "2020-12-11" +end = "2024-04-14" +notes = """ +This is a Bytecode Alliance authored crate maintained in the `wasm-tools` +repository of which I'm one of the primary maintainers and publishers for. +I am employed by a member of the Bytecode Alliance and plan to continue doing +so and will actively maintain this crate over time. +""" -[[audits.bytecodealliance.audits.ahash]] +[[audits.bytecodealliance.wildcard-audits.wast]] who = "Alex Crichton " criteria = "safe-to-deploy" -delta = "0.8.2 -> 0.8.7" +user-id = 1 # Alex Crichton (alexcrichton) +start = "2019-10-16" +end = "2024-04-14" notes = """ -Shuffling of features in this update and while there are updates to `unsafe` -code it's no different than before and the usage remains the same. +This is a Bytecode Alliance authored crate maintained in the `wasm-tools` +repository of which I'm one of the primary maintainers and publishers for. +I am employed by a member of the Bytecode Alliance and plan to continue doing +so and will actively maintain this crate over time. """ -[[audits.bytecodealliance.audits.arrayvec]] -who = "Nick Fitzgerald " +[[audits.bytecodealliance.wildcard-audits.wat]] +who = "Alex Crichton " criteria = "safe-to-deploy" -version = "0.7.2" +user-id = 1 # Alex Crichton (alexcrichton) +start = "2019-10-18" +end = "2024-04-14" notes = """ -Well documented invariants, good assertions for those invariants in unsafe code, -and tested with MIRI to boot. LGTM. +This is a Bytecode Alliance authored crate maintained in the `wasm-tools` +repository of which I'm one of the primary maintainers and publishers for. +I am employed by a member of the Bytecode Alliance and plan to continue doing +so and will actively maintain this crate over time. """ -[[audits.bytecodealliance.audits.atty]] +[[audits.bytecodealliance.audits.addr2line]] who = "Alex Crichton " criteria = "safe-to-deploy" -version = "0.2.14" +delta = "0.17.0 -> 0.19.0" notes = """ -Contains only unsafe code for what this crate's purpose is and only accesses -the environment's terminal information when asked. Does its stated purpose and -no more. +This is a minor update for addr2line which looks to mainly update its +dependencies and refactor existing code to expose more functionality and such. """ -[[audits.bytecodealliance.audits.backtrace]] +[[audits.bytecodealliance.audits.addr2line]] who = "Alex Crichton " criteria = "safe-to-deploy" -version = "0.3.66" -notes = "I am the author of this crate." +delta = "0.19.0 -> 0.20.0" +notes = "This version brings support for split-dwarf which while it uses the filesystem is always done at the behest of the caller, so everything is as expected for this update." -[[audits.bytecodealliance.audits.base64]] -who = "Pat Hickey " +[[audits.bytecodealliance.audits.addr2line]] +who = "Alex Crichton " +criteria = "safe-to-deploy" +delta = "0.20.0 -> 0.21.0" +notes = "This version bump updated some dependencies and optimized some internals. All looks good." + +[[audits.bytecodealliance.audits.adler]] +who = "Alex Crichton " +criteria = "safe-to-deploy" +version = "1.0.2" +notes = "This is a small crate which forbids unsafe code and is a straightforward implementation of the adler hashing algorithm." + +[[audits.bytecodealliance.audits.ahash]] +who = "Chris Fallin " criteria = "safe-to-deploy" -version = "0.21.0" -notes = "This crate has no dependencies, no build.rs, and contains no unsafe code." +delta = "0.7.6 -> 0.8.2" -[[audits.bytecodealliance.audits.bitflags]] -who = "Jamey Sharp " +[[audits.bytecodealliance.audits.ahash]] +who = "Alex Crichton " criteria = "safe-to-deploy" -delta = "2.1.0 -> 2.2.1" +delta = "0.8.2 -> 0.8.7" notes = """ -This version adds unsafe impls of traits from the bytemuck crate when built -with that library enabled, but I believe the impls satisfy the documented -safety requirements for bytemuck. The other changes are minor. +Shuffling of features in this update and while there are updates to `unsafe` +code it's no different than before and the usage remains the same. """ -[[audits.bytecodealliance.audits.bitflags]] +[[audits.bytecodealliance.audits.atty]] who = "Alex Crichton " criteria = "safe-to-deploy" -delta = "2.3.2 -> 2.3.3" +version = "0.2.14" notes = """ -Nothing outside the realm of what one would expect from a bitflags generator, -all as expected. +Contains only unsafe code for what this crate's purpose is and only accesses +the environment's terminal information when asked. Does its stated purpose and +no more. """ [[audits.bytecodealliance.audits.block-buffer]] @@ -881,24 +859,18 @@ who = "Benjamin Bouvier " criteria = "safe-to-deploy" delta = "0.9.0 -> 0.10.2" -[[audits.bytecodealliance.audits.bumpalo]] -who = "Nick Fitzgerald " -criteria = "safe-to-deploy" -version = "3.11.1" -notes = "I am the author of this crate." - -[[audits.bytecodealliance.audits.cargo-platform]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -version = "0.1.2" -notes = "no build, no ambient capabilities, no unsafe" - [[audits.bytecodealliance.audits.cargo_metadata]] who = "Pat Hickey " criteria = "safe-to-deploy" version = "0.15.3" notes = "no build, no unsafe, inputs to cargo command are reasonably sanitized" +[[audits.bytecodealliance.audits.cargo_metadata]] +who = "Alex Crichton " +criteria = "safe-to-deploy" +delta = "0.17.0 -> 0.18.1" +notes = "No major changes, no unsafe code here." + [[audits.bytecodealliance.audits.cc]] who = "Alex Crichton " criteria = "safe-to-deploy" @@ -911,11 +883,14 @@ criteria = "safe-to-deploy" version = "1.0.0" notes = "I am the author of this crate." -[[audits.bytecodealliance.audits.codespan-reporting]] -who = "Jamey Sharp " +[[audits.bytecodealliance.audits.core-foundation-sys]] +who = "Dan Gohman " criteria = "safe-to-deploy" -version = "0.11.1" -notes = "This library uses `forbid(unsafe_code)` and has no filesystem or network I/O." +delta = "0.8.4 -> 0.8.6" +notes = """ +The changes here are all typical bindings updates: new functions, types, and +constants. I have not audited all the bindings for ABI conformance. +""" [[audits.bytecodealliance.audits.crypto-common]] who = "Benjamin Bouvier " @@ -939,11 +914,14 @@ criteria = "safe-to-deploy" delta = "0.3.0 -> 0.3.1" notes = "Just a dependency version bump and a bug fix for redox" -[[audits.bytecodealliance.audits.errno-dragonfly]] -who = "Jamey Sharp " +[[audits.bytecodealliance.audits.fastrand]] +who = "Alex Crichton " criteria = "safe-to-deploy" -version = "0.1.2" -notes = "This should be portable to any POSIX system and seems like it should be part of the libc crate, but at any rate it's safe as is." +delta = "2.0.0 -> 2.0.1" +notes = """ +This update had a few doc updates but no otherwise-substantial source code +updates. +""" [[audits.bytecodealliance.audits.foreign-types]] who = "Pat Hickey " @@ -968,33 +946,16 @@ criteria = "safe-to-deploy" version = "0.3.27" notes = "Unsafe used to implement a concurrency primitive AtomicWaker. Well-commented and not obviously incorrect. Like my other audits of these concurrency primitives inside the futures family, I couldn't certify that it is correct without formal methods, but that is out of scope for this vetting." -[[audits.bytecodealliance.audits.futures-executor]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -version = "0.3.27" -notes = "Unsafe used to implement the unpark mutex, which is well commented and not obviously incorrect. Like with futures-channel I wouldn't be able to certify it as correct without formal methods." - -[[audits.bytecodealliance.audits.futures-io]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -version = "0.3.27" - -[[audits.bytecodealliance.audits.futures-sink]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -version = "0.3.27" - [[audits.bytecodealliance.audits.heck]] who = "Alex Crichton " criteria = "safe-to-deploy" version = "0.4.0" notes = "Contains `forbid_unsafe` and only uses `std::fmt` from the standard library. Otherwise only contains string manipulation." -[[audits.bytecodealliance.audits.httpdate]] -who = "Pat Hickey " +[[audits.bytecodealliance.audits.iana-time-zone-haiku]] +who = "Dan Gohman " criteria = "safe-to-deploy" -version = "1.0.2" -notes = "No unsafety, no io" +version = "0.1.2" [[audits.bytecodealliance.audits.idna]] who = "Alex Crichton " @@ -1007,13 +968,31 @@ crate is broadly used throughout the ecosystem and does not contain anything suspicious. """ -[[audits.bytecodealliance.audits.is-terminal]] +[[audits.bytecodealliance.audits.io-lifetimes]] +who = "Dan Gohman " +criteria = "safe-to-deploy" +version = "1.0.3" +notes = "I am the author of this crate." + +[[audits.bytecodealliance.audits.io-lifetimes]] +who = "Pat Hickey " +criteria = "safe-to-deploy" +delta = "1.0.3 -> 1.0.5" +notes = "The Bytecode Alliance is the author of this crate." + +[[audits.bytecodealliance.audits.io-lifetimes]] who = "Dan Gohman " criteria = "safe-to-deploy" -version = "0.4.7" +delta = "1.0.5 -> 1.0.10" +notes = "I am the maintainer of this crate." + +[[audits.bytecodealliance.audits.itertools]] +who = "Nick Fitzgerald " +criteria = "safe-to-deploy" +delta = "0.10.5 -> 0.12.1" notes = """ -The is-terminal implementation code is now sync'd up with the prototype -implementation in the Rust standard library. +Minimal `unsafe` usage. Few blocks that existed looked reasonable. Does what it +says on the tin: lots of iterators. """ [[audits.bytecodealliance.audits.leb128]] @@ -1096,18 +1075,13 @@ criteria = "safe-to-deploy" version = "0.3.25" notes = "This crate shells out to the pkg-config executable, but it appears to sanitize inputs reasonably." -[[audits.bytecodealliance.audits.proc-macro2]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -delta = "1.0.51 -> 1.0.57" - -[[audits.bytecodealliance.audits.proc-macro2]] +[[audits.bytecodealliance.audits.pkg-config]] who = "Alex Crichton " criteria = "safe-to-deploy" -delta = "1.0.59 -> 1.0.63" +delta = "0.3.26 -> 0.3.29" notes = """ -This is a routine update for new nightly features and new syntax popping up on -nightly, nothing out of the ordinary. +No `unsafe` additions or anything outside of the purview of the crate in this +change. """ [[audits.bytecodealliance.audits.quote]] @@ -1121,23 +1095,16 @@ criteria = "safe-to-deploy" version = "0.1.21" notes = "I am the author of this crate." -[[audits.bytecodealliance.audits.sct]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -version = "0.7.0" -notes = "no unsafe, no build, no ambient capabilities" - [[audits.bytecodealliance.audits.sharded-slab]] who = "Pat Hickey " criteria = "safe-to-deploy" version = "0.1.4" notes = "I always really enjoy reading eliza's code, she left perfect comments at every use of unsafe." -[[audits.bytecodealliance.audits.slab]] +[[audits.bytecodealliance.audits.signal-hook-registry]] who = "Pat Hickey " criteria = "safe-to-deploy" -version = "0.4.6" -notes = "provides a datastructure implemented using std's Vec. all uses of unsafe are just delegating to the underlying unsafe Vec methods." +version = "1.4.1" [[audits.bytecodealliance.audits.thread_local]] who = "Pat Hickey " @@ -1171,35 +1138,11 @@ criteria = "safe-to-deploy" version = "0.3.1" notes = "unsafety is used for smuggling std::task::Context as a raw pointer. Lifetime and type safety appears to be taken care of correctly." -[[audits.bytecodealliance.audits.tokio-util]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -version = "0.7.4" -notes = "Alex Crichton audited the safety of src/sync/reusable_box.rs, I audited the remainder of the crate." - -[[audits.bytecodealliance.audits.tracing-log]] -who = "Alex Crichton " -criteria = "safe-to-deploy" -version = "0.1.3" -notes = """ -This is a standard adapter between the `log` ecosystem and the `tracing` -ecosystem. There's one `unsafe` block in this crate and it's well-scoped. -""" - [[audits.bytecodealliance.audits.tracing-subscriber]] who = "Pat Hickey " criteria = "safe-to-deploy" version = "0.3.17" -[[audits.bytecodealliance.audits.unicase]] -who = "Alex Crichton " -criteria = "safe-to-deploy" -version = "2.6.0" -notes = """ -This crate contains no `unsafe` code and no unnecessary use of the standard -library. -""" - [[audits.bytecodealliance.audits.unicode-bidi]] who = "Alex Crichton " criteria = "safe-to-deploy" @@ -1220,34 +1163,6 @@ who = "Pat Hickey " criteria = "safe-to-deploy" version = "0.3.0" -[[audits.bytecodealliance.audits.wasm-encoder]] -who = "Alex Crichton " -criteria = "safe-to-deploy" -version = "0.20.0" -notes = "The Bytecode Alliance is the author of this crate." - -[[audits.bytecodealliance.audits.wast]] -who = "Alex Crichton " -criteria = "safe-to-deploy" -version = "50.0.0" -notes = "The Bytecode Alliance is the author of this crate." - -[[audits.bytecodealliance.audits.wat]] -who = "Alex Crichton " -criteria = "safe-to-deploy" -version = "1.0.52" -notes = "The Bytecode Alliance is the author of this crate." - -[[audits.bytecodealliance.audits.webpki-roots]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -delta = "0.22.4 -> 0.23.0" - -[[audits.bytecodealliance.audits.webpki-roots]] -who = "Pat Hickey " -criteria = "safe-to-deploy" -delta = "0.23.0 -> 0.25.2" - [[audits.embark.audits.cargo_metadata]] who = "Johan Andersson " criteria = "safe-to-deploy" @@ -1290,46 +1205,6 @@ criteria = "safe-to-deploy" version = "8.3.0" notes = "No unsafe usage or ambient capabilities" -[[audits.embark.audits.num_enum]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -version = "0.5.11" -notes = "No unsafe usage or ambient capabilities" - -[[audits.embark.audits.num_enum]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -delta = "0.5.11 -> 0.6.1" -notes = "Minor changes" - -[[audits.embark.audits.num_enum]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -delta = "0.6.1 -> 0.7.0" - -[[audits.embark.audits.num_enum_derive]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -version = "0.5.11" -notes = "Proc macro that generates some unsafe code for conversion but looks sound, no ambient capabilities" - -[[audits.embark.audits.num_enum_derive]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -delta = "0.5.11 -> 0.6.1" -notes = "Minor changes" - -[[audits.embark.audits.num_enum_derive]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -delta = "0.6.1 -> 0.7.0" - -[[audits.embark.audits.stringprep]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -version = "0.1.2" -notes = "No unsafe usage or ambient capabilities. Old crate from released and unchanged from 2017" - [[audits.embark.audits.tap]] who = "Johan Andersson " criteria = "safe-to-deploy" @@ -1348,12 +1223,6 @@ criteria = "safe-to-deploy" version = "0.1.0" notes = "No unsafe usage or ambient capabilities, sane build script" -[[audits.embark.audits.webpki-roots]] -who = "Johan Andersson " -criteria = "safe-to-deploy" -version = "0.22.4" -notes = "Inspected it to confirm that it only contains data definitions and no runtime code" - [[audits.embark.audits.yaml-rust]] who = "Johan Andersson " criteria = "safe-to-deploy" @@ -1373,6 +1242,34 @@ invariants. """ aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" +[[audits.google.audits.async-stream]] +who = "Tyler Mandry " +criteria = "safe-to-deploy" +version = "0.3.4" +notes = "Reviewed on https://fxrev.dev/761470" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.async-stream]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.3.4 -> 0.3.5" +notes = "Reviewed on https://fxrev.dev/906795" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.async-stream-impl]] +who = "Tyler Mandry " +criteria = "safe-to-deploy" +version = "0.3.4" +notes = "Reviewed on https://fxrev.dev/761470" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.async-stream-impl]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.3.4 -> 0.3.5" +notes = "Reviewed on https://fxrev.dev/906795" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + [[audits.google.audits.fastrand]] who = "George Burgess IV " criteria = "safe-to-deploy" @@ -1389,12 +1286,17 @@ criteria = "safe-to-deploy" version = "0.3.1" aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" -[[audits.google.audits.md-5]] -who = "David Koloski " +[[audits.google.audits.httpdate]] +who = "George Burgess IV " criteria = "safe-to-deploy" -version = "0.10.5" -notes = "Reviewed on https://fxrev.dev/712372." -aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" +version = "1.0.3" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.openssl-macros]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +delta = "0.1.0 -> 0.1.1" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" [[audits.google.audits.pin-project-lite]] who = "David Koloski " @@ -1409,13 +1311,6 @@ criteria = "safe-to-deploy" version = "1.0.4" aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" -[[audits.google.audits.sha1]] -who = "David Koloski " -criteria = "safe-to-deploy" -version = "0.10.5" -notes = "Reviewed on https://fxrev.dev/712371." -aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" - [[audits.google.audits.take_mut]] who = "David Koloski " criteria = "safe-to-deploy" @@ -1430,6 +1325,13 @@ version = "0.1.11" notes = "Reviewed on https://fxrev.dev/804724" aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" +[[audits.google.audits.tokio-stream]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.1.11 -> 0.1.14" +notes = "Reviewed on https://fxrev.dev/907732." +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + [[audits.google.audits.unicode-xid]] who = "George Burgess IV " criteria = "safe-to-deploy" @@ -1442,6 +1344,11 @@ criteria = "safe-to-deploy" version = "0.9.4" aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" +[[audits.isrg.audits.aes]] +who = "Brandon Pitman " +criteria = "safe-to-deploy" +delta = "0.8.2 -> 0.8.3" + [[audits.isrg.audits.block-buffer]] who = "David Cook " criteria = "safe-to-deploy" @@ -1468,20 +1375,25 @@ criteria = "safe-to-deploy" delta = "0.2.9 -> 0.2.10" notes = "These changes include some new `unsafe` code for the `emscripten` and `psvita` targets, but all it does is call `libc::getentropy`." -[[audits.isrg.audits.hmac]] +[[audits.isrg.audits.getrandom]] +who = "Brandon Pitman " +criteria = "safe-to-deploy" +delta = "0.2.10 -> 0.2.11" + +[[audits.isrg.audits.getrandom]] who = "David Cook " criteria = "safe-to-deploy" -version = "0.12.1" +delta = "0.2.11 -> 0.2.12" -[[audits.isrg.audits.keccak]] +[[audits.isrg.audits.hmac]] who = "David Cook " criteria = "safe-to-deploy" -version = "0.1.2" +version = "0.12.1" -[[audits.isrg.audits.keccak]] -who = "Brandon Pitman " +[[audits.isrg.audits.num-bigint]] +who = "David Cook " criteria = "safe-to-deploy" -delta = "0.1.2 -> 0.1.3" +delta = "0.4.3 -> 0.4.4" [[audits.isrg.audits.num-traits]] who = "David Cook " @@ -1503,6 +1415,11 @@ who = "David Cook " criteria = "safe-to-deploy" delta = "1.17.2 -> 1.18.0" +[[audits.isrg.audits.once_cell]] +who = "Brandon Pitman " +criteria = "safe-to-deploy" +delta = "1.18.0 -> 1.19.0" + [[audits.isrg.audits.opaque-debug]] who = "David Cook " criteria = "safe-to-deploy" @@ -1523,44 +1440,58 @@ who = "Brandon Pitman " criteria = "safe-to-deploy" delta = "1.6.1 -> 1.7.0" +[[audits.isrg.audits.rayon]] +who = "David Cook " +criteria = "safe-to-deploy" +delta = "1.7.0 -> 1.8.0" + +[[audits.isrg.audits.rayon]] +who = "Ameer Ghani " +criteria = "safe-to-deploy" +delta = "1.8.0 -> 1.8.1" + [[audits.isrg.audits.rayon-core]] -who = "Brandon Pitman " +who = "Ameer Ghani " criteria = "safe-to-deploy" -delta = "1.10.2 -> 1.11.0" +version = "1.12.1" [[audits.isrg.audits.sha3]] who = "David Cook " criteria = "safe-to-deploy" version = "0.10.6" -[[audits.isrg.audits.untrusted]] -who = "David Cook " +[[audits.isrg.audits.sha3]] +who = "Brandon Pitman " criteria = "safe-to-deploy" -version = "0.7.1" +delta = "0.10.6 -> 0.10.7" + +[[audits.isrg.audits.sha3]] +who = "Brandon Pitman " +criteria = "safe-to-deploy" +delta = "0.10.7 -> 0.10.8" -[[audits.isrg.audits.wasm-bindgen-shared]] +[[audits.isrg.audits.untrusted]] who = "David Cook " criteria = "safe-to-deploy" -version = "0.2.83" +version = "0.7.1" -[[audits.mozilla.wildcard-audits.core-foundation]] +[[audits.mozilla.wildcard-audits.core-foundation-sys]] who = "Bobby Holley " criteria = "safe-to-deploy" user-id = 5946 # Jeff Muizelaar (jrmuizel) -start = "2019-03-29" +start = "2020-10-14" end = "2023-05-04" renew = false notes = "I've reviewed every source contribution that was neither authored nor reviewed by Mozilla." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.wildcard-audits.core-foundation-sys]] -who = "Bobby Holley " +[[audits.mozilla.wildcard-audits.encoding_rs]] +who = "Henri Sivonen " criteria = "safe-to-deploy" -user-id = 2396 # Josh Matthews (jdm) -start = "2019-11-12" -end = "2023-05-04" -renew = false -notes = "I've reviewed every source contribution that was neither authored nor reviewed by Mozilla." +user-id = 4484 # Henri Sivonen (hsivonen) +start = "2019-02-26" +end = "2024-08-28" +notes = "I, Henri Sivonen, wrote encoding_rs for Gecko and have reviewed contributions by others. There are two caveats to the certification: 1) The crate does things that are documented to be UB but that do not appear to actually be UB due to integer types differing from the general rule; https://github.com/hsivonen/encoding_rs/issues/79 . 2) It would be prudent to re-review the code that reinterprets buffers of integers as SIMD vectors; see https://github.com/hsivonen/encoding_rs/issues/87 ." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" [[audits.mozilla.wildcard-audits.unicode-normalization]] @@ -1636,25 +1567,6 @@ version = "0.6.3" notes = "Another crate I own via contain-rs that is ancient and in maintenance mode but otherwise perfectly fine." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.bitflags]] -who = "Alex Franchuk " -criteria = "safe-to-deploy" -delta = "1.3.2 -> 2.0.2" -notes = "Removal of some unsafe code/methods. No changes to externals, just some refactoring (mostly internal)." -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.bitflags]] -who = "Nicolas Silva " -criteria = "safe-to-deploy" -delta = "2.0.2 -> 2.1.0" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.bitflags]] -who = "Teodor Tanasoaia " -criteria = "safe-to-deploy" -delta = "2.2.1 -> 2.3.2" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - [[audits.mozilla.audits.block-buffer]] who = "Mike Hommey " criteria = "safe-to-deploy" @@ -1673,11 +1585,24 @@ criteria = "safe-to-deploy" delta = "1.0.78 -> 1.0.83" aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" -[[audits.mozilla.audits.crossbeam-queue]] -who = "Matthew Gregan " +[[audits.mozilla.audits.crossbeam-channel]] +who = "Jan-Erik Rediger " criteria = "safe-to-deploy" -version = "0.3.8" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +delta = "0.5.7 -> 0.5.8" +notes = "Reviewed the fix, previous versions indeed had were able to trigger a race condition" +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" + +[[audits.mozilla.audits.crossbeam-channel]] +who = "Jan-Erik Rediger " +criteria = "safe-to-deploy" +delta = "0.5.8 -> 0.5.11" +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" + +[[audits.mozilla.audits.crossbeam-utils]] +who = "Jan-Erik Rediger " +criteria = "safe-to-deploy" +delta = "0.8.14 -> 0.8.19" +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" [[audits.mozilla.audits.crypto-common]] who = "Mike Hommey " @@ -1703,63 +1628,56 @@ criteria = "safe-to-deploy" delta = "1.7.0 -> 1.8.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.encoding_rs]] -who = "Henri Sivonen " -criteria = "safe-to-deploy" -version = "0.8.31" -notes = "I, Henri Sivonen, wrote encoding_rs for Gecko and have reviewed contributions by others. There are two caveats to the certification: 1) The crate does things that are documented to be UB but that do not appear to actually be UB due to integer types differing from the general rule; https://github.com/hsivonen/encoding_rs/issues/79 . 2) It would be prudent to re-review the code that reinterprets buffers of integers as SIMD vectors; see https://github.com/hsivonen/encoding_rs/issues/87 ." -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.fnv]] -who = "Bobby Holley " +[[audits.mozilla.audits.either]] +who = "Mike Hommey " criteria = "safe-to-deploy" -version = "1.0.7" -notes = "Simple hasher implementation with no unsafe code." +delta = "1.8.0 -> 1.8.1" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.form_urlencoded]] -who = "Valentin Gosu " +[[audits.mozilla.audits.enumset_derive]] +who = "Mike Hommey " criteria = "safe-to-deploy" -version = "1.2.0" +delta = "0.6.1 -> 0.8.1" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-channel]] +[[audits.mozilla.audits.errno]] who = "Mike Hommey " criteria = "safe-to-deploy" -delta = "0.3.27 -> 0.3.28" +delta = "0.3.1 -> 0.3.3" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-core]] +[[audits.mozilla.audits.fastrand]] who = "Mike Hommey " criteria = "safe-to-deploy" -delta = "0.3.27 -> 0.3.28" +delta = "1.9.0 -> 2.0.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-executor]] -who = "Mike Hommey " +[[audits.mozilla.audits.fnv]] +who = "Bobby Holley " criteria = "safe-to-deploy" -delta = "0.3.23 -> 0.3.25" +version = "1.0.7" +notes = "Simple hasher implementation with no unsafe code." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-executor]] -who = "Mike Hommey " +[[audits.mozilla.audits.form_urlencoded]] +who = "Valentin Gosu " criteria = "safe-to-deploy" -delta = "0.3.25 -> 0.3.26" +version = "1.2.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-executor]] -who = "Bobby Holley " +[[audits.mozilla.audits.form_urlencoded]] +who = "Valentin Gosu " criteria = "safe-to-deploy" -delta = "0.3.27 -> 0.3.23" +delta = "1.2.0 -> 1.2.1" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-io]] +[[audits.mozilla.audits.futures-channel]] who = "Mike Hommey " criteria = "safe-to-deploy" delta = "0.3.27 -> 0.3.28" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.futures-sink]] +[[audits.mozilla.audits.futures-core]] who = "Mike Hommey " criteria = "safe-to-deploy" delta = "0.3.27 -> 0.3.28" @@ -1808,6 +1726,12 @@ criteria = "safe-to-deploy" version = "0.4.3" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +[[audits.mozilla.audits.idna]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +delta = "0.4.0 -> 0.5.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + [[audits.mozilla.audits.lazy_static]] who = "Nika Layzell " criteria = "safe-to-deploy" @@ -1821,17 +1745,31 @@ criteria = "safe-to-deploy" delta = "0.25.2 -> 0.26.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +[[audits.mozilla.audits.libsqlite3-sys]] +who = "Mark Hammond " +criteria = "safe-to-deploy" +delta = "0.26.0 -> 0.27.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + [[audits.mozilla.audits.log]] who = "Mike Hommey " criteria = "safe-to-deploy" version = "0.4.17" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.mach2]] -who = "Gabriele Svelto " +[[audits.mozilla.audits.log]] +who = "Jan-Erik Rediger " criteria = "safe-to-deploy" -version = "0.4.1" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +delta = "0.4.17 -> 0.4.18" +notes = "One dependency removed, others updated (which we don't rely on), some APIs (which we don't use) changed." +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" + +[[audits.mozilla.audits.log]] +who = "Kagami Sascha Rosylight " +criteria = "safe-to-deploy" +delta = "0.4.18 -> 0.4.20" +notes = "Only cfg attribute and internal macro changes and module refactorings" +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" [[audits.mozilla.audits.memoffset]] who = "Gabriele Svelto " @@ -1846,24 +1784,41 @@ version = "1.0.4" notes = "This is a trivial crate." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.num]] -who = "Josh Stone " +[[audits.mozilla.audits.nix]] +who = "Gabriele Svelto " criteria = "safe-to-deploy" -version = "0.4.0" -notes = "All code written or reviewed by Josh Stone." +delta = "0.15.0 -> 0.25.0" +notes = "Plenty of new bindings but also several important bug fixes (including buffer overflows). New unsafe sections are restricted to wrappers and are no more dangerous than calling the C functions." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.num-bigint]] -who = "Josh Stone " +[[audits.mozilla.audits.nix]] +who = "Mike Hommey " criteria = "safe-to-deploy" -version = "0.4.3" -notes = "All code written or reviewed by Josh Stone." +delta = "0.25.0 -> 0.25.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.nix]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.25.1 -> 0.26.2" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.nix]] +who = "Gabriele Svelto " +criteria = "safe-to-deploy" +delta = "0.26.2 -> 0.27.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.nom]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "7.1.1 -> 7.1.3" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.num-complex]] +[[audits.mozilla.audits.num-bigint]] who = "Josh Stone " criteria = "safe-to-deploy" -version = "0.4.2" +version = "0.4.3" notes = "All code written or reviewed by Josh Stone." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" @@ -1901,6 +1856,12 @@ criteria = "safe-to-deploy" delta = "2.2.0 -> 2.3.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +[[audits.mozilla.audits.percent-encoding]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +delta = "2.3.0 -> 2.3.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + [[audits.mozilla.audits.phf]] who = "Mike Hommey " criteria = "safe-to-deploy" @@ -1938,72 +1899,10 @@ version = "0.1.1" notes = "This is a trivial crate." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.proc-macro2]] +[[audits.mozilla.audits.quote]] who = "Nika Layzell " criteria = "safe-to-deploy" -version = "1.0.39" -notes = """ -`proc-macro2` acts as either a thin(-ish) wrapper around the std-provided -`proc_macro` crate, or as a fallback implementation of the crate, depending on -where it is used. - -If using this crate on older versions of rustc (1.56 and earlier), it will -temporarily replace the panic handler while initializing in order to detect if -it is running within a `proc_macro`, which could lead to surprising behaviour. -This should not be an issue for more recent compiler versions, which support -`proc_macro::is_available()`. - -The `proc-macro2` crate's fallback behaviour is not identical to the complex -behaviour of the rustc compiler (e.g. it does not perform unicode normalization -for identifiers), however it behaves well enough for its intended use-case -(tests and scripts processing rust code). - -`proc-macro2` does not use unsafe code, however exposes one `unsafe` API to -allow bypassing checks in the fallback implementation when constructing -`Literal` using `from_str_unchecked`. This was intended to only be used by the -`quote!` macro, however it has been removed -(https://github.com/dtolnay/quote/commit/f621fe64a8a501cae8e95ebd6848e637bbc79078), -and is likely completely unused. Even when used, this API shouldn't be able to -cause unsoundness. -""" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.proc-macro2]] -who = "Mike Hommey " -criteria = "safe-to-deploy" -delta = "1.0.39 -> 1.0.43" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.proc-macro2]] -who = "Mike Hommey " -criteria = "safe-to-deploy" -delta = "1.0.43 -> 1.0.49" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.proc-macro2]] -who = "Mike Hommey " -criteria = "safe-to-deploy" -delta = "1.0.49 -> 1.0.51" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.proc-macro2]] -who = "Jan-Erik Rediger " -criteria = "safe-to-deploy" -delta = "1.0.57 -> 1.0.59" -notes = "Enabled on Wasm" -aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" - -[[audits.mozilla.audits.proc-macro2]] -who = "Jan-Erik Rediger " -criteria = "safe-to-deploy" -delta = "1.0.63 -> 1.0.66" -notes = "Removed special support for some really old Rust versions" -aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" - -[[audits.mozilla.audits.quote]] -who = "Nika Layzell " -criteria = "safe-to-deploy" -version = "1.0.18" +version = "1.0.18" notes = """ `quote` is a utility crate used by proc-macros to generate TokenStreams conveniently from source code. The bulk of the logic is some complex @@ -2061,31 +1960,6 @@ criteria = "safe-to-deploy" delta = "1.5.3 -> 1.6.1" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.rayon-core]] -who = "Josh Stone " -criteria = "safe-to-deploy" -version = "1.9.3" -notes = "All code written or reviewed by Josh Stone or Niko Matsakis." -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.rayon-core]] -who = "Mike Hommey " -criteria = "safe-to-deploy" -delta = "1.9.3 -> 1.10.1" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.rayon-core]] -who = "Mike Hommey " -criteria = "safe-to-deploy" -delta = "1.10.1 -> 1.10.2" -aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" - -[[audits.mozilla.audits.redox_syscall]] -who = "Jan-Erik Rediger " -criteria = "safe-to-deploy" -delta = "0.2.16 -> 0.3.5" -aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" - [[audits.mozilla.audits.ron]] who = "Mike Hommey " criteria = "safe-to-deploy" @@ -2111,6 +1985,13 @@ a security vulnerability. """ aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +[[audits.mozilla.audits.rustversion]] +who = "Jan-Erik Rediger " +criteria = "safe-to-deploy" +delta = "1.0.9 -> 1.0.14" +notes = "Doc updates, minimal CI changes and a fix to build-script reruns" +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" + [[audits.mozilla.audits.serde_cbor]] who = "R. Martinho Fernandes " criteria = "safe-to-deploy" @@ -2123,51 +2004,48 @@ criteria = "safe-to-deploy" delta = "0.11.1 -> 0.11.2" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.slab]] -who = "Mike Hommey " +[[audits.mozilla.audits.subtle]] +who = "Simon Friedberger " criteria = "safe-to-deploy" -delta = "0.4.6 -> 0.4.7" +version = "2.5.0" +notes = "The goal is to provide some constant-time correctness for cryptographic implementations. The approach is reasonable, it is known to be insufficient but this is pointed out in the documentation." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.synstructure]] -who = "Nika Layzell " +[[audits.mozilla.audits.time-core]] +who = "Kershaw Chang " criteria = "safe-to-deploy" -version = "0.12.6" -notes = """ -I am the primary author of the `synstructure` crate, and its current -maintainer. The one use of `unsafe` is unnecessary, but documented and -harmless. It will be removed in the next version. -""" +version = "0.1.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.time]] -who = "Mike Hommey " +[[audits.mozilla.audits.time-core]] +who = "Kershaw Chang " criteria = "safe-to-deploy" -delta = "0.1.44 -> 0.1.45" +delta = "0.1.0 -> 0.1.1" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.time]] -who = "Kershaw Chang " +[[audits.mozilla.audits.typenum]] +who = "Mike Hommey " criteria = "safe-to-deploy" -delta = "0.1.45 -> 0.3.17" +delta = "1.15.0 -> 1.16.0" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.time-core]] -who = "Kershaw Chang " +[[audits.mozilla.audits.unicode-bidi]] +who = "Makoto Kato " criteria = "safe-to-deploy" -version = "0.1.0" +delta = "0.3.8 -> 0.3.13" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" -[[audits.mozilla.audits.time-macros]] -who = "Kershaw Chang " +[[audits.mozilla.audits.unicode-bidi]] +who = "Jonathan Kew " criteria = "safe-to-deploy" -version = "0.2.6" +delta = "0.3.13 -> 0.3.14" +notes = "I am the author of the bulk of the upstream changes in this version, and also checked the remaining post-0.3.13 changes." aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" [[audits.mozilla.audits.unicode-bidi]] -who = "Makoto Kato " +who = "Jonathan Kew " criteria = "safe-to-deploy" -delta = "0.3.8 -> 0.3.13" +delta = "0.3.14 -> 0.3.15" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" [[audits.mozilla.audits.url]] @@ -2182,16 +2060,89 @@ criteria = "safe-to-deploy" delta = "2.4.0 -> 2.4.1" aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" +[[audits.mozilla.audits.url]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +delta = "2.4.1 -> 2.5.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.zcash.audits.aho-corasick]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.1.1 -> 1.1.2" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.allocator-api2]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.2.14 -> 0.2.15" +notes = """ +- Some existing `unsafe` code is moved without being altered. +- The new `SliceExt` extension trait uses `unsafe` methods `Vec::set_len` and + `core::ptr::copy_nonoverlapping` to initialize a `Vec` efficiently. The safety + requirements appear to be satisfied. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.allocator-api2]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.2.15 -> 0.2.16" +notes = "Change to `unsafe` block is to fix the `Drop` impl of `Box` to drop its value." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.backtrace]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.67 -> 0.3.69" +notes = """ +Changes to `unsafe` blocks: +- New call to `GetCurrentProcessId` on Windows, to help generate a process-unique name to + use inside an existing `CreateMutexA` call. +- Uses `libc::mmap64` on Linux instead of `libc::mmap`. +- Alters `Stash` to allow caching more than one `Mmap`; the existing `unsafe` safety + condition continues to be applicable. + +There are also several more places where DWARF data is mmapped from a filesystem path and +then loaded. These appear to all derive from existing paths that themselves were already +being mmapped and loaded. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.bech32]] who = "Jack Grigg " criteria = "safe-to-deploy" delta = "0.8.1 -> 0.9.1" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" -[[audits.zcash.audits.bitflags]] +[[audits.zcash.audits.block-buffer]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.10.3 -> 0.10.4" +notes = "Adds panics to prevent a block size of zero from causing unsoundness." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.byteorder]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.4.3 -> 1.5.0" +notes = """ +- Adds two assertions to check the safety of `slice::from_raw_parts_mut` calls. +- Replaces a bunch of `unsafe` blocks containing `copy_nonoverlapping` calls + with safe `<&mut [u8]>::copy_from_slice` calls. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.bytes]] who = "Jack Grigg " criteria = "safe-to-deploy" -delta = "2.3.3 -> 2.4.0" +delta = "1.4.0 -> 1.5.0" +notes = """ +- Introduces new `unsafe` blocks inside new `UninitSlice` constructors, but these replace + existing equivalent `unsafe` blocks that were directly constructing `UninitSlice`. +- Adds `unsafe impl BufMut for &mut [core::mem::MaybeUninit]`, which is implemented + almost identically to the existing `unsafe impl BufMut for &mut [u8]`. +""" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" [[audits.zcash.audits.cipher]] @@ -2201,10 +2152,40 @@ delta = "0.3.0 -> 0.4.3" notes = "Significant rework of (mainly RustCrypto-internal) APIs." aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" -[[audits.zcash.audits.fastrand]] +[[audits.zcash.audits.cipher]] who = "Jack Grigg " criteria = "safe-to-deploy" -delta = "1.9.0 -> 2.0.0" +delta = "0.4.3 -> 0.4.4" +notes = "Adds panics to prevent a block size of zero from causing unsoundness." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.crossbeam-channel]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.5.6 -> 0.5.7" +notes = "Fixes wrapping overflows for large timeouts." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.deranged]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.10 -> 0.3.11" +notes = """ +Two new `unsafe` blocks to construct ranges via `T::new_unchecked`. The safety +comments correctly document why the checks are unnecessary. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.either]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.8.1 -> 1.9.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.errno]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.3 -> 0.3.8" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" [[audits.zcash.audits.ff]] @@ -2213,6 +2194,70 @@ criteria = "safe-to-deploy" delta = "0.12.1 -> 0.13.0" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.futures-channel]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.28 -> 0.3.29" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-channel]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.29 -> 0.3.30" +notes = "Removes `build.rs` now that it can rely on the `target_has_atomic` attribute." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-core]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.28 -> 0.3.29" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-core]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.29 -> 0.3.30" +notes = "Removes `build.rs` now that it can rely on the `target_has_atomic` attribute." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-task]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.28 -> 0.3.29" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-task]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.29 -> 0.3.30" +notes = "Removes `build.rs` now that it can rely on the `target_has_atomic` attribute." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-util]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.28 -> 0.3.29" +notes = """ +Only change to `unsafe` code is to add a `Fut: Send` bound to the +`unsafe impl Sync for FuturesUnordered`. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.futures-util]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.29 -> 0.3.30" +notes = """ +- Removes `build.rs` now that it can rely on the `target_has_atomic` attribute. +- Almost all changes to `unsafe` blocks are to either move them around, or + replace them with safe method calls. +- One new `unsafe` block is added for a slice lifetime transmutation. The slice + reconstruction is obviously correct. AFAICT the lifetime transmutation is also + correct; the slice's lifetime logically comes from the `AsyncBufRead` reader + inside `FillBuf`, rather than the `Context`. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.group]] who = "Sean Bowe " criteria = "safe-to-deploy" @@ -2226,6 +2271,36 @@ version = "0.1.3" notes = "Reviewed in full." aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.io-lifetimes]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.0.10 -> 1.0.11" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.ipnet]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.5.0 -> 2.7.1" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.ipnet]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +delta = "2.7.1 -> 2.7.2" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.ipnet]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.7.2 -> 2.8.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.ipnet]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.8.0 -> 2.9.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.libm]] who = "Jack Grigg " criteria = "safe-to-deploy" @@ -2233,6 +2308,41 @@ delta = "0.2.7 -> 0.2.8" notes = "Forces some intermediate values to not have too much precision on the x87 FPU." aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.memchr]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.6.3 -> 2.6.4" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.memchr]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.6.4 -> 2.7.1" +notes = """ +Change to an `unsafe fn` is to rework the short-tail handling of a fixed-length +comparison between `u8` pointers. The new tail code matches the existing head +code (but adapted to `u16` and `u8` reads, instead of `u32`). +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.parity-scale-codec]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "3.6.1 -> 3.6.5" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.parity-scale-codec]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "3.6.5 -> 3.6.9" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.parity-scale-codec-derive]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "3.6.5 -> 3.6.9" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.parking_lot]] who = "Jack Grigg " criteria = "safe-to-deploy" @@ -2246,6 +2356,20 @@ criteria = "safe-to-deploy" delta = "0.2.9 -> 0.2.13" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.proc-macro-crate]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.2.1 -> 1.3.0" +notes = "Migrates from `toml` to `toml_edit`." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.proc-macro-crate]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.3.0 -> 1.3.1" +notes = "Bumps MSRV to 1.60." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.proptest]] who = "Jack Grigg " criteria = "safe-to-deploy" @@ -2257,12 +2381,37 @@ API would be used intentionally by downstream tests). """ aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.quote]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.0.31 -> 1.0.33" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.quote]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.0.33 -> 1.0.35" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.rand_xorshift]] who = "Sean Bowe " criteria = "safe-to-deploy" version = "0.3.0" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.redox_users]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.4.3 -> 0.4.4" +notes = "Switches from `redox_syscall` crate to `libredox` crate for syscalls." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.regex-syntax]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +delta = "0.6.28 -> 0.6.29" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.regex-syntax]] who = "Jack Grigg " criteria = "safe-to-deploy" @@ -2275,6 +2424,18 @@ criteria = "safe-to-deploy" delta = "0.7.5 -> 0.8.2" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.rustc-demangle]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +delta = "0.1.21 -> 0.1.22" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.rustc-demangle]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.22 -> 0.1.23" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.rustc_version]] who = "Jack Grigg " criteria = "safe-to-deploy" @@ -2290,6 +2451,139 @@ be set correctly by `cargo`. """ aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" +[[audits.zcash.audits.sharded-slab]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.4 -> 0.1.7" +notes = "Only change to an `unsafe` block is to fix a clippy lint." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.signature]] +who = "Daira Emma Hopwood " +criteria = "safe-to-deploy" +version = "2.1.0" +notes = """ +This crate uses `#![forbid(unsafe_code)]`, has no build script, and only provides traits with some trivial default implementations. +I did not review whether implementing these APIs would present any undocumented cryptographic hazards. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.signature]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.1.0 -> 2.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.siphasher]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.10 -> 0.3.11" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.thread_local]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.1.4 -> 1.1.7" +notes = """ +New `unsafe` usage: +- An extra `deallocate_bucket`, to replace a `Mutex::lock` with a `compare_exchange`. +- Setting and getting a `#[thread_local] static mut Option` on nightly. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.time-core]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.1 -> 0.1.2" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tinyvec_macros]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.0 -> 0.1.1" +notes = "Adds `#![forbid(unsafe_code)]` and license files." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tracing-attributes]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.23 -> 0.1.25" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tracing-attributes]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.25 -> 0.1.26" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tracing-attributes]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.26 -> 0.1.27" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tracing-core]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.30 -> 0.1.31" +notes = """ +The only new `unsafe` block is to intentionally leak a scoped subscriber onto +the heap when setting it as the global default dispatcher. I checked that the +global default can only be set once and is never dropped. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tracing-core]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.31 -> 0.1.32" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tracing-subscriber]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.17 -> 0.3.18" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.typenum]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.16.0 -> 1.17.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.uint]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.9.4 -> 0.9.5" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.want]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.0 -> 0.3.1" +notes = """ +Migrates to `try-lock 0.2.4` to replace some unsafe APIs that were not marked +`unsafe` (but that were being used safely). +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.which]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "4.3.0 -> 4.4.0" +notes = "New APIs are remixes of existing code." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.which]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "4.4.0 -> 4.4.2" +notes = """ +Crate now has `#![forbid(unsafe_code)]`, replacing its last `unsafe` block with a +dependency on the `rustix` crate. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + [[audits.zcash.audits.zerocopy]] who = "Jack Grigg " criteria = "safe-to-deploy" @@ -2301,3 +2595,22 @@ who = "Jack Grigg " criteria = "safe-to-deploy" delta = "0.7.31 -> 0.7.32" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.zeroize_derive]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.3.2 -> 1.3.3" +notes = "Removes `T: Drop` bound from `impl Drop for SomeType`. I agree it was unnecessary." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.zeroize_derive]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +delta = "1.3.3 -> 1.4.1" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.zeroize_derive]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.4.1 -> 1.4.2" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml"