Releases: n0-computer/iroh
Releases · n0-computer/iroh
v0.30.0
⚠️ Breaking Changes
-
iroh-base
- removed
iroh_base::SharedSecret
iroh_base::DecryptionError
,iroh::DecryptionError
iroh_base::SecretKey::shared
iroh_base::SecretKey::generate_with_rng
, usegenerate
directlyiroh_base::SecretKey::to_openssh
iroh_base::SecretKey::from_openssh
iroh_base::base32
iroh_base::node_addr::AddrInfo
iroh_base::node_addr::AddrInfoOptions
iroh_base::relay_map
, useiroh_relay::relay_map
- changed
iroh_base::node_addr::NodeAddr
->iroh_base::NodeAddr
iroh_base::relay_url::RelayUrl
->iroh_base::RelayUrl
iroh_base::SecretKey::generate
now takes an rnganyhow::Error
is replaced with explicit errors forRelayUrl::from_str
anyhow::Error
is replaced with explicit errors forSharedSecret::open
iroh_base::PUBLIC_KEY_LENGTH
is moved from a top level constant toiroh_base::PublicKey::LENGTH
- keys are now formatted using
hex
lowercase by default - keys still parse base32 encoded, for better backwards compatibility
- introduce
ticket
feature foriroh_base
, to useiroh_base::ticket
iroh_base::key
exports moved toiroh_base
:iroh_base::{KeyParsingError, NodeId, PublicKey, SecretKey, SharedSecret, Signature, PUBLIC_KEY_LENGTH}
- removed
-
iroh-net-report
- changed
net_report::Client::get_report_channel
now takes anopts: net_report::Options
net_report::Client
will no longer bindUdpSocket
s when one is not provided for both STUN over IPv4 or STUN over IPv6.iroh_net_report::Client::get_report
takes new parameterquic_config: net_report::QuicConfig
iroh_net_report::Client::get_report_channel
takes new parameterquic_config: net_report::QuicConfig
- added
net_report::Client::get_report_with_options
- changed
iroh-relay
- changed
iroh_relay::HttpClientBuilder::address_family_selector
signature changedserver
is not a default feature iniroh-relay
anymore
ClientError
has a number of unused variants removed.
iroh
- MSRV changed to 1.81
- removed
iroh::protocol::Router::get_protocol
iroh::protocol::RouterBuilder::get_protocol
iroh::protocol::ProtocolMap::get_typed
iroh::protocol::IntoArcAny
iroh::dialer::Dialer
andiroh::dialer
iroh::tls
iroh::Endpoint::connect_by_node_id
, useiroh::Endpoint::connect
with aNodeId
instead.iroh::hash::{BlobFormat, Hash, HashAndFormat}
, useiroh_blobs::{BlobFormat, Hash, HashAndFormat}
iroh::ticket::BlobTicket
, useiroh_blobs::ticket::BlobTicket
iroh::endpoint::Bytes
, usebytes::Bytes
iroh::Endpoint::watch_home_relay
To migrate, useendpoint.home_relay().initialized().await?
instead ofendpoint.watch_home_relay().next().await
and useendpoint.home_relay().stream()
instead ofendpoint.watch_home_relay().next().await
.DirectAddrsStream
andConnTypeStream
, useiroh::watchable::WatcherStream
for as named types instead.
- changed
iroh::endpoint::NodeAddr
moved toiroh::NodeAddr
iroh::Endpoint::conn_type_stream
is renamed toiroh::Endpoint::conn_type
and returnsResult<Watcher<ConnectionType>>
instead ofResult<ConnectionTypeStream>
To migrate, useendpoint.conn_type()?.stream()
instead ofendpoint.conn_type_stream()?
.iroh::Endpoint::home_relay
now returnsWatcher<Option<RelayUrl>>
instead ofOption<RelayUrl>
.
To migrate, useendpoint.home_relay().get()?
instead ofendpoint.home_relay()
.iroh::protocol::ProtocolHandler::accept
now takes&self
instead ofArc<Self>
iroh::protocol::ProtocolHandler::shutdown
now takes&self
instead ofArc<Self>
iroh::protocol::RouterBuilder::accept
now takesT: ProtocolHandler
instead ofArc<dyn ProtocolHandler>
iroh::protocol::ProtocolMap
is now private- struct
iroh::config::Config
has a new fieldzone_store
- struct
iroh::metrics::Metrics
has a new fieldstore_packets_expired
⛰️ Features
- (iroh) [breaking] Remove get_protocol and the plumbing required for it (#3009) - (1323c9a)
- (iroh) Remove
Arc
requirements fromProtocolHandler
(#3010) - (8dfbc35) - (iroh, iroh-relay) [breaking] Remove
Endpoint::connect_by_node_id
and add#[doc(cfg(...))]
annotations (#3015) - (95bcb62) - (iroh-dns-server) [breaking] Eviction of stale zonestore entries (#2997) - (74884f1)
- (iroh-net) Add a Watchable struct for use in the Endpoint API (#2806) - (1a79a19)
- (iroh-net-report) [breaking] Add QUIC address discovery probes (#3028) - (cf0f8cc)
- (iroh-relay) [breaking] Use explicit key cache (#3053) - (d4f72fa)
- (net-report) [breaking] Add
net_report::Options
to specify which probes you want to run (#3032) - (ac74c53) - (relay) Reloading certificate resolver (#2999) - (c37895b)
- Implement
RelayDatagramsQueue
(#2998) - (b76500d) - [breaking] Reduce default feature dependents (#3005) - (321d8ff)
- [breaking] Bump MSRV to 1.81 (#3033) - (6e009a8)
- [breaking] Update to iroh-metrics@0.30.0 and portmapper@0.3.0 (#3054) - (dcd0b40)
🐛 Bug Fixes
- (iroh) Poll all AsyncUdpSocket sources fairly (#2996) - (26c5248)
- (iroh, iroh-relay) [breaking] Bypass magicsock::Actor for datagrams from the relay (#2986) - (0d06320)
- (iroh-dns-server) Remove accidental blocking from store (#2985) - (647b2fd)
🚜 Refactor
- (iroh) Remove with_cancel, use run_until_cancelled (#3000) - (f75a04b)
- (iroh) Remove unused rate limiter (#3007) - (b2b070f)
- (iroh) Rename the relay-is-ready-to-send waker (#3014) - (79bf3c3)
- (iroh) [breaking] Remove dialer::Dialer (#3022) - (6a62c80)
- (iroh) [breaking] Make iroh::tls private (#3018) - (0fe7e8b)
- (iroh) [breaking] Improve reexport structure (#3023) - (d9fb470)
- (iroh) Add send queue between relay actor and relays (#3026) - (af5a8c2)
- (iroh) Rename ConnectedRelayActor to ActiveRelayActor (#3027) - (80bc8a3)
- (iroh) Newtype the packet sent over relay servers (#3030) - (e7503c0)
- (iroh) Remove genawaiter usage from dht discovery (#3048) - (738c773)
- (iroh) Remove ActiveRelayMessage::GetClient ([...
v0.29.0
⚠️ Breaking Changes
-
net-tools
now has it's own repo, which includesportmapper
andnetwatch
-
iroh
-
changed
iroh-net
got renamed toiroh
iroh-router
moved intoiroh
iroh-router::ProtocolHandler
is nowiroh::protocol::ProtocolHandler
iroh-router::ProtocolMap
is nowiroh::protocol::ProtocolMap
iroh-router::Router
is nowiroh::protocol::Router
iroh-router::RouterBuilder
is nowiroh::protocol::RouterBuilder
iroh-net
'sNetcheckMetrics
are now calledNetReportMetrics
iroh::Endpoint::close
takes no arguments now, it defaults to using code0
and an empty messageiroh::Endpoint::close
now takes&self
rather thanself
. This can, in some situations, mean an existing (clone of an) endpoint might be dropped too early as a temporary variable.iroh::test_utils::run_relay_server_with(stun: Option<StunConfig>)
=>iroh::test_utils::run_relay_server_with(stun: Option<StunConfig>, quic: bool)
- Events are emitted on different tracing targets:
iroh::events
instead ofevents.net
. iroh::node::Builder
has no more generic parameters anymoreiroh::node::Node
has no more generic parameters anymoreiroh::protocol::Router::shutdown
takes&self
instead ofself
RouterBuilder::accept
takesimpl AsRef<[u8]>
. Existing code should still work!Node::accept
takesimpl AsRef<[u8]>
. Existing code should still work!
-
removed
iroh::cli
, look atiroh-blobs
,iroh-docs
, andiroh-doctor
for cli examplesiroh::node
, useiroh-node-util
iroh::metrics
, useiroh-metrics
iroh::blobs
useiroh-blobs
crateiroh::docs
useiroh-docs
crateiroh::gossip
useiroh-gossip
crateiroh::client
iroh::util
- the ability to run
iroh
itself in a docker container, as there is no binary anymore iroh::client::blobs
useiroh_blobs::rpc::client
. a memory client is available on Blobsiroh::client::tags
useiroh_blobs::rpc::client
. a memory client is available on Blobsiroh::client::gossip
useiroh_gossip::rpc::client
. a memory client is available on Gossipiroh::client::docs
useiroh_docs::rpc::client
. a memory client is available on Docsiroh::client::authors
useiroh_docs::rpc::client
. a memory clientis available on Docsiroh::node::MemNode
, useNode
directlyiroh::node::FsNode
, useNode
directlyiroh::node::Node::local_pool_handle
iroh::node::builder::DocsStorage
iroh::node::builder::Builder::enable_gc_policy
iroh::node::builder::Builder::enable_docs
iroh::node::builder::Builder::register_cb_done
iroh::node::builder::ProtocolBuilder::local_pool_handle
iroh::node::builder::GcPolicy
iroh::util::progress
iroh::util::path::IrohPaths::BaoStoreDir
iroh::util::path::IrohPaths::DocsDatabase
iroh::util::path::IrohPaths::Console
iroh::util::path::IrohPaths::DefaultAuthor
util::fs/PathContent
, useiroh_blobs::util::fs::PathContent
util::fs/path_content_info
, useiroh_blobs::util::fs::path_content_info
util::fs/key_to_path
, useiroh_blobs::util::fs::key_to_path
util::fs/path_to_key
, useiroh_blobs::util::fs::path_to_key
util::fs/canonicalized_path_to_string
, useiroh_blobs::util::fs::canonicalized_path_to_string
util::io::*
, useiroh_blobs::util::io
util::progress::ProgressEmitter
util::progress::ProgressAsyncReader
util::progress::Progress
util::progress::ProgressReader
util::progress::ProgressReaderUpdate
-
added
- added
iroh::Endpoint::is_closed
- added
-
-
iroh-node-util
- module
iroh::client::net
is now a reexport ofiroh_node_util::rpc::client::net
- module
iroh::client::node
is now a reexport ofiroh_node_util::rpc::client::node
- module
iroh-cli::commands::net
moved toiroh-node-util::cli::net
- logic in
iroh-cli::commands::rpc
moved toiroh-node-util::cli::node
- module
iroh_cli::logging
has moved toiroh-node-util
to make it available for other people building nodes iroh_config_root
,iroh_data_root
andiroh_cache_root
iniroh-cli
have been replaced with genericconfig_root
,data_root
andcache_root
iniroh-node-util::config
load_secret_key
moved toiroh_node_utils
to preserve it
- module
-
iroh-relay
-
changed
The URLs served by the relay changed:/relay/probe
has moved to/ping
/derp/probe
has been removed.
Unless you were manually using those URLs you will not notice these changes, nothing in the iroh codebase ever used the changed URLs.RelayMap
now can be created with an iterator ofArc
s directly.iroh-relay
now usesNodeGone
instead ofPeerGone
in some enums- If not configured there is now a default rate limit for incoming data from client connections: 4KiB/s steady-stream and 16MiB burst capacity.
-
removed
iroh_net::relay
is removed.RelayUrl
,RelayMode
,RelayNode
andRelayMap
are moved to the top (iroh_net
). All other members of this module are now moved to the new crateiroh-relay
- field
config
has been removed from variantiroh_relay::server::CertConfig::LetsEncrypt
- variant
iroh_relay::server::CertConfig::Manual
no longer has fieldprivate_key
-
added
iroh_base::relay_map::RelayNode
now has fieldquic
that takes aOption<iroh_base::relay_map::QuicConfig>
iroh::test_utils::run_relay_server_with(stun: Option<StunConfig>)
=>iroh::test_utils::run_relay_server_with(stun: Option<StunConfig>, quic: bool)
, whenquic
istrue
, it will start a quic server for QUIC address discovery, that has self signed tls certs for testing.iroh_relay::server::ServerConfig
has new fieldquic
that takes a `Option<iroh_relay::server::QuicConfig>iroh_relay::server::TlsConfig.quic_bind_addr
is a new field that takes aSocketAddr
iroh_relay::server::TlsConfig.server_config
is a new field that takes arustls::ServerConfig
- variant
iroh_relay::server::CertConfig::LetsEncrypt
has a new fieldstate
that takes atokio_rustls_acme::AcmeState<EC, EA>
-
⛰️ Features
- (iroh) Make all important iroh_base types available (#2975) - (73c9b75)
- (iroh) Improve Router shutdown (#2978) - (fbcaaa5)
- (iroh) Improve shutdown interactions (#2980) - (e461cca)
- (iroh-base, iroh-net-report) [breaking] Intro net-report as a crate (#2921) - (a5e9283)
- (iroh-net) Implement the https probe (#2903) - (91d44dc)
- (iroh-net) Allow the underlying UdpSockets to be rebound (#2946) - (cc9e4e6)
- (iroh-relay) Rate-limit client connections (#2961) - (c999770)
- (iroh-relay) [breaking] Add a QUIC server for QUIC address discovery to the iroh relay. (#2965) - (b2cb0ca)
- [breaking] Add iroh-relay crate (#2873) - (59b5bf9)
- Simple iroh (#2968) - (32f1fcd)
- Update to iroh-metrics@0.29.0 (#2992) - (078d1a6)
- Extract iroh-node-util (#2993) - (92d9864)
🐛 Bug Fixes
- (ci) Try to reuse msys2 dep (#2956) - (4e58b1f)
- (iroh) Remove iroh dev self dep (#2974) - (7057d72)
- (iroh-dns-server) Actually use async fs in load_secret_key (#2943) - (7c19da4)
- (iroh-net) Do not return a port for reqwest DNS resolver (#2906) - (81c8ff7)
- (iroh-net) Make sure the rtt-actor is shutdown correctly (#2914) - (c96b032)
- (iroh-net) Fix ...
v0.28.1
🛑 deprecations
iroh-blobs
,iroh-docs
,iroh-gossip
will not longer be re-exported in iroh and must be added as their own crates by v0.29.0Node::client
is deprecated and will be removed in v0.29.0- the iroh CLI is deprecated and will be removed in v0.29.0
⚠️ Breaking Change
-
iroh-net
- removed
- the
secret_key
property of theiroh-relay
config iroh_net::relay::server::ServerActorTask::secret_key
iroh_net::relay::server::ServerActorTask::public_key
iroh_net::relay::server::ServerActorTask::meta_cert
- field
secret_key
iniroh_net::relay::server::RelayConfig
iroh_net::portmapper
is moved to its own crate:portmapper
iroh_net::net
has been split and added to thenetwatch
crate
- the
- changed
iroh_net::relay::server::ServerActorTask::new
now takes no argumentsMagicsockMetrics
is now#[non_exhaustive]
. This allows us to add more metrics without breaking backwards compatibility in the future. The struct is not meant to be constructed outside ofiroh-net
anyways.
- removed
-
iroh-base
- removed
iroh_base::rpc::RpcError
iroh_base::rpc::RpcResult
- removed
-
iroh
- changed
iroh::node::ProtocolHandler
->iroh::router::ProtocolHandler
- changed
🐛 Bug Fixes
- Switch to correctly patched quic-rpc and iroh-quinn - (d925da4)
📚 Documentation
- Fixup changelog - (5066102)
⚙️ Miscellaneous Tasks
- Release - (134a93b)
v0.28.0
⛰️ Features
- (iroh-dns-server) [breaking] Make http rate limit configurable (#2772) - (fe684c2)
- (iroh-net) Add StaticDiscovery to provide static info to endpoints (#2825) - (c9d1ba7)
- (iroh-net) More Quinn re-exports (#2838) - (9495c21)
- (iroh-net) Send HTTP/1.1
HOST
header on requests to relay (#2881) - (4bfa58e) - [breaking] Introduce iroh-router crate (#2832) - (8f75005)
- Collect metrics for direct connections & add opt-in push metrics (#2805) - (86b494a)
🐛 Bug Fixes
- (ci) Better error reporting on netsim fails (#2886) - (e1aab51)
- (iroh-net) When switching to a direct path reset the mtu (#2835) - (93f7900)
- (iroh-relay) Respect
enable_stun
setting iniroh-relay::Config
(#2879) - (2507e62) - (metrics) Allow external crates to encode their metrics (#2885) - (362076e)
- (portmapper) Enforce timeouts for upnp (#2877) - (00a3f88)
🚜 Refactor
- (iroh) Move protocol relevant impls into node/protocols (#2831) - (67df1c1)
- (iroh) Move ProtocolHandler impl to iroh-gossip (#2849) - (6c6827d)
- (iroh) Move blobs protocol to iroh-blobs (#2853) - (30f3e03)
- (iroh) [breaking] Remove gossip rpc types (#2834) - (a55529b)
- (iroh-net) Portmapper and network monitor are crates (#2855) - (fad3e24)
- Move iroh-gossip to external repo (#2826) - (e659405)
- Move iroh-docs to external repo (#2830) - (3e17210)
- Remove iroh-blobs and use crates.io dependency (#2829) - (d29537d)
- [breaking] Remove iroh_base::rpc (#2840) - (bfba7a4)
- Move ProtocolHandler docs to iroh-docs (#2859) - (61acd96)
📚 Documentation
🧪 Testing
- (iroh-net) Give this a longer timeout (#2857) - (ed13453)
- (iroh-net) Make dht_discovery_smoke test less flaky (#2884) - (ce8d94d)
- (netwatch) Simplify dev-deps - (029830f)
⚙️ Miscellaneous Tasks
- (ci) Identify which repository the flakes are reported for (#2824) - (b2e587d)
- (iroh-net) Fixup portmapper version - (37f620d)
- Add iroh-router to crates list (#2850) - (2d17636)
- Release - (860b90f)
- Release - (8bae5c3)
- Release - (d6c39c9)
- Release - (2073bf4)
- Upgrade 0.28 iroh-net - (13da047)
- Release - (5751521)
- Release - (5437dbb)
- Upgrade 0.28 iroh-router - (297b874)
- Update 0.28 iroh-docs, iroh-gossip, iroh-blobs - (7e80a92)
- Release - (fa926be)
- Release - (4c58bd8)
v0.27.0
⚠️ Breaking Changes
iroh-net
- deprecated
iroh-net: Endpoint::connect_by_node_id
is deprecated (to be removed next release)
- removed
TEST_DNS_NODE_ORIGIN
- changed
- defaults to using prod relays unless
IROH_FORCE_STAGING_RELAYS
is set to a non empty value iroh_net::Endpoint::direct_addresses
now returns a stream yielding Items ofBTreeSet<DirectAddr>
instead ofVec<DirectAddr>
iroh-net: Endpoint::connect
now takes animpl Into<NodeAddr>
instead of aNodeAddr
NodeTicket::new
no longer returnsResult
but always succeeds (as it already did). This matches it'sFrom<NodeAddr>
impl which also never fails.
- defaults to using prod relays unless
- deprecated
⛰️ Features
- (iroh-net) Export the Ticket trait (#2765) - (e9f98a6)
- (iroh-net) [breaking] Allow using a NodeId directly in connect. (#2774) - (bd5e4fa)
- (iroh-net) Log the crate version number (#2746) - (12f74e2)
- (iroh-net) Add helper fn to enable n0 discovery publishing and resolving (#2775) - (ed903ae)
🐛 Bug Fixes
- (cfg) [breaking] Make sure we use correct relays (#2778) - (844b146)
- (ci) Add cleanup workflow to retain
generated-docs-preview
for only the last 25 PRs (#2758) - (8420674) - (ci) Netsim commenting fixes (#2766) - (97be9e3)
- (ci) Netsim does not interact with PR comments on forks (#2777) - (9902b2d)
- (ci) Make sure logs get uploaded on netsim failure (#2807) - (1436389)
- (deps) Update postcard to get rid of yanked critical-section (#2810) - (62e4bd4)
- (iroh-net) Keep the relay connection alive on read errors (#2782) - (383f1f9)
- (iroh-net) Emit the call-me-maybe.sent event in all cases (#2792) - (43f5fed)
- (iroh-net) Use
try_send
rather thansend
so we dont block the local swarm discovery service (#2794) - (2d04306) - (iroh-net) [breaking] DiscoveredDirectAddrs need to update the timestamp (#2808) - (85bd8b7)
🚜 Refactor
- (iroh-base) [breaking] No Result for creating new NodeTicket (#2771) - (f536789)
- (iroh-net) Log the pkarr relay when publishing (#2770) - (d514859)
- (iroh-net) Add tracing span context to spawned tasks (#2769) - (66549bf)
- (iroh-net) Keep connection name, remove connection count (#2779) - (6b1186f)
- (iroh-net) Optimise present nodes in ActiveRelay (#2781) - (c7ac982)
- (iroh-net) Failing to bind is not a Warning log (#2815) - (f08011a)
- (iroh-net) Attach Relay URL to a connecting client span (#2817) - (a0ce00e)
- (iroh-net) No portmapper is not a warning (#2816) - (f32f3f9)
- (iroh-net) Debug logging should not be per packet set (#2818) - (c82ada5)
- Display the socket addr and relay for a
ConnectionType::Mixed
(#2793) - (c349c43)
📚 Documentation
- ()* Document cargo features in docs (#2761) - (4d41a69)
- (iroh) Enable iroh_docsrs feature (#2780) - (234a856)
- (iroh-base) Clarify AddrInfoOptions a little (#2813) - (a36970a)
- (iroh-net) Add examples to discovery (#2786) - (ab3afef)
- (iroh-net) Add examples to the module docs (#2785) - (39d4bd9)
- (iroh-net) Some more example tweaking (#2811) - (af8c474)
- (iroh-net) Document cfg(test) items as well (#2819) - (a03a08e)
- (relay) Fix typos in map.rs (#2773) - (73ca58a)
🧪 Testing
⚙️ Miscellaneous Tasks
- (iroh-net) Upgrade igd-next, remove hyper 0.14 (#2804) - (5e40fe1)
- Format imports using rustfmt (#2812) - (8808a36)
- Increase version numbers and update (#2821) - (71b5903)
Deps
v0.26.0
⚠️ Breaking Changes
- changed
client::Blobs::read_at
andread_at_to_bytes
now take
ReadAtLen
instead ofOption<usize>
- by default
node::Node::memory
&persistent
have docs disabled
- removed
node::Builder::disable_docs
- added
node::Builder::enable_docs
iroh-net
- struct
DirectAddrInfo
now has fieldsources
, which is aHashMap
ofendpoint::Source
toDuration
. TheSource
is how we heard about the remote, and theDuration
is how long ago we heard about it. We keep only the shortestDuration
.
- struct
iroh-blobs
- changed
util::local_pool::LocalPool
will now install the tracing subscriber of the thread creating the pool, into each thread managed by the pool. Practically this should not break any code already managing their tracing subscribers either manually inside tasks or by setting a global subscriber before creating the pool. But if you really liked the behaviour of swallowing the logs on doing this it's a breaking change
- changed
⛰️ Features
- (iroh) Disable docs by default (#2748) - (eb4c4a6)
- (iroh) [breaking] Make blobs::read_at more flexible (#2756) - (33dc559)
- (iroh) Allow setting a custom
quinn::TransportConfig
(#2760) - (253f4f1) - (iroh-cli) Improve ergonomics of
iroh gossip subscribe
CLI cmd (#2751) - (90fd6f0) - Set derive_more to 1.0.0 (no beta!) (#2736) - (2d863a9)
🐛 Bug Fixes
- (ci) Make netsim work on forks (#2757) - (0953263)
- (examples) Make
collection-provide
,hello-world-provide
andrpc
work again (#2749) - (25c8305) - (iroh-blobs) Preserve tracing subscriber in the LocalPool (#2735) - (5dd8bd3)
- (iroh-blobs) Remove debugging logs & more cleanup (#2690) - (857e513)
- (iroh-net) Clear the recent pong time when pong is lost (#2743) - (8fb92f3)
🚜 Refactor
- (ci) Redo netsim CI (#2737) - (443139d)
- (iroh-net) Various logging improvements (#2744) - (2262fd5)
- (iroh-net) Remove PathState::recent_pong() (#2745) - (cafdc08)
📚 Documentation
v0.25.0
⚠️ Breaking Changes
-
iroh-gossip
- removed
Gossip::update_direct_addresses
Updating the direct addresses is now handled byGossip
automatically.
- removed
-
iroh-net
- removed
netcheck::Client::receive_stun_packet
iroh_net::util
- added
iroh_net::endpoint::Builder::bind_addr_v4
iroh_net::endpoint::Builder::bind_addr_v6
- changed
iroh_net::endpoint::Endpoint::bind
now takes no argumentsnetcheck::Client
is not longerClone
.
- removed
-
iroh-blobs
- removed
Store::gc_sweep
Store::gc_mark
Store::gc_start
- added
Store::gc_run
which starts the full gc schedule
- removed
-
iroh
- removed
node::ProtocolBuilder::downloader
node::ProtocolBuilder::blobs_db
node::Builder::bind_port
- added
node::Builder::bind_addr_v4
node::Builder::bind_addr_v6
node::Builder::bind_random_port
- removed
⛰️ Features
- (iroh-base) Implement
From
&Into
betweenNodeAddr
andNodeTicket
(#2717) - (8a4bb09) - Allow to bind to a specific address (#2694) - (2e5188a)
🐛 Bug Fixes
- (ci) Fix docker builds on release & release rebuilds (#2712) - (21d75c7)
- (iroh) Handle out of bounds requests for blobs read_at (#2729) - (28cf153)
- (iroh-blobs) Unconditionally delete blobs (#2692) - (567577d)
- (iroh-net) Fix a hot-loop when the probes time out (#2699) - (874030a)
- Put
--with-relay
feature in iroh-net bench behindlocal-relay
feature flag (#2700) - (b8c0513)
🚜 Refactor
- (iroh) Remove custom impl of
SharedAbortingJoinHandle
(#2715) - (098b11f) - (iroh-gossip) Make use of Endpoint::direct_addresses in iroh_gossip::net (#2731) - (9583729)
- (iroh-net) [breaking] Make netcheck::Client !Clone (#2716) - (ce2cfee)
- [breaking] Migrate to tokio's AbortOnDropHandle (#2701) - (35e9873)
📚 Documentation
- (iroh-cli) Add docs to entrypoint (#2697) - (c6e2f05)
- (iroh-cli) Udpate
doctor
command documentation (#2710) - (93b400a) - (iroh-cli) Update
authors
command documentation (#2702) - (2c199a0) - (iroh-cli) Update
console
command documentation (#2705) - (4964ee3) - (iroh-cli) Update
net
command documentation (#2707) - (8c321a2) - (iroh-cli) Update
start
command documentation (#2708) - (2636be8) - (iroh-cli) Update
rpc
command documentation (#2711) - (518d439) - (iroh-cli) Update
gossip
command documentation (#2706) - (bdaeba1) - (iroh-cli) Update
tags
command documentation (#2709) - (7510a59) - (iroh-cli) Update
blobs
command documentation (#2704) - (76b1473) - (iroh-cli) Update
docs
command documentation (#2703) - (7b6c974) - (iroh-cli) Fix typo (#2718) - (d2ecbdb)
⚙️ Miscellaneous Tasks
v0.24.0
⚠️ Breaking Changes
iroh-net
- swarm discovery will no longer send consecutive repeated values
iroh::net::endpoint::Endpoint::accept
now returnsIncoming
instead ofConnecting
. This allows rejecting incoming connections earlier, notify the initiating side to retry later and more. To get backConnecting
, simply useIncoming::accept()
. If all you did withConnecting
before was to.await
it, you can do the same withIncoming
, too, and get back aConnection
.- Removed
iroh::net::endpoint::Builder::concurrent_connections
. The amount of concurrent connections is now controlled by either callingIncoming::accept
orIncoming::refuse
afterEndpoint::accept
.
⛰️ Features
- (bench) Add
--with-relay
option to allow testing relay throughput (#2664) - (5c09013) - (bench) Add
--metrics
option printing iroh-net library metrics (#2668) - (4f83c43) - (iroh-net) [breaking] Upgrade to Quinn 0.11 and Rustls 0.23 (#2595) - (34ec5e2)
🐛 Bug Fixes
- (iroh-blobs) Demote
warn!
totrace!
logs (#2689) - (6181455) - (iroh-blobs) Turn
println!
intotracing::debug!
(#2686) - (5bbcb60) - (iroh-blobs) Timeout based on correct
max_write_duration
option (#2688) - (2347565) - (iroh-net) Document the keylog environment variable correctly (#2655) - (c70caaf)
- (iroh-net) Magic sock
recv_data_ipv4
andrecv_data_ipv6
metrics numbers (#2667) - (cb1650a) - (iroh-net) Also check the last packet in
MagicSock::poll_recv
(#2650) - (54ca9c9) - (iroh-net) Reduce noise in swarm discovery due to republish (#2685) - (fd56763)
- Docker CI performance & release builds (#2659) - (d567231)
🚜 Refactor
🧪 Testing
⚙️ Miscellaneous Tasks
Deps
v0.23.0
Read All about this release on our blog post!
⚠️ Breaking Changes
iroh
- No more
deref
ofiroh::net::Client
toiroh::client::node::Node
iroh::client::node
->iroh::client::net
iroh::client::node::Node::shutdown
->iroh::client::Client::shutdown
iroh::client::blobs::BlobStatus
has a new caseNotFound
iroh::client::blobs::BlobStatus::Partial: size
is now aBaoBlobSize
instead of au64
V0
andV1
of theiroh_blobs
store are deprecated. Ensure data that is imported asiroh_blobs::store::fs::Store::import_flat_store
is migrated before future versions, which won't support this.client::node::Client::connection_info
->client::node::Client::remote_info
client::node::Client::connections
->client::node::Client::remote_info_iter
- No more
iroh-cli
--metrics-port
flag on the iroh cli is now--metrics-addr
, eg: specify127.0.0.1:9090
instead of9090
node connection-info
->node remote-info
node connections
->node remote-list
iroh-blobs
- Modifies
Event
enum:- removes
CustomGetRequestReceived
- adds
TransferProgress
- removes
send_blob
now takes anEventSender
- trait
EventSender
has been renamedCustomEventSender
- the concrete (boxed) event sender is now called just
EventSender
FlumeProgressSender
is nowAsyncChannelProgressSender
iroh_blobs::store::fs::Store::import_flat_store
is deprecated. Ensure all data is migrated before future versions, which won't support this.iroh_blobs::store::fs::FlatStorePaths
is deprecated. Ensure all data is migrated before future versions, which won't support this.iroh-blobs::provider::transfer_collection
has been removed.
- Modifies
iroh-net
LocalSwarmDiscovery
is not longerUnwindSafe
endpoint::ConnectionInfo
->endpoint::RemoteInfo
endpoint::ConnectionInfo::id
is removed since it's internal information.endpoint::ConnectionInfo::last_alive_relay
is deprecated. Use.relay_url.last_alive
endpoint::Endpoint::connection_info
->endpoint::Endpoint::remote_info
endpoint::Endpoint::connection_infos
->endpoint::Endpoint::remote_info_iter
⛰️ Features
- (ci) Notify discord of successfull flaky runs (#2623) - (94cee34)
- (iroh) [breaking] Blob batch PR, attempt 3 (#2545) - (9a55122)
- (iroh-blobs) Add outboard creation progress to the mem store (#2625) - (47c8528)
- (iroh-net) Upgrade to new
swarm-discovery
api (#2605) - (a9c96a9) - (iroh-net) Add PkarrNodeDiscovery to iroh-net (#2628) - (9facd5a)
- (iroh-net) Allow customizing republish delay for the pkarr publisher (#2637) - (134dbee)
- Allow custom blob providing event handling (#2583) - (bcc87a2)
🐛 Bug Fixes
- (ci) Report flaky outupt only on success and failure (#2627) - (8b6245e)
- (iroh-blobs) Do not skip empty partial blobs in migration (#2604) - (1c86dac)
- (iroh-cli)
cli_provide_addresses
to use the correctiroh status
command (#2649) - (717b3cd) - (iroh-gossip) Clarify docs and semantics of gossip joined event (#2597) - (5d98a5c)
- (tests) For DNS discovery only use a local DNS server (#2598) - (5eee643)
🚜 Refactor
- (iroh) [breaking] Convert node to net module (#2642) - (6354e04)
- (iroh,iroh-net) [breaking] Prefer
remote
toconnection
in api (#2610) - (9d06888) - (iroh-blobs) Use oneshot channel from oneshot crate (#2624) - (2e01d47)
- (iroh-blobs) [breaking] Expand docs (#2638) - (217ac06)
- (iroh-blobs, iroh) [breaking] Deprecate flat stores (#2629) - (168fa5b)
- (iroh-bytes) [breaking] Remove flume dependency (#2622) - (e9c5088)
- (iroh-cli) [breaking] Metrics-addr cli arg, metrics off by default (#2631) - (4df1c91)
- (iroh-net) [breaking] Remove async channel (#2620) - (74a527b)
- (iroh-net) [breaking] Rename the local-swarm-discovery feature to discovery-local-network (#2634) - (d1578ee)
- (iroh-net) Move all timeouts into one file (#2641) - (bb808b4)
- (iroh-net,iroh) Rename to remote_info_iter, fixup some docs (#2645) - (b17bf1d)
- Normalize feature names (#2633) - (d02c21f)
📚 Documentation
- (iroh-cli) Fix help text for incomplete blobs (#2615) - (ceb94da)
- Also list
iroh-gossip
as a re-export (#2606) - (3b7881c)
🧪 Testing
- (iroh) Reduce entry amount in
sync_gossip_bulk
(#2608) - (a2d2ec6) - (iroh) Re-enable some flaky tests to see if they are still flaky (#2458) - (b8f2b3f)
- (iroh-cli) Replace
cli_provide_one_file_large
with a faster test (#2607) - (7494566)
⚙️ Miscellaneous Tasks
- (ci) Use nextests groups to isolate some tests (#2617) - (a5072c3)
- Fix deps issues (#2643) - (83f6fcc)
Ref
v0.22.0 - Clean up on aisle five
⚠️ Breaking Changes
-
iroh-gossip
iroh_gossip::dispatcher
is removed with everything that was in it. Use the new API fromiroh_gossip::net::Gossip
instead (see below).iroh_gossip::net::Gossip
methods changed:- changed:
join
now returns aGossipTopic
- removed:
broadcast
,broadcast_neighbors
,subscribe
,subscribe_all
,quit
.- for
subscribe
usejoin
instead, which returns aGossipTopic
- for
broadcast
andbroadcast_neighbors
use the respective methods onGossipTopic
. quit
is obsolete now, the topic will be quitted once allGossipTopic
handles are dropped.subscribe_all
is no longer available
- for
- changed:
iroh_gossip::net::JoinTopicFut
is removed (it is now obsolete)
-
iroh-net
- Refactored the module structure for users of the
iroh-relay
feature in iroh-net- moved
iroh_net::relay::iroh_relay::*
toiroh_net::relay::server::*
iroh_net::relay::ClientConnHandler
toiroh_net::relay::server::ClientConnHandler
iroh_net::relay::Metrics
toiroh_net::relay::server::Metrics
iroh_net::relay::MaybeTlsStreamServer
toiroh_net::relay::server::MaybeTlsStreamServer
iroh_net::relay::http::Client
toiroh_net::relay::HttpClient
iroh_net::relay::http::ClientBuilder
toiroh_net::relay::HttpClientBuilder
iroh_net::relay::http::ClientReceiver
toiroh_net::relay::HttpClientReceiver
iroh_net::relay::http::ClientError
toiroh_net::relay::HttpClientError
iroh_net::relay::http::TlsConfig
toiroh_net::relay::server::TlsConfig
- removed
iroh_net::relay::http::ServerHandle
. The server can now be aborted via itstask_handle()
function or by dropping it. - renamed
iroh_net::relay::RelayClient
toiroh_net::relay::RelayConn
- renamed and moved
iroh_net::relay::Server
toiroh_net::relay::server::ServerActorTask
- unexposed
iroh_net::relay::http::{Server, ServerBuilder}
. Useiroh_net::relay::server::Server
instead.
- moved
- Properly feature-gate the iroh server implementation behind
#[cfg(feature = "iroh-relay")]
by feature-gating the wholeiroh_net::relay::server
module.
- Refactored the module structure for users of the
-
iroh
- Unknown fields in the configuration file will now cause an error.
- Configuring the GC Policy in the configuration file has changed.
- Example:
[gc_policy] enabled = true interval = 1234
⛰️ Features
- (iroh) Improve documentation and canonicalize docs in
iroh::client
(#2553) - (d937234) - Override to staging relays (#2551) - (ed4420b)
🐛 Bug Fixes
- (iroh) Do not set low max streams in builder (#2593) - (215cd1d)
- (iroh-blobs) Use async_channel instead of flume for local_pool (#2533) - (9052905)
- (iroh-blobs) Do not hit the network when downloading blobs which are complete (#2586) - (0784403)
- (iroh-cli) [breaking] Improve cli and configuration file (#2532) - (0fc3794)
- (iroh-gossip) Connection loop misuses
tokio::select!
leading to read errors (#2572) - (32bb0f3) - (iroh-net) Fix a compiler error with newer
derive_more
versions (#2578) - (3f3fec5) - (iroh-net) Make a single direct address in NodeAddr instant (#2580) - (f5b3918)
- Docker image builds (#2530) - (5c60a52)
- Disable docs preview on forks (#2558) - (741b42f)
- Force CI to use staging relays (#2560) - (ffeb1a9)
- Pin derive_more to avoid sudden breakages (#2584) - (1ba033c)
🚜 Refactor
- (iroh) Remove flume from iroh gossip (#2542) - (2964569)
- (iroh) Remove flume from iroh-cli and iroh (#2543) - (347d45c)
- (iroh-docs) Replace flume with async_channel in docs (#2540) - (e7a7552)
- (iroh-net) Replace flume in iroh-net with async_channel (#2539) - (22314a1)
- (iroh-net) Move more server code behind
iroh-relay
feature flag (#2566) - (1dda2f7) - (iroh-net) [breaking] Improve server modules structure & rename structs (#2568) - (29d2e82)
- (iroh-net) Switch to (now stable)
IpAddr::to_canonical
(#2569) - (7fdd6cb)
📚 Documentation
- (iroh) Add documentations and examples for the
iroh::node::Client
(#2582) - (55836fa) - (iroh-cli) Point to the configuration refernce from each iroh subcommand (#2571) - (8e4e586)
- Fix typos discovered by codespell (#2534) - (8435a45)
- Update description in cargo.toml - (7259ab5)
🧪 Testing
- (iroh-blobs) Comment out ignored test (that is not a flaky test) (#2559) - (15f36b3)
- (iroh-cli) Update to new api (#2549) - (f97c1c0)
- (iroh-cli) Remove flaky mark from 5 tests and improve logs (#2562) - (14fccee)
- (iroh-cli) Reduce flakyness of cli_provide_file_resume (#2563) - (f085e63)
- (iroh-cli) Make cli resumption tests not flaky (#2564) - (9e6b1e0)
- (iroh-net) Increase timeout for local swarm discovery test (#2574) - (605a85d)
⚙️ Miscellaneous Tasks
- (iroh-net) Remove need for relay info in best_addr (#2579) - (d662bfc)
- Fix clippy warnings (#2550) - (73de21b)
- Generate docs for each PR (#2547) - (0812333)