From 7fac5d989ef472c1caa906a480cad589f3d2ac4c Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Feb 2025 14:26:50 +0100 Subject: [PATCH 01/18] deps: update pkarr to v3 --- Cargo.lock | 131 +++++++------ iroh-dns-server/Cargo.toml | 4 +- iroh-dns-server/src/lib.rs | 29 ++- iroh-dns-server/src/store.rs | 15 +- iroh-dns-server/src/store/signed_packets.rs | 25 ++- iroh-relay/Cargo.toml | 2 +- iroh-relay/src/dns/node_info.rs | 40 ++-- iroh/Cargo.toml | 6 +- iroh/src/discovery/pkarr/dht.rs | 194 ++++++-------------- 9 files changed, 185 insertions(+), 261 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9893eaf362..476c5984f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -179,6 +179,19 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "async-compat" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bab94bde396a3f7b4962e396fdad640e241ed797d4d8d77fc8c237d14c58fc0" +dependencies = [ + "futures-core", + "futures-io", + "once_cell", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-recursion" version = "1.1.1" @@ -359,6 +372,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base32" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022dfe9eb35f19ebbcb51e0b40a5ab759f46ad60cadf7297e0bd085afb50e076" + [[package]] name = "base64" version = "0.22.1" @@ -436,9 +455,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "cast" @@ -1021,9 +1040,9 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" [[package]] name = "ed25519" @@ -1164,7 +1183,6 @@ checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "futures-core", "futures-sink", - "nanorand", "spin", ] @@ -1376,8 +1394,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.13.3+wasi-0.2.2", + "wasm-bindgen", "windows-targets 0.52.6", ] @@ -2067,6 +2087,7 @@ dependencies = [ "iroh-quinn-proto", "iroh-quinn-udp", "iroh-relay", + "mainline", "n0-future", "netdev", "netwatch", @@ -2163,7 +2184,8 @@ dependencies = [ "humantime-serde", "iroh", "iroh-metrics", - "lru", + "lru 0.12.5", + "mainline", "n0-future", "pkarr", "rand 0.8.5", @@ -2321,7 +2343,7 @@ dependencies = [ "iroh-metrics", "iroh-quinn", "iroh-quinn-proto", - "lru", + "lru 0.12.5", "n0-future", "num_enum", "pin-project", @@ -2521,23 +2543,31 @@ dependencies = [ "hashbrown 0.15.2", ] +[[package]] +name = "lru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" + [[package]] name = "mainline" -version = "2.0.1" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b751ffb57303217bcae8f490eee6044a5b40eadf6ca05ff476cad37e7b7970d" +checksum = "ed4c696a31f9ac71d7a1c7e10945cc041758b9b6a716ea48c18f2372e067e9db" dependencies = [ - "bytes", "crc", + "document-features", + "dyn-clone", "ed25519-dalek", "flume", - "lru", - "rand 0.8.5", + "futures-lite", + "lru 0.13.0", + "rand 0.9.0", "serde", "serde_bencode", "serde_bytes", "sha1_smol", - "thiserror 1.0.69", + "thiserror 2.0.11", "tracing", ] @@ -2646,15 +2676,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.15", -] - [[package]] name = "netdev" version = "0.31.0" @@ -2940,9 +2961,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "oorandom" @@ -3104,29 +3125,35 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "2.3.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92eff194c72f00f3076855b413ad2d940e3a6e307fa697e5c7733e738341aed4" +checksum = "519d78e59fc7884d0009a1e405ab04661c087cbb98ba984e0c010884a36efc0c" dependencies = [ + "async-compat", + "base32", "bytes", + "cfg_aliases", "document-features", "dyn-clone", "ed25519-dalek", - "flume", - "futures", - "js-sys", - "lru", + "futures-buffered", + "futures-lite", + "getrandom 0.3.1", + "log", + "lru 0.13.0", "mainline", - "rand 0.8.5", + "pubky-timestamp", + "rand 0.9.0", + "reqwest", "self_cell", + "serde", + "sha1_smol", "simple-dns", "thiserror 2.0.11", + "tokio", "tracing", - "ureq", - "wasm-bindgen", + "url", "wasm-bindgen-futures", - "web-sys", - "z32", ] [[package]] @@ -3410,6 +3437,21 @@ dependencies = [ "unarray", ] +[[package]] +name = "pubky-timestamp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab61f82c6343aecd77364c3c1c4e9e8288adfb11d2775640395344b8078aa315" +dependencies = [ + "base32", + "document-features", + "getrandom 0.3.1", + "httpdate", + "js-sys", + "once_cell", + "serde", +] + [[package]] name = "quanta" version = "0.12.5" @@ -4245,9 +4287,9 @@ dependencies = [ [[package]] name = "simple-dns" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84330be8d9f218c15b4583c74d809643fb82bdcbbd48302a36469ea5b63a1d69" +checksum = "dee851d0e5e7af3721faea1843e8015e820a234f81fda3dea9247e15bac9a86a" dependencies = [ "bitflags 2.7.0", ] @@ -5062,21 +5104,6 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -[[package]] -name = "ureq" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" -dependencies = [ - "base64", - "log", - "once_cell", - "rustls", - "rustls-pki-types", - "url", - "webpki-roots", -] - [[package]] name = "url" version = "2.5.4" diff --git a/iroh-dns-server/Cargo.toml b/iroh-dns-server/Cargo.toml index ca82bdfe69..2275391715 100644 --- a/iroh-dns-server/Cargo.toml +++ b/iroh-dns-server/Cargo.toml @@ -31,7 +31,7 @@ humantime-serde = "1.1.1" iroh-metrics = { version = "0.31.0" } lru = "0.12.3" n0-future = "0.1.2" -pkarr = { version = "2.3.1", features = [ "async", "relay", "dht"], default-features = false } +pkarr = { version = "3", features = ["relays", "dht"], default-features = false } rcgen = "0.13" redb = "2.0.0" regex = "1.10.3" @@ -61,7 +61,7 @@ z32 = "1.1.1" criterion = "0.5.1" hickory-resolver = "=0.25.0-alpha.5" iroh = { path = "../iroh" } -pkarr = { version = "2.3.1", features = ["rand"] } +mainline = "5" rand = "0.8" rand_chacha = "0.3.1" testresult = "0.4.1" diff --git a/iroh-dns-server/src/lib.rs b/iroh-dns-server/src/lib.rs index 11596d4fe1..2c658571be 100644 --- a/iroh-dns-server/src/lib.rs +++ b/iroh-dns-server/src/lib.rs @@ -27,7 +27,7 @@ mod tests { dns::{node_info::NodeInfo, DnsResolver}, SecretKey, }; - use pkarr::{PkarrClient, SignedPacket}; + use pkarr::{SignedPacket, Timestamp}; use testresult::TestResult; use tracing_test::traced_test; use url::Url; @@ -103,13 +103,13 @@ mod tests { 30, dns::rdata::RData::AAAA(Ipv6Addr::LOCALHOST.into()), )); - SignedPacket::from_packet(&keypair, &packet)? + SignedPacket::new(&keypair, &packet.answers, Timestamp::now())? }; - let pkarr_client = pkarr::PkarrRelayClient::new(pkarr::RelaySettings { - relays: vec![pkarr_relay_url.to_string()], - ..Default::default() - })?; - pkarr_client.as_async().publish(&signed_packet).await?; + let pkarr_client = pkarr::Client::builder() + .no_default_network() + .relays(&[pkarr_relay_url])? + .build()?; + pkarr_client.publish(&signed_packet, None).await?; use hickory_server::proto::rr::Name; let pubkey = signed_packet.public_key().to_z32(); @@ -221,7 +221,7 @@ mod tests { #[traced_test] async fn integration_mainline() -> Result<()> { // run a mainline testnet - let testnet = pkarr::mainline::dht::Testnet::new(5); + let testnet = mainline::Testnet::new(5)?; let bootstrap = testnet.bootstrap.clone(); // spawn our server with mainline support @@ -239,13 +239,11 @@ mod tests { let signed_packet = node_info.to_pkarr_signed_packet(&secret_key, 30)?; // publish the signed packet to our DHT - let pkarr = PkarrClient::builder() - .dht_settings(pkarr::mainline::dht::DhtSettings { - bootstrap: Some(testnet.bootstrap), - ..Default::default() - }) + let pkarr = pkarr::Client::builder() + .no_default_network() + .dht(|builder| builder.bootstrap(&testnet.bootstrap)) .build()?; - pkarr.publish(&signed_packet)?; + pkarr.publish(&signed_packet, None).await?; // resolve via DNS from our server, which will lookup from our DHT let resolver = test_resolver(nameserver); @@ -255,9 +253,6 @@ mod tests { assert_eq!(res.relay_url.map(Url::from), Some(relay_url)); server.shutdown().await?; - for mut node in testnet.nodes { - node.shutdown()?; - } Ok(()) } diff --git a/iroh-dns-server/src/store.rs b/iroh-dns-server/src/store.rs index 8ee036f7f5..503faf2cee 100644 --- a/iroh-dns-server/src/store.rs +++ b/iroh-dns-server/src/store.rs @@ -6,7 +6,7 @@ use anyhow::Result; use hickory_server::proto::rr::{Name, RecordSet, RecordType, RrKey}; use iroh_metrics::inc; use lru::LruCache; -use pkarr::{mainline::dht::DhtSettings, PkarrClient, SignedPacket}; +use pkarr::{Client as PkarrClient, SignedPacket}; use tokio::sync::Mutex; use tracing::{debug, trace}; use ttl_cache::TtlCache; @@ -66,10 +66,7 @@ impl ZoneStore { let pkarr_client = match bootstrap { BootstrapOption::Default => PkarrClient::builder().build().unwrap(), BootstrapOption::Custom(bootstrap) => PkarrClient::builder() - .dht_settings(DhtSettings { - bootstrap: Some(bootstrap), - ..Default::default() - }) + .dht(|builder| builder.bootstrap(&bootstrap)) .build() .unwrap(), }; @@ -116,9 +113,9 @@ impl ZoneStore { // // it will be cached for some time. debug!("DHT resolve {}", key.to_z32()); - let packet_opt = pkarr.as_ref().clone().as_async().resolve(&key).await?; + let packet_opt = pkarr.resolve(&key).await; if let Some(packet) = packet_opt { - debug!("DHT resolve successful {:?}", packet.packet()); + debug!("DHT resolve successful {:?}", packet); return self .cache .lock() @@ -249,12 +246,12 @@ impl CachedZone { signed_packet_to_hickory_records_without_origin(signed_packet, |_| true)?; Ok(Self { records, - timestamp: signed_packet.timestamp(), + timestamp: signed_packet.timestamp().into(), }) } fn is_newer_than(&self, signed_packet: &SignedPacket) -> bool { - self.timestamp > signed_packet.timestamp() + self.timestamp > signed_packet.timestamp().into() } fn resolve(&self, name: &Name, record_type: RecordType) -> Option> { diff --git a/iroh-dns-server/src/store/signed_packets.rs b/iroh-dns-server/src/store/signed_packets.rs index 34de1abe94..d01836567a 100644 --- a/iroh-dns-server/src/store/signed_packets.rs +++ b/iroh-dns-server/src/store/signed_packets.rs @@ -1,9 +1,8 @@ use std::{future::Future, path::Path, result, time::Duration}; use anyhow::{Context, Result}; -use bytes::Bytes; use iroh_metrics::inc; -use pkarr::{system_time, SignedPacket}; +use pkarr::{SignedPacket, Timestamp}; use redb::{ backends::InMemoryBackend, Database, MultimapTableDefinition, ReadableTable, TableDefinition, }; @@ -120,7 +119,7 @@ impl Actor { let transaction = self.db.begin_write()?; let mut tables = Tables::new(&transaction)?; let timeout = tokio::time::sleep(self.options.max_batch_time); - let expired = system_time() - expiry_us; + let expired = Timestamp::now() - expiry_us; tokio::pin!(timeout); for _ in 0..self.options.max_batch_size { tokio::select! { @@ -134,7 +133,7 @@ impl Actor { match msg { Message::Get { key, res } => { trace!("get {}", key); - let packet = get_packet(&tables.signed_packets, &key)?; + let packet = get_packet(&tables.signed_packets, &key).context("get packet failed")?; res.send(packet).ok(); } Message::Upsert { packet, res } => { @@ -146,15 +145,15 @@ impl Actor { continue; } else { // remove the packet from the update time index - tables.update_time.remove(&packet.timestamp().to_be_bytes(), key.as_bytes())?; + tables.update_time.remove(&packet.timestamp().to_bytes(), key.as_bytes())?; true } } else { false }; - let value = packet.as_bytes(); + let value = packet.serialize(); tables.signed_packets.insert(key.as_bytes(), &value[..])?; - tables.update_time.insert(&packet.timestamp().to_be_bytes(), key.as_bytes())?; + tables.update_time.insert(&packet.timestamp().to_bytes(), key.as_bytes())?; if replaced { inc!(Metrics, store_packets_updated); } else { @@ -165,8 +164,8 @@ impl Actor { Message::Remove { key, res } => { trace!("remove {}", key); let updated = if let Some(row) = tables.signed_packets.remove(key.as_bytes())? { - let packet = SignedPacket::from_bytes(&Bytes::copy_from_slice(row.value()))?; - tables.update_time.remove(&packet.timestamp().to_be_bytes(), key.as_bytes())?; + let packet = SignedPacket::deserialize(row.value())?; + tables.update_time.remove(&packet.timestamp().to_bytes(), key.as_bytes())?; inc!(Metrics, store_packets_removed); true } else { @@ -313,10 +312,10 @@ fn get_packet( table: &impl ReadableTable<&'static SignedPacketsKey, &'static [u8]>, key: &PublicKeyBytes, ) -> Result> { - let Some(row) = table.get(key.as_ref())? else { + let Some(row) = table.get(key.as_ref()).context("database fetch failed")? else { return Ok(None); }; - let packet = SignedPacket::from_bytes(&row.value().to_vec().into())?; + let packet = SignedPacket::deserialize(row.value()).context("parsing signed packet failed")?; Ok(Some(packet)) } @@ -344,11 +343,11 @@ async fn evict_task_inner(send: mpsc::Sender, options: Options) -> anyh let Ok(snapshot) = rx.await else { anyhow::bail!("failed to get snapshot"); }; - let expired = system_time() - expiry_us; + let expired = Timestamp::now() - expiry_us; trace!("evicting packets older than {}", expired); // if getting the range fails we exit the loop and shut down // if individual reads fail we log the error and limp on - for item in snapshot.update_time.range(..expired.to_be_bytes())? { + for item in snapshot.update_time.range(..expired.to_bytes())? { let (time, keys) = match item { Ok(v) => v, Err(e) => { diff --git a/iroh-relay/Cargo.toml b/iroh-relay/Cargo.toml index e2ef9d5be0..553daf5005 100644 --- a/iroh-relay/Cargo.toml +++ b/iroh-relay/Cargo.toml @@ -35,7 +35,7 @@ iroh-metrics = { version = "0.31", default-features = false } n0-future = "0.1.2" num_enum = "0.7" pin-project = "1" -pkarr = { version = "2", default-features = false } +pkarr = { version = "3", default-features = false, features = ["signed_packet"] } postcard = { version = "1", default-features = false, features = [ "alloc", "use-std", diff --git a/iroh-relay/src/dns/node_info.rs b/iroh-relay/src/dns/node_info.rs index 939d36ef89..69400e7356 100644 --- a/iroh-relay/src/dns/node_info.rs +++ b/iroh-relay/src/dns/node_info.rs @@ -306,14 +306,15 @@ impl TxtAttrs { let pubkey_z32 = pubkey.to_z32(); let node_id = NodeId::from(*pubkey.verifying_key()); let zone = dns::Name::new(&pubkey_z32)?; - let inner = packet.packet(); - let txt_data = inner.answers.iter().filter_map(|rr| match &rr.rdata { - RData::TXT(txt) => match rr.name.without(&zone) { - Some(name) if name.to_string() == IROH_TXT_NAME => Some(txt), - Some(_) | None => None, - }, - _ => None, - }); + let txt_data = packet + .all_resource_records() + .filter_map(|rr| match &rr.rdata { + RData::TXT(txt) => match rr.name.without(&zone) { + Some(name) if name.to_string() == IROH_TXT_NAME => Some(txt), + Some(_) | None => None, + }, + _ => None, + }); let txt_strs = txt_data.filter_map(|s| String::try_from(s.clone()).ok()); Self::from_strings(node_id, txt_strs) @@ -374,29 +375,18 @@ impl TxtAttrs { secret_key: &SecretKey, ttl: u32, ) -> Result { - let packet = self.to_pkarr_dns_packet(ttl)?; - let keypair = pkarr::Keypair::from_secret_key(&secret_key.to_bytes()); - let signed_packet = pkarr::SignedPacket::from_packet(&keypair, &packet)?; - Ok(signed_packet) - } - - fn to_pkarr_dns_packet(&self, ttl: u32) -> Result> { use pkarr::dns::{self, rdata}; - let name = dns::Name::new(IROH_TXT_NAME)?.into_owned(); + let keypair = pkarr::Keypair::from_secret_key(&secret_key.to_bytes()); + let name = dns::Name::new(IROH_TXT_NAME)?; - let mut packet = dns::Packet::new_reply(0); + let mut builder = pkarr::SignedPacket::builder(); for s in self.to_txt_strings() { let mut txt = rdata::TXT::new(); txt.add_string(&s)?; - let rdata = rdata::RData::TXT(txt.into_owned()); - packet.answers.push(dns::ResourceRecord::new( - name.clone(), - dns::CLASS::IN, - ttl, - rdata, - )); + builder = builder.txt(name.clone(), txt.into_owned(), ttl); } - Ok(packet) + let signed_packet = builder.build(&keypair)?; + Ok(signed_packet) } } diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index fc95df2aae..ff64f3a2ae 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -48,9 +48,8 @@ iroh-relay = { version = "0.32", path = "../iroh-relay", default-features = fals netdev = "0.31.0" netwatch = { version = "0.3" } pin-project = "1" -pkarr = { version = "2", default-features = false, features = [ - "async", - "relay", +pkarr = { version = "3", default-features = false, features = [ + "relays", ] } portmapper = { version = "0.3", default-features = false } quinn = { package = "iroh-quinn", version = "0.13.0" } @@ -129,6 +128,7 @@ serde_json = "1" testresult = "0.4.0" iroh-relay = { path = "../iroh-relay", default-features = false, features = ["test-utils", "server"] } tracing-test = "0.2.5" +mainline = "5.2.0" [features] default = ["metrics"] diff --git a/iroh/src/discovery/pkarr/dht.rs b/iroh/src/discovery/pkarr/dht.rs index 0a047de96d..78475de7d5 100644 --- a/iroh/src/discovery/pkarr/dht.rs +++ b/iroh/src/discovery/pkarr/dht.rs @@ -18,12 +18,8 @@ use n0_future::{ stream::StreamExt, task::{self, AbortOnDropHandle}, time::{self, Duration}, - FutureExt, -}; -use pkarr::{ - PkarrClient, PkarrClientAsync, PkarrRelayClient, PkarrRelayClientAsync, RelaySettings, - SignedPacket, }; +use pkarr::{Client as PkarrClient, SignedPacket}; use url::Url; use crate::{ @@ -67,10 +63,7 @@ impl Default for DhtDiscovery { #[derive(derive_more::Debug)] struct Inner { /// Pkarr client for interacting with the DHT. - pkarr: PkarrClientAsync, - /// Pkarr client for interacting with a pkarr relay - #[debug("Option")] - pkarr_relay: Option, + pkarr: PkarrClient, /// The background task that periodically publishes the node address. /// /// Due to [`AbortOnDropHandle`], this will be aborted when the discovery is dropped. @@ -81,8 +74,6 @@ struct Inner { secret_key: Option, /// Optional pkarr relay URL to use. relay_url: Option, - /// Whether to publish to the mainline DHT. - dht: bool, /// Time-to-live value for the DNS packets. ttl: u32, /// True to include the direct addresses in the DNS packet. @@ -94,17 +85,16 @@ struct Inner { } impl Inner { - async fn resolve_relay(&self, key: pkarr::PublicKey) -> Option> { - tracing::info!("resolving {} from relay {:?}", key.to_z32(), self.relay_url); - - let maybe_packet = self - .pkarr_relay - .as_ref() - .expect("checked") - .resolve(&key) - .await; + async fn resolve_pkarr(&self, key: pkarr::PublicKey) -> Option> { + tracing::info!( + "resolving {} from relay and DHT {:?}", + key.to_z32(), + self.relay_url + ); + + let maybe_packet = self.pkarr.resolve(&key).await; match maybe_packet { - Ok(Some(signed_packet)) => match NodeInfo::from_pkarr_signed_packet(&signed_packet) { + Some(signed_packet) => match NodeInfo::from_pkarr_signed_packet(&signed_packet) { Ok(node_info) => { let node_addr: NodeAddr = node_info.into(); @@ -120,42 +110,10 @@ impl Inner { None } }, - Ok(None) => { - tracing::debug!("no signed packet found in relay"); - None - } - Err(err) => { - tracing::debug!("failed to get signed packet from relay: {}", err); - Some(Err(err.into())) - } - } - } - async fn resolve_dht(&self, key: pkarr::PublicKey) -> Option> { - tracing::info!("resolving {} from DHT", key.to_z32()); - - let maybe_packet = self.pkarr.resolve(&key).await; - match maybe_packet { - Ok(Some(signed_packet)) => match NodeInfo::from_pkarr_signed_packet(&signed_packet) { - Ok(node_info) => { - let node_addr: NodeAddr = node_info.into(); - tracing::info!("discovered node info from DHT {:?}", node_addr); - Some(Ok(DiscoveryItem { - node_addr, - provenance: "mainline", - last_updated: None, - })) - } - Err(_err) => { - tracing::debug!("failed to parse signed packet as node info"); - None - } - }, - Ok(None) => { - // nothing to do - tracing::debug!("no signed packet found in DHT"); + None => { + tracing::debug!("no signed packet found"); None } - Err(err) => Some(Err(err.into())), } } } @@ -251,37 +209,31 @@ impl Builder { /// Builds the discovery mechanism. pub fn build(self) -> Result { + anyhow::ensure!( + self.dht || self.pkarr_relay.is_some(), + "at least one of DHT or relay must be enabled" + ); let pkarr = match self.client { Some(client) => client, - None => PkarrClient::new(Default::default())?, + None => { + let mut builder = PkarrClient::builder(); + builder.no_default_network(); + if self.dht { + builder.dht(|x| x); + } + if let Some(url) = &self.pkarr_relay { + builder.relays(&[url.clone()])?; + } + builder.build()? + } }; - let pkarr = pkarr.as_async(); let ttl = self.ttl.unwrap_or(DEFAULT_PKARR_TTL); - let relay_url = self.pkarr_relay; - let dht = self.dht; let include_direct_addresses = self.include_direct_addresses; - anyhow::ensure!( - dht || relay_url.is_some(), - "at least one of DHT or relay must be enabled" - ); - - let pkarr_relay = match relay_url.clone() { - Some(url) => Some( - PkarrRelayClient::new(RelaySettings { - relays: vec![url.to_string()], - ..RelaySettings::default() - })? - .as_async(), - ), - None => None, - }; Ok(DhtDiscovery(Arc::new(Inner { pkarr, - pkarr_relay, ttl, - relay_url, - dht, + relay_url: self.pkarr_relay, include_direct_addresses, secret_key: self.secret_key, initial_publish_delay: self.initial_publish_delay, @@ -307,45 +259,22 @@ impl DhtDiscovery { // we have not published anything to the DHT yet. time::sleep(this.0.initial_publish_delay).await; loop { - // publish to the DHT if enabled - let dht_publish = async { - if this.0.dht { - let res = this.0.pkarr.publish(&signed_packet).await; - match res { - Ok(()) => { - tracing::debug!("pkarr publish success. published under {z32}",); - } - Err(e) => { - // we could do a smaller delay here, but in general DHT publish - // not working is due to a network issue, and if the network changes - // the task will be restarted anyway. - // - // Being unable to publish to the DHT is something that is expected - // to happen from time to time, so this does not warrant a error log. - tracing::warn!("pkarr publish error: {}", e); - } - } + // TODO: publish takes a compare-and-swap timestamp, make use of that. + let res = this.0.pkarr.publish(&signed_packet, None).await; + match res { + Ok(()) => { + tracing::debug!("pkarr publish success. published under {z32}",); } - }; - // publish to the relay if enabled - let relay_publish = async { - if let Some(relay) = this.0.pkarr_relay.as_ref() { - tracing::info!( - "publishing to relay: {:?}", - this.0.relay_url.as_ref().map(|r| r.to_string()) - ); - match relay.publish(&signed_packet).await { - Ok(_) => { - tracing::debug!("pkarr publish to relay success"); - } - Err(e) => { - tracing::warn!("pkarr publish to relay error: {}", e); - } - } + Err(e) => { + // we could do a smaller delay here, but in general DHT publish + // not working is due to a network issue, and if the network changes + // the task will be restarted anyway. + // + // Being unable to publish to the DHT is something that is expected + // to happen from time to time, so this does not warrant a error log. + tracing::warn!("pkarr publish error: {}", e); } - }; - // do both at the same time - tokio::join!(relay_publish, dht_publish); + } time::sleep(this.0.republish_delay).await; } } @@ -385,21 +314,13 @@ impl Discovery for DhtDiscovery { let pkarr_public_key = pkarr::PublicKey::try_from(node_id.as_bytes()).expect("valid public key"); tracing::info!("resolving {} as {}", node_id, pkarr_public_key.to_z32()); - - let mut stream = n0_future::FuturesUnorderedBounded::new(2); - if self.0.pkarr_relay.is_some() { - let key = pkarr_public_key.clone(); - let discovery = self.0.clone(); - stream.push(async move { discovery.resolve_relay(key).await }.boxed()); - } - - if self.0.dht { - let key = pkarr_public_key.clone(); - let discovery = self.0.clone(); - stream.push(async move { discovery.resolve_dht(key).await }.boxed()); - } - - Some(stream.filter_map(|t| t).boxed()) + let discovery = self.0.clone(); + let stream = n0_future::stream::once_future(async move { + discovery.resolve_pkarr(pkarr_public_key).await + }) + .filter_map(|x| x) + .boxed(); + Some(stream) } } @@ -408,7 +329,6 @@ mod tests { use std::collections::BTreeSet; use iroh_base::RelayUrl; - use pkarr::mainline::dht::DhtSettings; use testresult::TestResult; use tracing_test::traced_test; @@ -420,20 +340,16 @@ mod tests { async fn dht_discovery_smoke() -> TestResult { let ep = crate::Endpoint::builder().bind().await?; let secret = ep.secret_key().clone(); - let testnet = pkarr::mainline::dht::Testnet::new(2); - let settings = pkarr::Settings { - dht: DhtSettings { - bootstrap: Some(testnet.bootstrap.clone()), - ..Default::default() - }, - ..Default::default() - }; - let client = PkarrClient::new(settings)?; + let testnet = mainline::Testnet::new(2)?; + let client = pkarr::Client::builder() + .dht(|builder| builder.bootstrap(&testnet.bootstrap)) + .build()?; let discovery = DhtDiscovery::builder() .secret_key(secret.clone()) .initial_publish_delay(Duration::ZERO) .client(client) .build()?; + let relay_url: RelayUrl = Url::parse("https://example.com")?.into(); discovery.publish(Some(&relay_url), &Default::default()); From fdc55618f149db49b144f96630f52f94903e86c3 Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Feb 2025 16:42:38 +0100 Subject: [PATCH 02/18] fix: wasm build --- .cargo/config.toml | 3 +++ Cargo.lock | 1 + iroh-relay/Cargo.toml | 7 +++++++ 3 files changed, 11 insertions(+) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000..f7f69a6126 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,3 @@ +# It's recommended to set the flag on a per-target basis: +[target.wasm32-unknown-unknown] +rustflags = ['--cfg', 'getrandom_backend="wasm_js"'] diff --git a/Cargo.lock b/Cargo.lock index 476c5984f0..807b6ab346 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2332,6 +2332,7 @@ dependencies = [ "dashmap 6.1.0", "data-encoding", "derive_more", + "getrandom 0.3.1", "governor 0.7.0", "hickory-proto", "hickory-resolver", diff --git a/iroh-relay/Cargo.toml b/iroh-relay/Cargo.toml index 553daf5005..da2ea93d4c 100644 --- a/iroh-relay/Cargo.toml +++ b/iroh-relay/Cargo.toml @@ -89,6 +89,13 @@ toml = { version = "0.8", optional = true } tracing-subscriber = { version = "0.3", features = [ "env-filter", ], optional = true } +# needed by pkarr to enable wasm_js feature +getrandom = { version = "0.3.1", default-features = false } + +# wasm-in-browser +[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] +# enable wasm_js feature in getrandom +getrandom = { version = "0.3.1", default-features = false, features = ["wasm_js"] } # non-wasm-in-browser dependencies [target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies] From e8fe8695c371b185d5890fc3f7b9688eecd672eb Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Feb 2025 17:05:57 +0100 Subject: [PATCH 03/18] fix: try to make wasm build work --- {.cargo => iroh-relay/.cargo}/config.toml | 1 - iroh/.cargo/config.toml | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) rename {.cargo => iroh-relay/.cargo}/config.toml (59%) create mode 100644 iroh/.cargo/config.toml diff --git a/.cargo/config.toml b/iroh-relay/.cargo/config.toml similarity index 59% rename from .cargo/config.toml rename to iroh-relay/.cargo/config.toml index f7f69a6126..2e07606d52 100644 --- a/.cargo/config.toml +++ b/iroh-relay/.cargo/config.toml @@ -1,3 +1,2 @@ -# It's recommended to set the flag on a per-target basis: [target.wasm32-unknown-unknown] rustflags = ['--cfg', 'getrandom_backend="wasm_js"'] diff --git a/iroh/.cargo/config.toml b/iroh/.cargo/config.toml new file mode 100644 index 0000000000..2e07606d52 --- /dev/null +++ b/iroh/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.wasm32-unknown-unknown] +rustflags = ['--cfg', 'getrandom_backend="wasm_js"'] From ebe373f2ee5a532b82c7b40f055c580b83efc904 Mon Sep 17 00:00:00 2001 From: Frando Date: Tue, 18 Feb 2025 23:31:11 +0100 Subject: [PATCH 04/18] chore: update pkarr in Cargo.lock --- Cargo.lock | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 807b6ab346..a6c3840fee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3126,9 +3126,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "3.1.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519d78e59fc7884d0009a1e405ab04661c087cbb98ba984e0c010884a36efc0c" +checksum = "e314b1f8490a5b423ec7b8cb715319f50ce3d4cca425dda7cba96a61c8dc73a7" dependencies = [ "async-compat", "base32", @@ -3139,12 +3139,11 @@ dependencies = [ "ed25519-dalek", "futures-buffered", "futures-lite", - "getrandom 0.3.1", + "getrandom 0.2.15", "log", "lru 0.13.0", "mainline", "pubky-timestamp", - "rand 0.9.0", "reqwest", "self_cell", "serde", @@ -3440,13 +3439,13 @@ dependencies = [ [[package]] name = "pubky-timestamp" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab61f82c6343aecd77364c3c1c4e9e8288adfb11d2775640395344b8078aa315" +checksum = "44aafc63c1eab1905e8a8378d2b085500540c9935b6d028908c8a50a5a246a3d" dependencies = [ "base32", "document-features", - "getrandom 0.3.1", + "getrandom 0.2.15", "httpdate", "js-sys", "once_cell", @@ -5355,7 +5354,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] From f94f6570b57a987a82345bf3cd0def7baa23cbac Mon Sep 17 00:00:00 2001 From: Frando Date: Tue, 18 Feb 2025 23:36:35 +0100 Subject: [PATCH 05/18] fix: pkarr downgraded rand --- Cargo.lock | 3 --- iroh-relay/.cargo/config.toml | 2 -- iroh-relay/Cargo.toml | 7 ------- iroh/.cargo/config.toml | 2 -- 4 files changed, 14 deletions(-) delete mode 100644 iroh-relay/.cargo/config.toml delete mode 100644 iroh/.cargo/config.toml diff --git a/Cargo.lock b/Cargo.lock index a6c3840fee..20b06eca11 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1394,10 +1394,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.13.3+wasi-0.2.2", - "wasm-bindgen", "windows-targets 0.52.6", ] @@ -2332,7 +2330,6 @@ dependencies = [ "dashmap 6.1.0", "data-encoding", "derive_more", - "getrandom 0.3.1", "governor 0.7.0", "hickory-proto", "hickory-resolver", diff --git a/iroh-relay/.cargo/config.toml b/iroh-relay/.cargo/config.toml deleted file mode 100644 index 2e07606d52..0000000000 --- a/iroh-relay/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.wasm32-unknown-unknown] -rustflags = ['--cfg', 'getrandom_backend="wasm_js"'] diff --git a/iroh-relay/Cargo.toml b/iroh-relay/Cargo.toml index da2ea93d4c..553daf5005 100644 --- a/iroh-relay/Cargo.toml +++ b/iroh-relay/Cargo.toml @@ -89,13 +89,6 @@ toml = { version = "0.8", optional = true } tracing-subscriber = { version = "0.3", features = [ "env-filter", ], optional = true } -# needed by pkarr to enable wasm_js feature -getrandom = { version = "0.3.1", default-features = false } - -# wasm-in-browser -[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] -# enable wasm_js feature in getrandom -getrandom = { version = "0.3.1", default-features = false, features = ["wasm_js"] } # non-wasm-in-browser dependencies [target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies] diff --git a/iroh/.cargo/config.toml b/iroh/.cargo/config.toml deleted file mode 100644 index 2e07606d52..0000000000 --- a/iroh/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[target.wasm32-unknown-unknown] -rustflags = ['--cfg', 'getrandom_backend="wasm_js"'] From e75bd1080b362e0fbb572232eb95cfff9bd81c88 Mon Sep 17 00:00:00 2001 From: Frando Date: Wed, 19 Feb 2025 09:41:06 +0100 Subject: [PATCH 06/18] chore: trying to get backtraces from cross tests --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d03bd8401..8aab0d839e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -146,6 +146,7 @@ jobs: run: cross test --all --target ${{ matrix.target }} -- --test-threads=12 env: RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG' }} + RUST_BACKTRACE: 1 wasm_build: name: Build wasm32 From 0ec16ee0778fa0b79cfbede98459f13f17bb07a6 Mon Sep 17 00:00:00 2001 From: Frando Date: Wed, 19 Feb 2025 09:45:56 +0100 Subject: [PATCH 07/18] chore: another try at cross backtrace --- .github/workflows/ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8aab0d839e..65fa0c9c56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -143,10 +143,9 @@ jobs: - uses: taiki-e/install-action@cross - name: test - run: cross test --all --target ${{ matrix.target }} -- --test-threads=12 + run: RUST_BACKTRACE=1 cross test --all --target ${{ matrix.target }} -- --test-threads=12 env: RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG' }} - RUST_BACKTRACE: 1 wasm_build: name: Build wasm32 @@ -184,7 +183,6 @@ jobs: - name: Ensure no 'import "env"' in iroh-net-report Wasm run: | ! wasm-tools print --skeleton target/wasm32-unknown-unknown/debug/iroh_net_report.wasm | grep 'import "env"' - check_semver: runs-on: ubuntu-latest From 23bc2c6fc5006becd2d57570a07abb3f2eba7108 Mon Sep 17 00:00:00 2001 From: Frando Date: Wed, 19 Feb 2025 12:08:15 +0100 Subject: [PATCH 08/18] update pkarr patch version --- Cargo.lock | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 20b06eca11..59b9b77e25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2549,9 +2549,9 @@ checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" [[package]] name = "mainline" -version = "5.2.0" +version = "5.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed4c696a31f9ac71d7a1c7e10945cc041758b9b6a716ea48c18f2372e067e9db" +checksum = "fb915972046c6df12b1292ed24f7382ed21facd440f9f6ca9c38e0b702217009" dependencies = [ "crc", "document-features", @@ -3123,9 +3123,8 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e314b1f8490a5b423ec7b8cb715319f50ce3d4cca425dda7cba96a61c8dc73a7" +version = "3.3.1" +source = "git+https://github.com/Frando/pkarr.git?branch=no-async-compat#efd9c003d449417e032a9ef705ac68c419c81f70" dependencies = [ "async-compat", "base32", @@ -5351,7 +5350,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] From b6109e3831587eb66dfabba0ccb5d0c36b18514a Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 21 Feb 2025 09:26:05 +0100 Subject: [PATCH 09/18] deps: update pkarr version --- Cargo.lock | 11 ++++++----- iroh-dns-server/Cargo.toml | 2 +- iroh-relay/Cargo.toml | 2 +- iroh/Cargo.toml | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 59b9b77e25..441d8b707c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2549,9 +2549,9 @@ checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" [[package]] name = "mainline" -version = "5.2.1" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb915972046c6df12b1292ed24f7382ed21facd440f9f6ca9c38e0b702217009" +checksum = "d20596de02883daff9a64c0c02bb4371c44dc7988cd07ecb61d166281c7733d3" dependencies = [ "crc", "document-features", @@ -2559,8 +2559,8 @@ dependencies = [ "ed25519-dalek", "flume", "futures-lite", + "getrandom 0.2.15", "lru 0.13.0", - "rand 0.9.0", "serde", "serde_bencode", "serde_bytes", @@ -3123,8 +3123,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "3.3.1" -source = "git+https://github.com/Frando/pkarr.git?branch=no-async-compat#efd9c003d449417e032a9ef705ac68c419c81f70" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453379a59cb020743a64857c42466c2e8848470ebc1f9a26bd6f5155cb312d65" dependencies = [ "async-compat", "base32", diff --git a/iroh-dns-server/Cargo.toml b/iroh-dns-server/Cargo.toml index 2275391715..6e4b3f1731 100644 --- a/iroh-dns-server/Cargo.toml +++ b/iroh-dns-server/Cargo.toml @@ -31,7 +31,7 @@ humantime-serde = "1.1.1" iroh-metrics = { version = "0.31.0" } lru = "0.12.3" n0-future = "0.1.2" -pkarr = { version = "3", features = ["relays", "dht"], default-features = false } +pkarr = { version = "3.4", features = ["relays", "dht"], default-features = false } rcgen = "0.13" redb = "2.0.0" regex = "1.10.3" diff --git a/iroh-relay/Cargo.toml b/iroh-relay/Cargo.toml index 553daf5005..5987b2b5cd 100644 --- a/iroh-relay/Cargo.toml +++ b/iroh-relay/Cargo.toml @@ -35,7 +35,7 @@ iroh-metrics = { version = "0.31", default-features = false } n0-future = "0.1.2" num_enum = "0.7" pin-project = "1" -pkarr = { version = "3", default-features = false, features = ["signed_packet"] } +pkarr = { version = "3.4", default-features = false, features = ["signed_packet"] } postcard = { version = "1", default-features = false, features = [ "alloc", "use-std", diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index ff64f3a2ae..86ff4e83e1 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -48,7 +48,7 @@ iroh-relay = { version = "0.32", path = "../iroh-relay", default-features = fals netdev = "0.31.0" netwatch = { version = "0.3" } pin-project = "1" -pkarr = { version = "3", default-features = false, features = [ +pkarr = { version = "3.4", default-features = false, features = [ "relays", ] } portmapper = { version = "0.3", default-features = false } From a912eaf135ae694460644a1a8c682aa546008256 Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Mar 2025 10:44:37 +0100 Subject: [PATCH 10/18] deps: update pkarr to 3.6 --- Cargo.lock | 54 +++++++++++++++++++------------------- iroh-dns-server/Cargo.toml | 2 +- iroh-relay/Cargo.toml | 2 +- iroh/Cargo.toml | 2 +- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea928d9860..6730b2c74e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2743,9 +2743,9 @@ checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" [[package]] name = "mainline" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20596de02883daff9a64c0c02bb4371c44dc7988cd07ecb61d166281c7733d3" +checksum = "2fae24c3d129b92c8cfea92a9e2014052371a2835e4a6d66dfdb00238e389e56" dependencies = [ "crc", "document-features", @@ -3096,6 +3096,21 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" +[[package]] +name = "ntimestamp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50f94c405726d3e0095e89e72f75ce7f6587b94a8bd8dc8054b73f65c0fd68c" +dependencies = [ + "base32", + "document-features", + "getrandom 0.2.15", + "httpdate", + "js-sys", + "once_cell", + "serde", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3360,9 +3375,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "3.4.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453379a59cb020743a64857c42466c2e8848470ebc1f9a26bd6f5155cb312d65" +checksum = "7288f55e8981cce659ff14e05bbc0ade2d3015e45601ed4eb8ae8736c55c2a5b" dependencies = [ "async-compat", "base32", @@ -3377,7 +3392,7 @@ dependencies = [ "log", "lru 0.13.0", "mainline", - "pubky-timestamp", + "ntimestamp", "reqwest", "self_cell", "serde", @@ -3670,21 +3685,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "pubky-timestamp" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44aafc63c1eab1905e8a8378d2b085500540c9935b6d028908c8a50a5a246a3d" -dependencies = [ - "base32", - "document-features", - "getrandom 0.2.15", - "httpdate", - "js-sys", - "once_cell", - "serde", -] - [[package]] name = "quanta" version = "0.12.5" @@ -3987,9 +3987,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "989e327e510263980e231de548a33e63d34962d29ae61b467389a1a09627a254" dependencies = [ "base64", "bytes", @@ -5759,13 +5759,13 @@ checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-result 0.3.1", + "windows-strings 0.3.1", + "windows-targets 0.53.0", ] [[package]] diff --git a/iroh-dns-server/Cargo.toml b/iroh-dns-server/Cargo.toml index fc887c9917..82ca8e5ac6 100644 --- a/iroh-dns-server/Cargo.toml +++ b/iroh-dns-server/Cargo.toml @@ -31,7 +31,7 @@ humantime-serde = "1.1.1" iroh-metrics = { version = "0.32.0", features = ["metrics", "service"] } lru = "0.12.3" n0-future = "0.1.2" -pkarr = { version = "3.4", features = ["relays", "dht"], default-features = false } +pkarr = { version = "3.6", features = ["relays", "dht"], default-features = false } rcgen = "0.13" redb = "2.0.0" regex = "1.10.3" diff --git a/iroh-relay/Cargo.toml b/iroh-relay/Cargo.toml index 14f0183a9e..610414cd28 100644 --- a/iroh-relay/Cargo.toml +++ b/iroh-relay/Cargo.toml @@ -37,7 +37,7 @@ iroh-metrics = { version = "0.32", default-features = false } n0-future = "0.1.2" num_enum = "0.7" pin-project = "1" -pkarr = { version = "3.4", default-features = false, features = ["signed_packet"] } +pkarr = { version = "3.6", default-features = false, features = ["signed_packet"] } postcard = { version = "1", default-features = false, features = [ "alloc", "use-std", diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index 2d943e2443..f5670b3878 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -45,7 +45,7 @@ iroh-relay = { version = "0.33", path = "../iroh-relay", default-features = fals n0-future = "0.1.2" netwatch = { version = "0.4" } pin-project = "1" -pkarr = { version = "3.4", default-features = false, features = [ +pkarr = { version = "3.6", default-features = false, features = [ "relays", ] } quinn = { package = "iroh-quinn", version = "0.13.0", default-features = false, features = ["rustls-ring"] } From 86ae71936f99e018d90f353554f7bf06de7c0350 Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Mar 2025 10:53:36 +0100 Subject: [PATCH 11/18] chore: remove debug leftovers --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2fe11ad600..ba4c50b14a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -143,7 +143,7 @@ jobs: - uses: taiki-e/install-action@cross - name: test - run: RUST_BACKTRACE=1 cross test --all --target ${{ matrix.target }} -- --test-threads=12 + run: cross test --all --target ${{ matrix.target }} -- --test-threads=12 env: RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG' }} From 66ece983a9e94784d941b153a5d558399b3a53ee Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Mar 2025 10:54:23 +0100 Subject: [PATCH 12/18] chore: remove cargo update --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6730b2c74e..87fcd45fd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,9 +467,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cast" @@ -1052,9 +1052,9 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dyn-clone" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ed25519" @@ -3211,9 +3211,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" [[package]] name = "oorandom" From d195fd502f59b2b942b27acd60d4ab0274918433 Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Mar 2025 10:57:56 +0100 Subject: [PATCH 13/18] chore: remove explicit mainline dependency, use pkarr reexport instead --- Cargo.lock | 2 -- iroh-dns-server/Cargo.toml | 1 - iroh-dns-server/src/lib.rs | 2 +- iroh/Cargo.toml | 1 - iroh/src/discovery/pkarr/dht.rs | 2 +- 5 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 87fcd45fd3..b6d42b63c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2276,7 +2276,6 @@ dependencies = [ "iroh-quinn-proto", "iroh-quinn-udp", "iroh-relay", - "mainline", "n0-future", "netdev", "netwatch 0.4.0", @@ -2376,7 +2375,6 @@ dependencies = [ "iroh", "iroh-metrics", "lru 0.12.5", - "mainline", "n0-future", "pkarr", "rand 0.8.5", diff --git a/iroh-dns-server/Cargo.toml b/iroh-dns-server/Cargo.toml index 82ca8e5ac6..f18246df55 100644 --- a/iroh-dns-server/Cargo.toml +++ b/iroh-dns-server/Cargo.toml @@ -61,7 +61,6 @@ z32 = "1.1.1" criterion = "0.5.1" hickory-resolver = "=0.25.0-alpha.5" iroh = { path = "../iroh" } -mainline = "5" rand = "0.8" rand_chacha = "0.3.1" testresult = "0.4.1" diff --git a/iroh-dns-server/src/lib.rs b/iroh-dns-server/src/lib.rs index dd174eec2b..67d5d8b401 100644 --- a/iroh-dns-server/src/lib.rs +++ b/iroh-dns-server/src/lib.rs @@ -219,7 +219,7 @@ mod tests { #[traced_test] async fn integration_mainline() -> Result<()> { // run a mainline testnet - let testnet = mainline::Testnet::new(5)?; + let testnet = pkarr::mainline::Testnet::new(5)?; let bootstrap = testnet.bootstrap.clone(); // spawn our server with mainline support diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index f5670b3878..5c7eaedb60 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -148,7 +148,6 @@ tokio = { version = "1", features = [ serde_json = "1" iroh-relay = { path = "../iroh-relay", default-features = false, features = ["test-utils", "server"] } tracing-test = "0.2.5" -mainline = "5.2.0" # wasm-in-browser test/dev dependencies [target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dev-dependencies] diff --git a/iroh/src/discovery/pkarr/dht.rs b/iroh/src/discovery/pkarr/dht.rs index 7032680af5..7ace49fcff 100644 --- a/iroh/src/discovery/pkarr/dht.rs +++ b/iroh/src/discovery/pkarr/dht.rs @@ -325,7 +325,7 @@ mod tests { async fn dht_discovery_smoke() -> TestResult { let ep = crate::Endpoint::builder().bind().await?; let secret = ep.secret_key().clone(); - let testnet = mainline::Testnet::new(2)?; + let testnet = pkarr::mainline::Testnet::new(2)?; let client = pkarr::Client::builder() .dht(|builder| builder.bootstrap(&testnet.bootstrap)) .build()?; From 9e3728b3542952908ce41370ebf52f2f2dd29623 Mon Sep 17 00:00:00 2001 From: Frando Date: Fri, 14 Mar 2025 11:08:22 +0100 Subject: [PATCH 14/18] chore: cleanup --- iroh/src/discovery/pkarr/dht.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iroh/src/discovery/pkarr/dht.rs b/iroh/src/discovery/pkarr/dht.rs index 7ace49fcff..406d0d139a 100644 --- a/iroh/src/discovery/pkarr/dht.rs +++ b/iroh/src/discovery/pkarr/dht.rs @@ -92,8 +92,8 @@ impl Inner { match maybe_packet { Some(signed_packet) => match NodeInfo::from_pkarr_signed_packet(&signed_packet) { Ok(node_info) => { - tracing::info!("discovered node info from relay {:?}", node_info); - Some(Ok(DiscoveryItem::new(node_info, "relay", None))) + tracing::info!("discovered node info {:?}", node_info); + Some(Ok(DiscoveryItem::new(node_info, "dht", None))) } Err(_err) => { tracing::debug!("failed to parse signed packet as node info"); From 8b767ce36662b23418a7b66f273b5b891df8a92e Mon Sep 17 00:00:00 2001 From: Frando Date: Wed, 2 Apr 2025 22:28:36 +0200 Subject: [PATCH 15/18] deps: update pkarr to 3.7 --- Cargo.lock | 10 +++++----- iroh-dns-server/Cargo.toml | 2 +- iroh-relay/Cargo.toml | 2 +- iroh/Cargo.toml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8da4bad623..8ef7ed1ed8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2743,9 +2743,9 @@ checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" [[package]] name = "mainline" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fae24c3d129b92c8cfea92a9e2014052371a2835e4a6d66dfdb00238e389e56" +checksum = "c258b001fa52b7270dc1a239b36a9b608b024e68733648c1757b025204fdc248" dependencies = [ "crc", "document-features", @@ -3384,9 +3384,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7288f55e8981cce659ff14e05bbc0ade2d3015e45601ed4eb8ae8736c55c2a5b" +checksum = "24978a42d7bc028516e83fd67696db8bd81d79c0743b9d2fd078e277d7b78494" dependencies = [ "async-compat", "base32", @@ -5643,7 +5643,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] diff --git a/iroh-dns-server/Cargo.toml b/iroh-dns-server/Cargo.toml index 0d177ed07d..da21081fac 100644 --- a/iroh-dns-server/Cargo.toml +++ b/iroh-dns-server/Cargo.toml @@ -31,7 +31,7 @@ humantime-serde = "1.1.1" iroh-metrics = { version = "0.32.0", features = ["metrics", "service"] } lru = "0.12.3" n0-future = "0.1.2" -pkarr = { version = "3.6", features = ["relays", "dht"], default-features = false } +pkarr = { version = "3.7", features = ["relays", "dht"], default-features = false } rcgen = "0.13" redb = "2.0.0" regex = "1.10.3" diff --git a/iroh-relay/Cargo.toml b/iroh-relay/Cargo.toml index b877c7b463..072c6cffe8 100644 --- a/iroh-relay/Cargo.toml +++ b/iroh-relay/Cargo.toml @@ -37,7 +37,7 @@ iroh-metrics = { version = "0.32", default-features = false } n0-future = "0.1.2" num_enum = "0.7" pin-project = "1" -pkarr = { version = "3.6", default-features = false, features = ["signed_packet"] } +pkarr = { version = "3.7", default-features = false, features = ["signed_packet"] } postcard = { version = "1", default-features = false, features = [ "alloc", "use-std", diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index e8fa7d3bd3..4bb5a8e3b0 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -45,7 +45,7 @@ iroh-relay = { version = "0.34", path = "../iroh-relay", default-features = fals n0-future = "0.1.2" netwatch = { version = "0.4" } pin-project = "1" -pkarr = { version = "3.6", default-features = false, features = [ +pkarr = { version = "3.7", default-features = false, features = [ "relays", ] } quinn = { package = "iroh-quinn", version = "0.13.0", default-features = false, features = ["rustls-ring"] } From 5e12affbf98cc137227af7d2f085b633e3c93cea Mon Sep 17 00:00:00 2001 From: Frando Date: Wed, 2 Apr 2025 22:30:04 +0200 Subject: [PATCH 16/18] change: use new async constructor for Testnet --- iroh-dns-server/src/lib.rs | 2 +- iroh/src/discovery/pkarr/dht.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iroh-dns-server/src/lib.rs b/iroh-dns-server/src/lib.rs index 67d5d8b401..1c2775e5de 100644 --- a/iroh-dns-server/src/lib.rs +++ b/iroh-dns-server/src/lib.rs @@ -219,7 +219,7 @@ mod tests { #[traced_test] async fn integration_mainline() -> Result<()> { // run a mainline testnet - let testnet = pkarr::mainline::Testnet::new(5)?; + let testnet = pkarr::mainline::Testnet::new_async(5).await?; let bootstrap = testnet.bootstrap.clone(); // spawn our server with mainline support diff --git a/iroh/src/discovery/pkarr/dht.rs b/iroh/src/discovery/pkarr/dht.rs index 406d0d139a..0efc65c82e 100644 --- a/iroh/src/discovery/pkarr/dht.rs +++ b/iroh/src/discovery/pkarr/dht.rs @@ -325,7 +325,7 @@ mod tests { async fn dht_discovery_smoke() -> TestResult { let ep = crate::Endpoint::builder().bind().await?; let secret = ep.secret_key().clone(); - let testnet = pkarr::mainline::Testnet::new(2)?; + let testnet = pkarr::mainline::Testnet::new_async(3).await?; let client = pkarr::Client::builder() .dht(|builder| builder.bootstrap(&testnet.bootstrap)) .build()?; From e59fc1b4a48f0d4f18207cf310c63eb36af27ce5 Mon Sep 17 00:00:00 2001 From: Frando Date: Wed, 2 Apr 2025 22:30:57 +0200 Subject: [PATCH 17/18] fix: change provenance label to pkarr --- iroh/src/discovery/pkarr/dht.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iroh/src/discovery/pkarr/dht.rs b/iroh/src/discovery/pkarr/dht.rs index 0efc65c82e..3164892566 100644 --- a/iroh/src/discovery/pkarr/dht.rs +++ b/iroh/src/discovery/pkarr/dht.rs @@ -93,7 +93,7 @@ impl Inner { Some(signed_packet) => match NodeInfo::from_pkarr_signed_packet(&signed_packet) { Ok(node_info) => { tracing::info!("discovered node info {:?}", node_info); - Some(Ok(DiscoveryItem::new(node_info, "dht", None))) + Some(Ok(DiscoveryItem::new(node_info, "pkarr", None))) } Err(_err) => { tracing::debug!("failed to parse signed packet as node info"); From aae6c7989f1f4ee571cfbbffd0cf92d7cce29135 Mon Sep 17 00:00:00 2001 From: Ruediger Klaehn Date: Wed, 30 Apr 2025 13:12:08 +0300 Subject: [PATCH 18/18] update cargo.lock from main --- Cargo.lock | 349 ++++++++++++++++++++++++++--------------------------- 1 file changed, 173 insertions(+), 176 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ff40c77571..9acd99c56e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -170,7 +170,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", "synstructure", ] @@ -182,7 +182,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -206,18 +206,18 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] name = "async-trait" -version = "0.1.85" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -326,7 +326,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -444,9 +444,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be3f42a67d6d345ecd59f675f3f012d6974981560836e938c22b424b85ce1be" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "block-buffer" @@ -459,15 +459,15 @@ dependencies = [ [[package]] name = "bounded-integer" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78a6932c88f1d2c29533a3b8a5f5a2f84cc19c3339b431677c3160c5c2e6ca85" +checksum = "102dbef1187b1893e6dfe05a774e79fd52265f49f214f6879c8ff49f52c8188b" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -477,9 +477,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "cast" @@ -489,9 +489,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.9" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8293772165d9345bdaaa39b45b2109591e63fe5e6fbc23c6ff930a048aa310b" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "shlex", ] @@ -578,9 +578,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" dependencies = [ "clap_builder", "clap_derive", @@ -588,9 +588,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" dependencies = [ "anstream", "anstyle", @@ -600,14 +600,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -704,9 +704,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -804,9 +804,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-common" @@ -877,7 +877,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -896,9 +896,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "der" @@ -934,7 +934,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -963,7 +963,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", "unicode-xid", ] @@ -1019,7 +1019,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -1050,9 +1050,9 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" [[package]] name = "ed25519" @@ -1113,27 +1113,27 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] name = "enumflags2" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -1308,7 +1308,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -1895,9 +1895,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -1923,9 +1923,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -2117,7 +2117,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -2164,9 +2164,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -2174,9 +2174,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", "number_prefix", @@ -2221,9 +2221,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" dependencies = [ "serde", ] @@ -2529,13 +2529,13 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2609,7 +2609,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", "libc", ] @@ -2773,9 +2773,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ "adler2", ] @@ -2901,17 +2901,16 @@ dependencies = [ [[package]] name = "netlink-proto" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b33524dc0968bfad349684447bfce6db937a9ac3332a1fe60c0c5a5ce63f21" +checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" dependencies = [ "bytes", "futures", "log", "netlink-packet-core", "netlink-sys", - "thiserror 1.0.69", - "tokio", + "thiserror 2.0.11", ] [[package]] @@ -2989,7 +2988,7 @@ dependencies = [ "tracing", "web-sys", "windows 0.59.0", - "windows-result 0.3.1", + "windows-result 0.3.0", "wmi", ] @@ -3010,7 +3009,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", "cfg-if", "libc", ] @@ -3126,7 +3125,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -3164,9 +3163,13 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.1" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "oorandom" @@ -3182,9 +3185,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "overload" @@ -3289,7 +3292,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -3315,22 +3318,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -3347,9 +3350,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "3.7.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24978a42d7bc028516e83fd67696db8bd81d79c0743b9d2fd078e277d7b78494" +checksum = "e32222ae3d617bf92414db29085f8a959a4515effce916e038e9399a335a0d6d" dependencies = [ "async-compat", "base32", @@ -3433,7 +3436,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -3634,7 +3637,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -3645,7 +3648,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.7.0", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -3825,7 +3828,7 @@ version = "11.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6928fa44c097620b706542d428957635951bade7143269085389d42c8a4927e" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", ] [[package]] @@ -3876,7 +3879,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", ] [[package]] @@ -3959,9 +3962,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e327e510263980e231de548a33e63d34962d29ae61b467389a1a09627a254" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ "base64", "bytes", @@ -4014,9 +4017,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.12" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9b823fa29b721a59671b41d6b06e66b29e0628e207e8b1c3ceeda701ec928d" +checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" dependencies = [ "cc", "cfg-if", @@ -4070,9 +4073,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -4094,11 +4097,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.43" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -4107,9 +4110,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.21" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "log", "once_cell", @@ -4178,9 +4181,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" dependencies = [ "web-time", ] @@ -4243,9 +4246,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "salsa20" @@ -4292,7 +4295,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -4317,9 +4320,9 @@ checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "send_wrapper" @@ -4374,14 +4377,14 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -4512,7 +4515,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee851d0e5e7af3721faea1843e8015e820a234f81fda3dea9247e15bac9a86a" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", ] [[package]] @@ -4606,7 +4609,7 @@ dependencies = [ "proc-macro2", "quote", "struct_iterable_internal", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -4634,7 +4637,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -4711,9 +4714,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.96" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -4737,7 +4740,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -4746,7 +4749,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -4769,13 +4772,13 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tempfile" -version = "3.15.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", "fastrand", - "getrandom 0.2.15", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -4813,7 +4816,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -4824,7 +4827,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -4932,7 +4935,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5025,9 +5028,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -5046,9 +5049,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", @@ -5094,7 +5097,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", "bytes", "http 1.2.0", "http-body", @@ -5152,7 +5155,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5224,7 +5227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5271,9 +5274,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-normalization" @@ -5344,18 +5347,18 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744018581f9a3454a9e15beb8a33b017183f1e7c0cd170232a2d1453b23a51c4" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.1", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" @@ -5365,9 +5368,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -5428,7 +5431,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", "wasm-bindgen-shared", ] @@ -5463,7 +5466,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5498,7 +5501,7 @@ checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5536,18 +5539,18 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd5da49bdf1f30054cfe0b8ce2958b8fbeb67c4d82c8967a598af481bef255c" +checksum = "09aed61f5e8d2c18344b3faa33a4c837855fe56642757754775548fee21386c4" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -5580,7 +5583,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -5648,8 +5651,8 @@ checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" dependencies = [ "windows-implement 0.59.0", "windows-interface 0.59.0", - "windows-result 0.3.1", - "windows-strings 0.3.1", + "windows-result 0.3.0", + "windows-strings 0.3.0", "windows-targets 0.53.0", ] @@ -5661,7 +5664,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5672,7 +5675,7 @@ checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5683,7 +5686,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -5694,23 +5697,17 @@ checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] -[[package]] -name = "windows-link" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" - [[package]] name = "windows-registry" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.3.1", - "windows-strings 0.3.1", + "windows-result 0.3.0", + "windows-strings 0.3.0", "windows-targets 0.53.0", ] @@ -5725,11 +5722,11 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +checksum = "d08106ce80268c4067c0571ca55a9b4e9516518eaa1a1fe9b37ca403ae1d1a34" dependencies = [ - "windows-link", + "windows-targets 0.53.0", ] [[package]] @@ -5744,11 +5741,11 @@ dependencies = [ [[package]] name = "windows-strings" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +checksum = "b888f919960b42ea4e11c2f408fadb55f78a9f236d5eef084103c8ce52893491" dependencies = [ - "windows-link", + "windows-targets 0.53.0", ] [[package]] @@ -6031,9 +6028,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.6.24" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] @@ -6054,22 +6051,22 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.8.0", ] [[package]] name = "wmi" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c960b3124cc00cefb350159cb43aba8984ed69c93d443df09f3299693171b37" +checksum = "7787dacdd8e71cbc104658aade4009300777f9b5fda6a75f19145fedb8a18e71" dependencies = [ "chrono", "futures", "log", "serde", "thiserror 2.0.11", - "windows 0.58.0", - "windows-core 0.58.0", + "windows 0.59.0", + "windows-core 0.59.0", ] [[package]] @@ -6170,15 +6167,15 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", "synstructure", ] [[package]] name = "z32" -version = "1.1.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb37266251c28b03d08162174a91c3a092e3bd4f476f8205ee1c507b78b7bdc" +checksum = "2164e798d9e3d84ee2c91139ace54638059a3b23e361f5c11781c2c6459bde0f" [[package]] name = "zerocopy" @@ -6207,7 +6204,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -6218,7 +6215,7 @@ checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -6238,7 +6235,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", "synstructure", ] @@ -6267,5 +6264,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ]