Releases: n0-computer/iroh
Releases · n0-computer/iroh
v0.97.0 - Custom Transports & noq
⛰️ 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
relaysff of pkarr (#4004) - (2494255) - (iroh) [breaking] Don't publish IP addresses from
PkarrPublisherby 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::Mixedas 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
⚙️ 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
--logsand--mode pingfeatures 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...
v0.96.1
chore: Release iroh-base version 0.96.1
v0.96.0
⚠️ 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
- struct
- enum
iroh::endpoint::ConnectionTypewas removed, the closest equivalent isiroh::TransportAddr, which has variantsRelayandIp,- note: now that we can have multiple paths per connection, these types now describe paths not connections. Look at theiroh::endpoint::Connection::pathsmethod and theiroh::endpoint::PathInfostruct 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::Connectionnow has a type parameter:iroh::endpoint::Connectionis aliased fromConnection<HandshakeCompleted>iroh::endpoint::IncomingZeroRttConnectionis aliased fromConnection<IncomingZeroRtt>iroh::endpoint::IncomingZeroRttConnectionis aliased fromConnection<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 toiroh::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 toiroh::endpoint::Incoming::retry(self) -> Result<(), iroh::endpoin::RetryError> - variant
iroh::endpoint::ConnectWithOptsError::NoAddress: source iroh::endpoint::GetMappingAddressErrorchanged toiroh::endpoint::ConnectWithOptsError::NoAddress: source iroh::discovery::DiscoveryError
Net Report
- struct
iroh::net_report::Reportis nowiroh::NetReport - const
iroh::net_report::TIMEOUTis nowiroh::NET_REPORT_TIMEOUT
Server & Transport Config
- struct
iroh::endpoint::ServerConfig, use theiroh::endpoint::Endpoint::create_server_config_builderto get aServerConfigBuilder, which allows you to add custom configuration for when the endpoint acts as a server that accepts connections - struct
iroh::endpoint::TransportConfigis nowiroh::endpoint::QuicTransportConfig, use theiroh::endpoint::QuicTransportConfig::buildermethod to get aQuicTransportConfigBuilderto add custom configuration for the QUIC transport - fn
iroh::endpoint::Builder::transport_config(self, transport_config: iroh_quinn_proto::config::transport::TransportConfig) -> Selfchanged tofn 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 byiroh::endpoint::Builder::bind_addr(self, addr: ToSocketAddr)-> Result<Self, InvalidSocketAddr>iroh::endpoint::Builder::bind_addr_v6(self, addr: SocketAddrV6)was replaced byiroh::endpoint::Builder::bind_addr(self, addr: ToSocketAddr)-> Result<Self, InvalidSocketAddr>
Metrics
iroh::metrics::MagicsockMetricshas entirely new set of fields
Discovery → AddressLookup
- module
iroh::discoveryrenamed toiroh::address_lookup - trait
iroh::discovery::Discoveryrenamed toiroh::address_lookup::AddressLookup - fn
iroh::endpoint::Endpoint::discoveryrenamed toiroh::endpoint::Endpoint::address_lookup - fn
iroh::endpoint::Builder::set_user_data_for_discoveryrenamed toiroh::endpoint::Builder::set_user_data_for_address_lookup - fn
iroh::endpoint::Builder::discoveryrenamed toiroh::endpoint::Builder::address_lookup - struct
iroh::discovery::MdnsDiscoveryrenamed toiroh::address_lookup::MdnsAddressLookup - struct
iroh::discovery::DhtDiscoveryrenamed toiroh::address_lookup::DhtAddressLookup - struct
iroh::discovery::StaticDiscoveryrenamed toiroh::address_lookup::MemoryLookup - trait
iroh::discovery::DynIntoDiscoveryrenamed toiroh::address_lookup::DynIntoAddressLookup - trait
iroh::discovery::IntoDiscoveryrenamed toiroh::address_lookup::IntoAddressLookup - struct
iroh::discovery::DnsDiscoveryrenamed toiroh::address_lookup::DnsAddressLookup - enum
iroh::discovery::DiscoveryErrorrenamed toiroh::address_lookup::AddressLookupError - enum
iroh::discovery::IntoDiscoveryErrorrenamed toiroh::address_lookup::IntoAddressLookupError - struct
iroh::discovery::DiscoveryItemrenamed toiroh::address_lookup::AddressLookupItem - struct
iroh::discovery::ConcurrentDiscoveryrenamed toiroh::address_lookup::ConcurrentAddressLookup - feature
discovery-local-networkrenamed toaddress-lookup-mdns - feature
discovery-pkarr-dhtrenamed toaddress-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::TransportConfigto enforce certain minimums when used with multipath (#3721) - (cc932ef) - (iroh) Improve shutdown handling - (bb3e94a)
- (iroh) [breaking] Newtype
ServerConfigandRetryError, 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...
v0.95.1
chore: Release iroh-base version 0.95.1
v0.95.0
⚠️ 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
snafuerrors ton0-errorerrors. ConnectError::Connection- fields changedAcceptError::Connection- fields changedAcceptError::MissingRemoteEndpointId- fields changedAcceptError::NotAllowed- fields changedAcceptError::User- fields changedConnecting::into_0rtt-> returnsResult<OutgoingZeroRttConnection, Connecting>
- All errors have changed from
removedProtocolHandler::on_connecting()removed - implementon_accepting()instead, which takesAcceptingrather thanConnectingDynProtocolHandler::on_connecting()removed - implementon_accepting()insteadiroh::endpoint::IncomingFuture- useAcceptinginsteadiroh::endpoint::ZeroRttAccepted- replaced by explicit 0-RTT connection types
- changed
⛰️ Features
- (iroh-relay) Allow for extension of
RelayMaps (#3575) - (45e1f48) - Add new NA west default relay (#3599) - (828789a)
- Make
Connection::remote_idandConnection::alpninfallible (#3556) - (e2dc591)
🐛 Bug Fixes
- Remove "https" from NA west url (#3600) - (c2bdbe2)
- Stop relay actor on endpoint close (#3601) - (30c23e8)
🚜 Refactor
📚 Documentation
- (iroh) Fix documentation on endpoint::Builder::empty (#3592) - (71d5136)
- (iroh) Clarify ProtocolHandler::accept (#3567) - (406bfde)
⚙️ Miscellaneous Tasks
v0.94.1
chore: Release iroh-base version 0.94.1
v0.94.0
⚠️ Breaking Changes
iroh- renamed
iroh_relay::RelayNode->RelayConfigiroh_base::NodeAddr->EndpointAddriroh_base::NodeAddr.node_id->endpoint_idiroh_base::NodeId->EndpointIdiroh_base::NodeTicket->EndpointTicketiroh::Endpoint::node_addr->iroh::Endpoint::addriroh::Endpoint::watch_node_addr->iroh::Endpoint::watchaddriroh::Endpoint::node_id->iroh::Endpoint::idiroh_relay::RelayMap::urlsiroh_relay::RelayMap::nodesiroh_relay::RelayMap::get_nodedirect_addressesare now calledip_addressesEndpointAddrtype is completely changed- Use
EndpointAddr::ip_addrsto get a list of ip addresses for this endpoint - Use
EndpointAddr::relay_urlsto 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
- Use
- APIs with
addresse(s)are now normalized toaddr(s)to be consistent in the code base
- removed
iroh::Endpoint::add_node_addr_with_sourceis removed. Use a discovery service instead.
- added
iroh_base::Signaturewhich replacesed25519_dalek::Signaturein the public API ofiroh_baseiroh::Endpoint::insert_relayiroh::Endpoint::remove_relayiroh::Endpoint::RelayMap::insertiroh::Endpoint::RelayMap::remove
- renamed
iroh-relay- wire-level breaking change
iroh-relayservers can no longer issue captive portal challenges to pre0.93iroh nodes
- wire-level breaking change
iroh-base- changed
iroh_baseerror types have changed
- removed
IntoandFromconversions forPublicKey-ed25519_dalek::VerifyingKeyIntoandFromconversions forSecretKey-ed25519_dalek::SigningKey- removed
tickets fromiroh-base, they are now in their owniroh-ticketcrate
- changed
⛰️ Features
- (iroh) Allow to override provenance for StaticProvider (#3527) - (3d92f6b)
- (iroh) [breaking] Allow dynamic changing of the
RelayMapof 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
🧪 Testing
- (iroh) Fix flaky test_active_relay_inactive - (b29c158)
⚙️ Miscellaneous Tasks
v0.93.2
v0.93.1
v0.93.0
⚠️ Breaking Changes
- iroh
-
removed
MdnsDiscovery::newis now privateMdnsDiscoveryBuilder::newis now private- Use
MdnsDiscovery::builder()to create anMdnsDiscoveryBuilder - Use
MdnsDiscoveryBuilder::default()to create anMdnsDiscoveryBuilder
- Use
iroh::Endpoint::direct_addressesiroh::Endpoint::home_relayiroh::Endpoint::add_node_addriroh::Endpoint::remote_infoiroh::Endpoint::remote_info_iteriroh::RemoteInfoiroh::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::onlineiroh::Endpoint::watch_node_addr
-
changed
- API Changes
-
iroh::Endpoint::node_addrnow returns synchronously the current addressing information -
iroh::Endpoint::watch_node_addrnow returns a watchable forNodeAddrnotOption<NodeAddr> -
iroh::discovery::mdns::DiscoveryItem -
iroh::Endpoint::latency -
iroh::PublicKey::fmt_shortnow returns aimpl Displayrather than aStringTo use it conveniently in
tracingorloggingprecede thefmt_short()call with a%:tracing::info!(node_id = %node_id.fmt_short())
-
- API Changes
-
wire breaking changes
- Default service name changed from
iroh.local.swarmtoirohv1 - Provenance field name in
DiscoveryItemchanged fromlocal.swarm.discoverytomdns - Switches to use
X-Irohheaders for the captive portal challenges, this is currently backwards compatible and will remain so until the next release
- Default service name changed from
-
⛰️ Features
- (iroh) [breaking] Add
MdnsDiscoveryBuilder::service_namemethod (#3482) - (9a88cc5) - (iroh) [breaking] Introduce
onlinemethod (#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
- (iroh) Convert to canonical IP address in IpSender (#3506) - (44c3c27)
- (iroh) Updated relays, and transfer example fixes (#3510) - (da311a6)
- (relay) Respect enable_relay flag (#3481) - (427fcad)
- Force reqwest to always use rustls backend (#3486) - (60d5310)
impl<T: Discovery> Discovery for Arc<T>(#3495) - (f5381bc)- 0rtt flakes (#3496) - (9e61af5)
🚜 Refactor
- (iroh) [breaking] Remove Endpoint::add_node_addr (#3485) - (0ffadef)
- Rename last two
local_endpointsusages todirect_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)