Releases: n0-computer/iroh
Releases · n0-computer/iroh
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)
📚 Documentation
⚙️ Miscellaneous Tasks
v0.92.0
⚠️ Breaking Changes
iroh- added
- “passive” mode for mDNS discovery
MdnsDiscovery::new(node_id: NodeId)→MdnsDiscovery::new(node_id: NodeId, advertise: bool)
- “passive” mode for mDNS discovery
- changed
- The
subscribemethod for theDiscoverytrait now returns a stream ofDiscoveryEventrather than aDiscoveryItem. 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>>
- The
- added
⛰️ 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
📚 Documentation
- (iroh-relay) Remove incorrect help text about default config file creation (#3258) (#3446) - (4583b12)
⚙️ Miscellaneous Tasks
- (github) Update issue template (#3450) - (5e185bd)
- Update some dependencies (#3453) - (048001d)
- Make net reports serde (#3454) - (e8eb1dd)
- Add
test-utilscfg forinsecure_certcall in the transfer example (#3458) - (c81fe21)
Cargo
v0.91.2
chore: Release iroh-base version 0.91.2