github n0-computer/iroh v0.30.0

one day ago

⚠️ Breaking Changes

  • iroh-base

    • removed
      • iroh_base::SharedSecret
      • iroh_base::DecryptionError, iroh::DecryptionError
      • iroh_base::SecretKey::shared
      • iroh_base::SecretKey::generate_with_rng, use generate directly
      • iroh_base::SecretKey::to_openssh
      • iroh_base::SecretKey::from_openssh
      • iroh_base::base32
      • iroh_base::node_addr::AddrInfo
      • iroh_base::node_addr::AddrInfoOptions
      • iroh_base::relay_map, use iroh_relay::relay_map
    • changed
      • iroh_base::node_addr::NodeAddr -> iroh_base::NodeAddr
      • iroh_base::relay_url::RelayUrl -> iroh_base::RelayUrl
      • iroh_base::SecretKey::generate now takes an rng
      • anyhow::Error is replaced with explicit errors for RelayUrl::from_str
      • anyhow::Error is replaced with explicit errors for SharedSecret::open
      • iroh_base::PUBLIC_KEY_LENGTH is moved from a top level constant to iroh_base::PublicKey::LENGTH
      • keys are now formatted using hex lowercase by default
      • keys still parse base32 encoded, for better backwards compatibility
      • introduce ticket feature for iroh_base, to use iroh_base::ticket
      • iroh_base::key exports moved to iroh_base: iroh_base::{KeyParsingError, NodeId, PublicKey, SecretKey, SharedSecret, Signature, PUBLIC_KEY_LENGTH}
  • iroh-net-report

    • changed
      • net_report::Client::get_report_channel now takes an opts: net_report::Options
      • net_report::Client will no longer bind UdpSockets when one is not provided for both STUN over IPv4 or STUN over IPv6.
      • iroh_net_report::Client::get_report takes new parameter quic_config: net_report::QuicConfig
      • iroh_net_report::Client::get_report_channel takes new parameter quic_config: net_report::QuicConfig
    • added
      • net_report::Client::get_report_with_options

iroh-relay

  • changed
    • iroh_relay::HttpClientBuilder::address_family_selector signature changed
    • server is not a default feature in iroh-relay anymore
  • ClientError has a number of unused variants removed.

iroh

  • MSRV changed to 1.81
  • removed
    • iroh::protocol::Router::get_protocol
    • iroh::protocol::RouterBuilder::get_protocol
    • iroh::protocol::ProtocolMap::get_typed
    • iroh::protocol::IntoArcAny
    • iroh::dialer::Dialer and iroh::dialer
    • iroh::tls
    • iroh::Endpoint::connect_by_node_id, use iroh::Endpoint::connect with a NodeId instead.
    • iroh::hash::{BlobFormat, Hash, HashAndFormat}, use iroh_blobs::{BlobFormat, Hash, HashAndFormat}
    • iroh::ticket::BlobTicket, use iroh_blobs::ticket::BlobTicket
    • iroh::endpoint::Bytes, use bytes::Bytes
    • iroh::Endpoint::watch_home_relay
      To migrate, use endpoint.home_relay().initialized().await? instead of endpoint.watch_home_relay().next().await and use endpoint.home_relay().stream() instead of endpoint.watch_home_relay().next().await.
    • DirectAddrsStream and ConnTypeStream, use iroh::watchable::WatcherStream for as named types instead.
  • changed
    • iroh::endpoint::NodeAddr moved to iroh::NodeAddr
    • iroh::Endpoint::conn_type_stream is renamed to iroh::Endpoint::conn_type and returns Result<Watcher<ConnectionType>> instead of Result<ConnectionTypeStream>
      To migrate, use endpoint.conn_type()?.stream() instead of endpoint.conn_type_stream()?.
    • iroh::Endpoint::home_relay now returns Watcher<Option<RelayUrl>> instead of Option<RelayUrl>.
      To migrate, use endpoint.home_relay().get()? instead of endpoint.home_relay().
    • iroh::protocol::ProtocolHandler::accept now takes &self instead of Arc<Self>
    • iroh::protocol::ProtocolHandler::shutdown now takes &self instead of Arc<Self>
    • iroh::protocol::RouterBuilder::accept now takes T: ProtocolHandler instead of Arc<dyn ProtocolHandler>
    • iroh::protocol::ProtocolMap is now private
    • struct iroh::config::Config has a new field zone_store
    • struct iroh::metrics::Metrics has a new field store_packets_expired

