Skip to content

Releases: n0-computer/iroh

v0.96.0

28 Jan 18:44

Choose a tag to compare

⚠️ Breaking Changes

removed

  • enum iroh::endpoint::AddEndpointAddrError
  • enum iroh::endpoint::GetMappingAddressError
  • mod iroh::net_report:
    • struct iroh::net_report::Metrics
    • enum iroh::net_report::Probe
    • struct iroh::net_report::RelayLatencies
    • struct iroh::net_report::Options
    • struct iroh::net_report::QuicConfig
  • enum iroh::endpoint::ConnectionType was removed, the closest equivalent is iroh::TransportAddr, which has variants Relay and Ip,- note: now that we can have multiple paths per connection, these types now describe paths not connections. Look at the iroh::endpoint::Connection::paths method and the iroh::endpoint::PathInfo struct for more details on how you can learn the type of the currently selected path.
  • enum iroh::endpoint::ControlMsg
  • enum iroh::endpoint::AuthenticationError
  • enum iroh::endpoint::AddEndpointAddrError
  • enum iroh::endpoint::DirectAddrInfo
  • enum iroh::endpoint::GetMappingAddressError
  • struct iroh::endpoint::CryptoServerConfig
  • struct iroh::endpoint::RetryError
  • struct iroh::endpoint::WeakConnectionHandle
  • fn iroh::endpoint::AuthenticationError::from(source: iroh_quinn_proto::connection::ConnectionError) -> Self
  • fn iroh::endpoint::Endpoint::conn_type(&self, endpoint_id: iroh_base::key::EndpointId) -> Option<n0_watcher::Direct<iroh::endpoint::ConnectionType>>
  • fn iroh::endpoint::Endpoint::latency(&self, endpoint_id: iroh_base::key::EndpointId) -> Option<core::time::Duration>
  • variant iroh::endpoint::AuthenticationErrro::ConnectionError
  • variant iroh::endpoint::ConnectWithOptsError::AddEndpointAddr
  • variant iroh::endpoint::Source::Saved

Changed

Connection Changes

  • struct iroh::endpoint::Connection now has a type parameter:
    • iroh::endpoint::Connection is aliased from Connection<HandshakeCompleted>
    • iroh::endpoint::IncomingZeroRttConnection is aliased from Connection<IncomingZeroRtt>
    • iroh::endpoint::IncomingZeroRttConnection is aliased from Connection<OutgoingZeroRtt>
  • fn iroh::endpoint::Incoming::accept_with(self, server_config: Arc<iroh_quinn_proto::config::ServerConfig>) -> Result<iroh::endpoint::Accepting, iroh_quinn_proto::connection::ConnectionError> changed to iroh::endpoint::Incoming::accept_with(self, server_config: Arc<iroh::endpoint::ServerConfig) -> Result<iroh::endpoint::Accepting, iroh::endpoint::ConnectionError>
  • fn iroh::endpoint::Incoming::retry(self) -> core::result::Result<(), iroh_quinn::incoming::RetryError> changed to iroh::endpoint::Incoming::retry(self) -> Result<(), iroh::endpoin::RetryError>
  • variant iroh::endpoint::ConnectWithOptsError::NoAddress: source iroh::endpoint::GetMappingAddressError changed to iroh::endpoint::ConnectWithOptsError::NoAddress: source iroh::discovery::DiscoveryError

Net Report

  • struct iroh::net_report::Report is now iroh::NetReport
  • const iroh::net_report::TIMEOUT is now iroh::NET_REPORT_TIMEOUT

Server & Transport Config

  • struct iroh::endpoint::ServerConfig, use the iroh::endpoint::Endpoint::create_server_config_builder to get a ServerConfigBuilder, which allows you to add custom configuration for when the endpoint acts as a server that accepts connections
  • struct iroh::endpoint::TransportConfig is now iroh::endpoint::QuicTransportConfig, use the iroh::endpoint::QuicTransportConfig::builder method to get a QuicTransportConfigBuilder to add custom configuration for the QUIC transport
  • fn iroh::endpoint::Builder::transport_config(self, transport_config: iroh_quinn_proto::config::transport::TransportConfig) -> Self changed to fn iroh::endpoint::Builder::transport_config(self, transport_config: iroh::endpoint::QuicTransportConfig) -> Self

Bind Address

  • iroh::endpoint::Builder::bind_addr_v4(self, addr: SocketAddrV4) was replaced by iroh::endpoint::Builder::bind_addr(self, addr: ToSocketAddr)-> Result<Self, InvalidSocketAddr>
  • iroh::endpoint::Builder::bind_addr_v6(self, addr: SocketAddrV6) was replaced by iroh::endpoint::Builder::bind_addr(self, addr: ToSocketAddr)-> Result<Self, InvalidSocketAddr>

