Skip to content

Releases: n0-computer/iroh

v0.97.0 - Custom Transports & noq

16 Mar 16:30

Choose a tag to compare

⛰️ Features

  • (iroh) [breaking] Dropping the endpoint ungracefully should log and error, but still clean up resources immediately (#3879) - (9cf417a)
  • (iroh) [breaking] Retain stats for closed and abandoned paths in the path watcher (#3899) - (b11e707)
  • (iroh) More precise information about incoming connections (#3949) - (abc349c)
  • (iroh) [breaking] Add address filtering and reordering for Address Lookup Services (#3960) - (d33a32f)
  • (iroh) Proper span for endpoints (#3988) - (e23f2f3)
  • (iroh) Allow propagation of addr filters through the endpoint (#4010) - (5df183d)
  • (iroh) Add tracing events for connections (#4021) - (f226881)
  • (iroh) [breaking] Cleanup preset API (#4014) - (759f14e)
  • (iroh-relay) Embeddable relay server (#3832) - (fe7f04f)
  • (netsim) Filter tests (#3946) - (1729243)
  • Allow to customize TLS trust roots (#3973) - (ba4ee62)
  • Implement custom transports (#3845) - (d434c85)
  • [breaking] Switch noq (#4005) - (b32c927)

🐛 Bug Fixes

  • (docs) Just a typo in the documentation for mdns discovery (#3929) - (cf6acb5)
  • (example) Always close the endpoint (#4007) - (afc1faa)
  • (iroh) Disable QAD if no IP transports are configured (#3926) - (aa14381)
  • (iroh) [breaking] Reexport full dns module from iroh-relay (#3916) - (523c93c)
  • (iroh) Don't depend on the unused relays ff of pkarr (#4004) - (2494255)
  • (iroh) [breaking] Don't publish IP addresses from PkarrPublisher by default (#4012) - (b3da940)
  • (iroh-relay) Turn off nagle for relayed streams in iroh-relay servers (#3995) - (82e0695)
  • (tests) Give test longer to not be flaky (#3939) - (1324c66)
  • Configure git identity in cleanup workflow - (dbe5112)
  • Increase DNS timeout and address lookup stagger intervals (#4008) - (993b018)

🚜 Refactor

  • (iroh) Avoid rustls feature flag use in resolver.rs (#3985) - (dd381a1)
  • (iroh) Use combinator approach for address filtering (#3987) - (a289f63)
  • (iroh, iroh-relay) [breaking] Relay should not kill old connections when same endpoint id connects (#3921) - (1b4ee2a)
  • (transfer example) Remove SelectedPath::Mixed as an impossible state (#3895) - (9cc8602)
  • Simplify path selection - (df6c396)
  • Update quinn and simplify path handling in RemoteStateActor (#3967) - (1ffb560)
  • Add doc comments, move code around, rename (#3977) - (1c5bd5b)
  • Remove special fast path for hickory resolver (#4022) - (7fc9fb9)

📚 Documentation

  • Fix typo in documentation comment for generate function (#4001) - (766097b)

⚙️ Miscellaneous Tasks

  • (ci) Add custom RUST_LOG support for netsim (#3942) - (d240360)
  • (ci) Colocate sims into iroh repo (#3957) - (403238a)
  • (ci) Add text summary for discord notification (#3962) - (6650c78)
  • (iroh) Add --logs and --mode ping features to transfer example (#3893) - (08b0b8a)
  • (iroh) Update noq commit, stop exposing AeadKey (#4003) - (bf07082)
  • (readme) Link to noq instead of Quinn (#3989) - (4033b3c)
  • Update to quinn main (#3938) - (3a45cd0)
  • Remove process and signal tokio features (#3993) - (086c6e8)
  • Update deps (#4006) - (df0777a)
  • Remove netdev from the direct dependencies (#4019) - (76609fd)
  • Update changelog generation command - (29c8c85)

Deps

  • Bump wasm-bindgen-test (#3966) - (f628359)
  • Upgrade away from yanked crate (#3982) - (1e4a738)
  • Prefer portable_atomic over native AtomicU64 (#3994) - (ae4877e)
  • Feature gate portmapper, and allow disabling portmapper by default. (#4011) - (647f28e)

Examples

  • (iroh) Improve transfer example with qlog f...
Read more

v0.96.1

09 Mar 08:48

Choose a tag to compare

chore: Release iroh-base version 0.96.1

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)