v0.91.0
⚠️ Breaking Changes
-
iroh- changed
-
edition is now set to
edition2024 -
The relay wire protocol changed: All relayed messages now contain at least an additional ECN byte.
They might be accidentally compatible when GSO is not enabled, but they're likely not.
This means this version of iroh can't connect to older relays or older clients on newer relays.
ClientToRelayMsg::SendPacketwas removed in favor ofClientToRelayMsg::DatagramsRelayToClientMsg::ReceivedPacketwas removed in favor ofRelayToClientMsg::DatagramsFrameTypehas changed variants:SendPacketandRecvPacketwere removedClientToRelayDatagramandClientToRelayDatagramBatchwere addedRelayToClientDatagramandRelayToClientDatagramBatchwere added
-
The default relay URLs have changed. We are still maintaining relay URLs for version
0.90.0, those will be phased out next release. -
Updated
n0-watcherfrom version0.2to0.3- Migration guide for users:
endpoint.node_addr().initialized().await?->endpoint.node_addr().initialized().await(no?needed anymore) and similarly forendpoint.home_relay()and other uses ofWatchers.endpoint.node_addr().get()?->endpoint.node_addr().get()and similarly forendpoint.home_relay()and other uses ofWatchers.- If all you have is a
&impl Watcherbut you need the current value, then you can't callWatcher::getanymore, as that now takes a&mut selfinstead of&self. You can work around this by.clone()ing to an intermediate watcher:watcher_ref.get()->watcher_ref.clone().get()
- Migration guide for users:
-
- removed
- Removed
iroh::discovery::pkarr::dht::Builder::initial_publish_delay - Removed
iroh::endpoint::Builder::relay_conn_protocol. It's now always websockets - Removed the
iroh::RelayProtocolre-export (the type was removed iniroh-relay)
- Removed
- changed
-
iroh-relay- removed
- Removed
iroh_relay::client::SendMessageandiroh_relay::client::ReceivedMessagein favor ofClientToRelayMsgandRelayToClientMsgrespectively. - Removed
ClientBuilder::is_prober - Removed
ClientBuilder::protocol - Removed
http::Protocoltype - Removed
relay_acceptsandwebsocket_acceptsmetrics
- Removed
- changed
impl Stream for Clientnow producesRelayToClientMsginstead ofReceivedMessageClientnowimpl Sink<ClientToRelayMsg>instead ofimpl Sink<SendMessage>- Moved
protos::relay::FrameTypetoprotos::common::FrameTypeand adjusted frame types to those of the current set of protocols - Renamed
frames_rx_ratelimited_totalmetric tobytes_rx_ratelimited_total, which now tracks bytes not frames
- removed
⛰️ Features
- (iroh) Update to new relay servers (#3412) - (f3e4307)
- (iroh,iroh-relay) [breaking] Use stride instead of custom split protocol, send ECN bits (#3389) - (f3fd988)
- (iroh-relay) [breaking] Implement new handshake protocol, refactor frame types (#3331) - (3a1592a)
- [breaking] Update to edition 2024 and update deps to latest (#3386) - (e2cfde7)
- Add the timeout duration to the relay dial error (#3406) - (db36c65)
🐛 Bug Fixes
- (iroh) Use std Mutex instead of tokio Mutex (#3374) - (eb383a6)
- (iroh) Track path validity for all paths and replace
BestAddrwithPathValidity(#3400) - (a3187ca) - (iroh) Re-batch received relay datagram batches in case they exceed
max_receive_segments(#3414) - (a8485ad) - (iroh) Only clear
last_call_me_maybewhen the best addr became invalid (#3415) - (bcb60d4) - (iroh-relay) Fix proptests, make
Datagrams::segment_sizebe anOption<NonZeroU16>(#3404) - (75fd57c) - Fix dht publishing at startup (#3397) - (dd1d692)
- Better tracing spans (#3399) - (f8f7f95)
- Add missing use<> for wasm_browser (#3411) - (91c2e63)
- Wait for at least one ipv6 and ipv4 qad report (#3413) - (b755db4)