Metrics

  • iroh::metrics::MagicsockMetrics has entirely new set of fields

Discovery → AddressLookup

  • module iroh::discovery renamed to iroh::address_lookup
  • trait iroh::discovery::Discovery renamed to iroh::address_lookup::AddressLookup
  • fn iroh::endpoint::Endpoint::discovery renamed to iroh::endpoint::Endpoint::address_lookup
  • fn iroh::endpoint::Builder::set_user_data_for_discovery renamed to iroh::endpoint::Builder::set_user_data_for_address_lookup
  • fn iroh::endpoint::Builder::discovery renamed to iroh::endpoint::Builder::address_lookup
  • struct iroh::discovery::MdnsDiscovery renamed to iroh::address_lookup::MdnsAddressLookup
  • struct iroh::discovery::DhtDiscovery renamed to iroh::address_lookup::DhtAddressLookup
  • struct iroh::discovery::StaticDiscovery renamed to iroh::address_lookup::MemoryLookup
  • trait iroh::discovery::DynIntoDiscovery renamed to iroh::address_lookup::DynIntoAddressLookup
  • trait iroh::discovery::IntoDiscovery renamed to iroh::address_lookup::IntoAddressLookup
  • struct iroh::discovery::DnsDiscovery renamed to iroh::address_lookup::DnsAddressLookup
  • enum iroh::discovery::DiscoveryError renamed to iroh::address_lookup::AddressLookupError
  • enum iroh::discovery::IntoDiscoveryError renamed to iroh::address_lookup::IntoAddressLookupError
  • struct iroh::discovery::DiscoveryItem renamed to iroh::address_lookup::AddressLookupItem
  • struct iroh::discovery::ConcurrentDiscovery renamed to iroh::address_lookup::ConcurrentAddressLookup
  • feature discovery-local-network renamed to address-lookup-mdns
  • feature discovery-pkarr-dht renamed to address-lookup-pkarr-dht