⛰️ Features

  • (iroh) [breaking] Remove get_protocol and the plumbing required for it (#3009) - (1323c9a)
  • (iroh) Remove Arc requirements from ProtocolHandler (#3010) - (8dfbc35)
  • (iroh, iroh-relay) [breaking] Remove Endpoint::connect_by_node_id and add #[doc(cfg(...))] annotations (#3015) - (95bcb62)
  • (iroh-dns-server) [breaking] Eviction of stale zonestore entries (#2997) - (74884f1)
  • (iroh-net) Add a Watchable struct for use in the Endpoint API (#2806) - (1a79a19)
  • (iroh-net-report) [breaking] Add QUIC address discovery probes (#3028) - (cf0f8cc)
  • (iroh-relay) [breaking] Use explicit key cache (#3053) - (d4f72fa)
  • (net-report) [breaking] Add net_report::Options to specify which probes you want to run (#3032) - (ac74c53)
  • (relay) Reloading certificate resolver (#2999) - (c37895b)
  • Implement RelayDatagramsQueue (#2998) - (b76500d)
  • [breaking] Reduce default feature dependents (#3005) - (321d8ff)
  • [breaking] Bump MSRV to 1.81 (#3033) - (6e009a8)
  • [breaking] Update to iroh-metrics@0.30.0 and portmapper@0.3.0 (#3054) - (dcd0b40)

🐛 Bug Fixes

  • (iroh) Poll all AsyncUdpSocket sources fairly (#2996) - (26c5248)
  • (iroh, iroh-relay) [breaking] Bypass magicsock::Actor for datagrams from the relay (#2986) - (0d06320)
  • (iroh-dns-server) Remove accidental blocking from store (#2985) - (647b2fd)

🚜 Refactor

  • (iroh) Remove with_cancel, use run_until_cancelled (#3000) - (f75a04b)
  • (iroh) Remove unused rate limiter (#3007) - (b2b070f)
  • (iroh) Rename the relay-is-ready-to-send waker (#3014) - (79bf3c3)
  • (iroh) [breaking] Remove dialer::Dialer (#3022) - (6a62c80)
  • (iroh) [breaking] Make iroh::tls private (#3018) - (0fe7e8b)
  • (iroh) [breaking] Improve reexport structure (#3023) - (d9fb470)
  • (iroh) Add send queue between relay actor and relays (#3026) - (af5a8c2)
  • (iroh) Rename ConnectedRelayActor to ActiveRelayActor (#3027) - (80bc8a3)
  • (iroh) Newtype the packet sent over relay servers (#3030) - (e7503c0)
  • (iroh) Remove genawaiter usage from dht discovery (#3048) - (738c773)
  • (iroh) Remove ActiveRelayMessage::GetClient (#3041) - (1ba140f)
  • (iroh, iroh-relay) JoinSet disabling in tokio::select! (#3052) - (a6f502c)
  • (iroh-base) [breaking] Remove hash and BlobTicket (#3036) - (ee72f6d)
  • (iroh-base) [breaking] Remove base32 module (#3042) - (542f56d)
  • (iroh-base) [breaking] Reduce dependencies (#3046) - (4a774f1)
  • (iroh-base) Remove automatic key caching (#3051) - (58df1d8)
  • (iroh-dns-server) Move db ops into an actor and implement write batching (#2995) - (cd9c188)
  • (iroh-relay) [breaking] Always allow acking pings (#3011) - (97082ec)
  • (iroh-relay) [breaking] Remove usesed errors. (#3012) - (c5d9e68)
  • (iroh-relay) [breaking] Remove async requirement from address_family_selector (#3044) - (8ec0d73)
  • Remove AddrInfo (#3024) - (6a988a5)
  • Remove parking-lot dependency (#3034) - (08671bb)
  • [breaking] Make PUBLIC_KEY_LENGTH a const that is on PublicKey (#3043) - (218aad3)
  • Unify hex encoding with data-encoding (#3047) - (a338289)

📚 Documentation

🧪 Testing

  • (iroh) Packet loss is expected with socket rebinding (#3001) - (e575af2)

⚙️ Miscellaneous Tasks

Don't miss a new iroh release

NewReleases is sending notifications on new releases.