⛰️ Features

  • (example) Improve path stat printing in transfer example (#3860) - (c168e73)
  • (iroh) Introduce EndpointHooks (#3688) - (1efd2b5)
  • (iroh) Add fast-apple-datapath feature and enable it by default (#3724) - (a5f4a08)
  • (iroh) [breaking] Encapsulate the quinn::TransportConfig to enforce certain minimums when used with multipath (#3721) - (cc932ef)
  • (iroh) Improve shutdown handling - (bb3e94a)
  • (iroh) [breaking] Newtype ServerConfig and RetryError, organize the quinn re-exports (#3757) - (aa6b918)
  • (iroh) Implement latency based connection updates (#3797) - (5cb5716)
  • (iroh) Ping paths and trigger holepunching on networkchange (#3796) - (ff24cfc)
  • (iroh) [breaking] Allow multiple IP transports, including filtering by interface (#3692) - (2359acf)
  • (metrics) Add connection latency tracking (#3606) - (b7e5bb0)
  • (multipath) Add back basic metrics (#3672) - (faa2119)
  • (relay,dns) Add healthz routes (#3783) - (31a6b10)
  • Do not force relay URLs to be absolute (#3623) - (9bae228)
  • Add AcceptError::from_boxed (#3620) - (280cfc6)
  • Relay only configuration - (7f17d98)
  • Instead of duplicating the entire connection API, have a type parameter (#3619) - (5809a56)
  • Prune old, inactive paths (#3666) - (7fb80b9)
  • Qlog support in iroh - (2d9681c)
  • Expose known remote addrs (#3752) - (4c4f242)
  • Add must_use attributes to Router::spawn (#3772) - (0a9b7a0)
  • Improve RelayMap and RelayMode configuration ([#37...
Read more

v0.95.1

21 Nov 08:54

Choose a tag to compare

chore: Release iroh-base version 0.95.1

v0.95.0

04 Nov 19:07

Choose a tag to compare

⚠️ Breaking Changes

  • iroh-dns-server
    • upgraded to redb version 3 - you much run with version 0.93 at least once to upgrade the database
  • iroh
    • changed
      • All errors have changed from snafu errors to n0-error errors.
      • ConnectError::Connection - fields changed
      • AcceptError::Connection - fields changed
      • AcceptError::MissingRemoteEndpointId - fields changed
      • AcceptError::NotAllowed - fields changed
      • AcceptError::User - fields changed
      • Connecting::into_0rtt -> returns Result<OutgoingZeroRttConnection, Connecting>
    • removed
      • ProtocolHandler::on_connecting() removed - implement on_accepting() instead, which takes Accepting rather than Connecting
      • DynProtocolHandler::on_connecting() removed - implement on_accepting() instead
      • iroh::endpoint::IncomingFuture - use Accepting instead
      • iroh::endpoint::ZeroRttAccepted - replaced by explicit 0-RTT connection types

⛰️ Features

  • (iroh-relay) Allow for extension of RelayMaps (#3575) - (45e1f48)
  • Add new NA west default relay (#3599) - (828789a)
  • Make Connection::remote_id and Connection::alpn infallible (#3556) - (e2dc591)

🐛 Bug Fixes

🚜 Refactor

  • [breaking] Convert from snafu to n0-error (#3561) - (7b9c95b)

📚 Documentation

  • (iroh) Fix documentation on endpoint::Builder::empty (#3592) - (71d5136)
  • (iroh) Clarify ProtocolHandler::accept (#3567) - (406bfde)

⚙️ Miscellaneous Tasks

  • (iroh) Update wasm-bindgen version to fix CI (#3589) - (0f4c15c)
  • [breaking] Update redb to version 3 (#3562) - (b057b91)

v0.94.1

21 Nov 08:54

Choose a tag to compare

chore: Release iroh-base version 0.94.1

v0.94.0

21 Oct 17:42

Choose a tag to compare

⚠️ Breaking Changes

  • iroh
    • renamed
      • iroh_relay::RelayNode -> RelayConfig
      • iroh_base::NodeAddr -> EndpointAddr
      • iroh_base::NodeAddr.node_id -> endpoint_id
      • iroh_base::NodeId -> EndpointId
      • iroh_base::NodeTicket -> EndpointTicket
      • iroh::Endpoint::node_addr -> iroh::Endpoint::addr
      • iroh::Endpoint::watch_node_addr -> iroh::Endpoint::watchaddr
      • iroh::Endpoint::node_id -> iroh::Endpoint::id
      • iroh_relay::RelayMap::urls
      • iroh_relay::RelayMap::nodes
      • iroh_relay::RelayMap::get_node
      • direct_addresses are now called ip_addresses
      • EndpointAddr type is completely changed
        • Use EndpointAddr::ip_addrs to get a list of ip addresses for this endpoint
        • Use EndpointAddr::relay_urls to get a list of relay urls for this endpoint
          • currently, there will only be one relay url per endpoint, but in the future, beyond 1.0, we will potentially have multiple
      • APIs with addresse(s) are now normalized to addr(s) to be consistent in the code base
    • removed
      • iroh::Endpoint::add_node_addr_with_source is removed. Use a discovery service instead.
    • added
      • iroh_base::Signature which replaces ed25519_dalek::Signature in the public API of iroh_base
      • iroh::Endpoint::insert_relay
      • iroh::Endpoint::remove_relay
      • iroh::Endpoint::RelayMap::insert
      • iroh::Endpoint::RelayMap::remove
  • iroh-relay
    • wire-level breaking change
      • iroh-relay servers can no longer issue captive portal challenges to pre 0.93 iroh nodes
  • iroh-base
    • changed
      • iroh_base error types have changed
    • removed
      • Into and From conversions for PublicKey - ed25519_dalek::VerifyingKey
      • Into and From conversions for SecretKey - ed25519_dalek::SigningKey
      • removed ticket s from iroh-base , they are now in their own iroh-ticket crate

⛰️ Features

  • (iroh) Allow to override provenance for StaticProvider (#3527) - (3d92f6b)
  • (iroh) [breaking] Allow dynamic changing of the RelayMap of an endpoint (#3522) - (7a0644f)
  • (iroh) Introduce endpoint presets (#3523) - (2d367f9)
  • (iroh-base) [breaking] Reduce external types in the iroh-base API for keys (#3529) - (b45ae27)
  • (iroh-relay) [breaking] Remove support for legacy headers (#3539) - (f7692df)
  • [breaking] Transport generic EndpointAddr (#3554) - (9cb4020)

🐛 Bug Fixes

  • (iroh) Improve reusing of QAD reports (#3512) - (b2a55bf)
  • Flakey test simple_node_id_based_connection_transfer (#3534) - (0f86c38)

🚜 Refactor

  • (iroh) [breaking] Finish removal of add_node_addr from public api (#3528) - (c2fce51)
  • (iroh) Remove stun-rs (#3546) - (bafde6f)
  • (iroh-base) [breaking] Move tickets into their own crate (#3544) - (25cea67)
  • (iroh-relay) [breaking] Improve relay map api (#3563) - (a6b8456)
  • [breaking] Rename Node to Endpoint in all cases (#3542) - (bfc6ba0)

📚 Documentation

  • (iroh) Fix docstring for ProtocolHandler (#3558) - (b7baaeb)

🧪 Testing

  • (iroh) Fix flaky test_active_relay_inactive - (b29c158)

⚙️ Miscellaneous Tasks

v0.93.2

14 Oct 08:53

Choose a tag to compare

🐛 Bug Fixes

  • (iroh) Ensure initial addresses are published via discovery (#3525) - (ca85faa)

v0.93.1

13 Oct 09:41

Choose a tag to compare

📚 Documentation

v0.93.0

09 Oct 00:54

Choose a tag to compare

⚠️ Breaking Changes

  • iroh
    • removed

      • MdnsDiscovery::new is now private
      • MdnsDiscoveryBuilder::new is now private
        • Use MdnsDiscovery::builder() to create an MdnsDiscoveryBuilder
        • Use MdnsDiscoveryBuilder::default() to create an MdnsDiscoveryBuilder
      • iroh::Endpoint::direct_addresses
      • iroh::Endpoint::home_relay
      • iroh::Endpoint::add_node_addr
      • iroh::Endpoint::remote_info
      • iroh::Endpoint::remote_info_iter
      • iroh::RemoteInfo
      • iroh::discovery::DiscoveryItem
      • “examples” feature is removed, you no longer need to include it in the list of features to run an example
    • added

      • MdnsDiscoveryBuilder::service_name()
      • iroh::Endpoint::online
      • iroh::Endpoint::watch_node_addr
    • changed

      • API Changes
        • iroh::Endpoint::node_addr now returns synchronously the current addressing information

        • iroh::Endpoint::watch_node_addr now returns a watchable for NodeAddr not Option<NodeAddr>

        • iroh::discovery::mdns::DiscoveryItem

        • iroh::Endpoint::latency

        • iroh::PublicKey::fmt_short now returns a impl Display rather than a String

          To use it conveniently in tracing or logging precede the fmt_short() call with a %:

          tracing::info!(node_id = %node_id.fmt_short())
    • wire breaking changes

      • Default service name changed from iroh.local.swarm to irohv1
      • Provenance field name in DiscoveryItem changed from local.swarm.discovery to mdns
      • Switches to use X-Iroh headers for the captive portal challenges, this is currently backwards compatible and will remain so until the next release

⛰️ Features

  • (iroh) [breaking] Add MdnsDiscoveryBuilder::service_name method (#3482) - (9a88cc5)
  • (iroh) [breaking] Introduce online method (#3467) - (d815cae)
  • (iroh) [breaking] Make direct_addresses always be initialised (#3505) - (33aca18)
  • Make fmt_short return an impl Display so we can avoid an allocation. (#3460) - (5285cc0)
  • Upgrade redb to v3 compatible format (#3483) - (2b36b77)
  • Add a DNS resolver trait (#3473) - (7bd657e)
  • Add a builder for DnsResolver (#3475) - (1fb68ef)
  • Upgrade to rand@0.9 (#3465) - (78649a3)
  • Congestion metrics (#3491) - (b6c60d3)

🐛 Bug Fixes

🚜 Refactor

  • (iroh) [breaking] Remove Endpoint::add_node_addr (#3485) - (0ffadef)
  • Rename last two local_endpoints usages to direct_addresses (#3472) - (9c8540f)
  • [breaking] Switch to iroh headers for captive portal checks (#3488) - (d6f33f9)
  • [breaking] Move examples deps to non-wasm dev deps (#3509) - (81e340f)

📚 Documentation

  • (iroh) Add screening-connection example (#3360) - (797fae6)

⚙️ Miscellaneous Tasks

  • Bump some spans up to warn, to ensure they are logged (#3466) - (2e42085)
  • Enable dependabot for crates and docker (#3497) - (968a70b)

v0.92.0

18 Sep 19:40

Choose a tag to compare

⚠️ Breaking Changes

  • iroh
    • added
      • “passive” mode for mDNS discovery
        • MdnsDiscovery::new(node_id: NodeId) → MdnsDiscovery::new(node_id: NodeId, advertise: bool)
    • changed
      • The subscribe method for the Discovery trait now returns a stream of DiscoveryEvent rather than a DiscoveryItem. A discovery event now includes expiry events that notify you when a node that was passively discovered (usually by mDNS) can no longer be found.
        • fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>fn subscribe(&self) -> Option<BoxStream<DiscoveryEvent>>

⛰️ Features

  • (iroh) [breaking] Add passive mode for mdns discovery (#3401) (#3403) - (c5a623c)
  • (iroh) [breaking] Emit mDNS expiry events (#3409) - (150b841)
  • (iroh-base) Impl Deref for PublicKey (#3438) - (fa1e946)
  • Allow configuring the max number of TLS tickets (#3442) - (d6f4fa9)

🐛 Bug Fixes

🚜 Refactor

  • (iroh) Re-batch datagrams inside RelayTransport instead of the ActiveRelayActor (#3421) - (b791123)

📚 Documentation

  • (iroh-relay) Remove incorrect help text about default config file creation (#3258) (#3446) - (4583b12)

⚙️ Miscellaneous Tasks

Cargo

v0.91.2

25 Aug 16:38

Choose a tag to compare

chore: Release iroh-base version 0.91.2