Skip to content

Releases: n0-computer/iroh

v0.30.0

17 Dec 15:45
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • iroh-base

    • removed
      • iroh_base::SharedSecret
      • iroh_base::DecryptionError, iroh::DecryptionError
      • iroh_base::SecretKey::shared
      • iroh_base::SecretKey::generate_with_rng, use generate directly
      • iroh_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, use iroh_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 rng
      • anyhow::Error is replaced with explicit errors for RelayUrl::from_str
      • anyhow::Error is replaced with explicit errors for SharedSecret::open
      • iroh_base::PUBLIC_KEY_LENGTH is moved from a top level constant to iroh_base::PublicKey::LENGTH
      • keys are now formatted using hex lowercase by default
      • keys still parse base32 encoded, for better backwards compatibility
      • introduce ticket feature for iroh_base, to use iroh_base::ticket
      • iroh_base::key exports moved to iroh_base: iroh_base::{KeyParsingError, NodeId, PublicKey, SecretKey, SharedSecret, Signature, PUBLIC_KEY_LENGTH}
  • iroh-net-report

    • changed
      • net_report::Client::get_report_channel now takes an opts: net_report::Options
      • net_report::Client will no longer bind UdpSockets when one is not provided for both STUN over IPv4 or STUN over IPv6.
      • iroh_net_report::Client::get_report takes new parameter quic_config: net_report::QuicConfig
      • iroh_net_report::Client::get_report_channel takes new parameter quic_config: net_report::QuicConfig
    • added
      • net_report::Client::get_report_with_options

iroh-relay

  • changed
    • iroh_relay::HttpClientBuilder::address_family_selector signature changed
    • server is not a default feature in iroh-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 and iroh::dialer
    • iroh::tls
    • iroh::Endpoint::connect_by_node_id, use iroh::Endpoint::connect with a NodeId instead.
    • iroh::hash::{BlobFormat, Hash, HashAndFormat}, use iroh_blobs::{BlobFormat, Hash, HashAndFormat}
    • iroh::ticket::BlobTicket, use iroh_blobs::ticket::BlobTicket
    • iroh::endpoint::Bytes, use bytes::Bytes
    • iroh::Endpoint::watch_home_relay
      To migrate, use endpoint.home_relay().initialized().await? instead of endpoint.watch_home_relay().next().await and use endpoint.home_relay().stream() instead of endpoint.watch_home_relay().next().await.
    • DirectAddrsStream and ConnTypeStream, use iroh::watchable::WatcherStream for as named types instead.
  • changed
    • iroh::endpoint::NodeAddr moved to iroh::NodeAddr
    • iroh::Endpoint::conn_type_stream is renamed to iroh::Endpoint::conn_type and returns Result<Watcher<ConnectionType>> instead of Result<ConnectionTypeStream>
      To migrate, use endpoint.conn_type()?.stream() instead of endpoint.conn_type_stream()?.
    • iroh::Endpoint::home_relay now returns Watcher<Option<RelayUrl>> instead of Option<RelayUrl>.
      To migrate, use endpoint.home_relay().get()? instead of endpoint.home_relay().
    • iroh::protocol::ProtocolHandler::accept now takes &self instead of Arc<Self>
    • iroh::protocol::ProtocolHandler::shutdown now takes &self instead of Arc<Self>
    • iroh::protocol::RouterBuilder::accept now takes T: ProtocolHandler instead of Arc<dyn ProtocolHandler>
    • iroh::protocol::ProtocolMap is now private
    • struct iroh::config::Config has a new field zone_store
    • struct iroh::metrics::Metrics has a new field store_packets_expired

⛰️ Features

  • (iroh) [breaking] Remove get_protocol and the plumbing required for it (#3009) - (1323c9a)
  • (iroh) Remove Arc requirements from ProtocolHandler (#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 ([...
Read more

v0.29.0

02 Dec 20:08
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • net-tools now has it's own repo, which includes portmapper and netwatch

  • iroh

    • changed

      • iroh-net got renamed to iroh
      • iroh-router moved into iroh
      • iroh-router::ProtocolHandler is now iroh::protocol::ProtocolHandler
      • iroh-router::ProtocolMap is now iroh::protocol::ProtocolMap
      • iroh-router::Router is now iroh::protocol::Router
      • iroh-router::RouterBuilder is now iroh::protocol::RouterBuilder
      • iroh-net's NetcheckMetrics are now called NetReportMetrics
      • iroh::Endpoint::close takes no arguments now, it defaults to using code 0 and an empty message
      • iroh::Endpoint::close now takes &self rather than self. 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 of events.net.
      • iroh::node::Builder has no more generic parameters anymore
      • iroh::node::Node has no more generic parameters anymore
      • iroh::protocol::Router::shutdown takes &self instead of self
      • RouterBuilder::accept takes impl AsRef<[u8]>. Existing code should still work!
      • Node::accept takes impl AsRef<[u8]>. Existing code should still work!
    • removed

      • iroh::cli, look at iroh-blobs, iroh-docs, and iroh-doctor for cli examples
      • iroh::node, use iroh-node-util
      • iroh::metrics, use iroh-metrics
      • iroh::blobs use iroh-blobs crate
      • iroh::docs use iroh-docs crate
      • iroh::gossip use iroh-gossip crate
      • iroh::client
      • iroh::util
      • the ability to run iroh itself in a docker container, as there is no binary anymore
      • iroh::client::blobs use iroh_blobs::rpc::client. a memory client is available on Blobs
      • iroh::client::tags use iroh_blobs::rpc::client. a memory client is available on Blobs
      • iroh::client::gossip use iroh_gossip::rpc::client. a memory client is available on Gossip
      • iroh::client::docs use iroh_docs::rpc::client. a memory client is available on Docs
      • iroh::client::authors use iroh_docs::rpc::client. a memory clientis available on Docs
      • iroh::node::MemNode, use Node directly
      • iroh::node::FsNode, use Node directly
      • iroh::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, use iroh_blobs::util::fs::PathContent
      • util::fs/path_content_info, use iroh_blobs::util::fs::path_content_info
      • util::fs/key_to_path , use iroh_blobs::util::fs::key_to_path
      • util::fs/path_to_key, use iroh_blobs::util::fs::path_to_key
      • util::fs/canonicalized_path_to_string, use iroh_blobs::util::fs::canonicalized_path_to_string
      • util::io::*, use iroh_blobs::util::io
      • util::progress::ProgressEmitter
      • util::progress::ProgressAsyncReader
      • util::progress::Progress
      • util::progress::ProgressReader
      • util::progress::ProgressReaderUpdate
    • added

      • added iroh::Endpoint::is_closed
  • iroh-node-util

    • module iroh::client::net is now a reexport of iroh_node_util::rpc::client::net
    • module iroh::client::node is now a reexport of iroh_node_util::rpc::client::node
    • module iroh-cli::commands::net moved to iroh-node-util::cli::net
    • logic in iroh-cli::commands::rpc moved to iroh-node-util::cli::node
    • module iroh_cli::logging has moved to iroh-node-util to make it available for other people building nodes
    • iroh_config_root, iroh_data_root and iroh_cache_root in iroh-cli have been replaced with generic config_root, data_root and cache_root in iroh-node-util::config
    • load_secret_key moved to iroh_node_utils to preserve it
  • 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 of Arcs directly.
      • iroh-relay now uses NodeGone instead of PeerGone 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 and RelayMap are moved to the top (iroh_net). All other members of this module are now moved to the new crate iroh-relay
      • field config has been removed from variant iroh_relay::server::CertConfig::LetsEncrypt
      • variant iroh_relay::server::CertConfig::Manual no longer has field private_key
    • added

      • iroh_base::relay_map::RelayNode now has field quic that takes a Option<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), when quic is true, it will start a quic server for QUIC address discovery, that has self signed tls certs for testing.
      • iroh_relay::server::ServerConfig has new field quic that takes a `Option<iroh_relay::server::QuicConfig>
      • iroh_relay::server::TlsConfig.quic_bind_addr is a new field that takes a SocketAddr
      • iroh_relay::server::TlsConfig.server_config is a new field that takes a rustls::ServerConfig
      • variant iroh_relay::server::CertConfig::LetsEncrypt has a new field state that takes a tokio_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 ...
Read more

v0.28.1

05 Nov 11:20
Compare
Choose a tag to compare

🛑 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.0
  • Node::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 the iroh-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 in iroh_net::relay::server::RelayConfig
      • iroh_net::portmapper is moved to its own crate: portmapper
      • iroh_net::net has been split and added to the netwatch crate
    • changed
      • iroh_net::relay::server::ServerActorTask::new now takes no arguments
      • MagicsockMetrics 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 of iroh-net anyways.
  • iroh-base

    • removed
      • iroh_base::rpc::RpcError
      • iroh_base::rpc::RpcResult
  • iroh

    • changed
      • iroh::node::ProtocolHandler -> iroh::router::ProtocolHandler

🐛 Bug Fixes

  • Switch to correctly patched quic-rpc and iroh-quinn - (d925da4)

📚 Documentation

⚙️ Miscellaneous Tasks

v0.28.0

04 Nov 19:08
Compare
Choose a tag to compare

⛰️ 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 in iroh-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

  • (iroh-net) Link to Endpoint in the first few paragraphs (#2875) - (f0590be)

🧪 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

v0.27.0

21 Oct 18:21
Compare
Choose a tag to compare

⚠️ 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 of BTreeSet<DirectAddr> instead of Vec<DirectAddr>
      • iroh-net: Endpoint::connect now takes an impl Into<NodeAddr> instead of a NodeAddr
      • NodeTicket::new no longer returns Result but always succeeds (as it already did). This matches it's From<NodeAddr> impl which also never fails.

⛰️ 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 than send 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

🧪 Testing

  • (iroh) Mark test_blob_delete_mem as flaky (#2784) - (730f717)

⚙️ Miscellaneous Tasks

Deps

v0.26.0

30 Sep 17:40
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • changed
    • client::Blobs::read_at and read_at_to_bytes now take
      ReadAtLen instead of Option<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 field sources, which is a HashMap of endpoint::Source to Duration. The Source is how we heard about the remote, and the Duration is how long ago we heard about it. We keep only the shortest Duration.
  • 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

⛰️ 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 and rpc 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

📚 Documentation

  • (iroh-net) Document default relay servers a bit more (#2740) - (10025bd)
  • (iroh-net) Improve last_pong field docs (#2747) - (19c8fd3)
  • (iroh-net) Improve pkarr discovery docs (#2722) - (a0a8d56)
  • (iroh-net) Document cargo features needed for APIs (#2759) - (5d92f49)

v0.25.0

16 Sep 18:48
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • iroh-gossip

    • removed
      • Gossip::update_direct_addresses Updating the direct addresses is now handled by Gossip automatically.
  • 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 arguments
      • netcheck::Client is not longer Clone.
  • iroh-blobs

    • removed
      • Store::gc_sweep
      • Store::gc_mark
      • Store::gc_start
    • added
      • Store::gc_run which starts the full gc schedule
  • 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

⛰️ Features

  • (iroh-base) Implement From & Into between NodeAddr and NodeTicket (#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 behind local-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

02 Sep 20:08
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • iroh-net
    • swarm discovery will no longer send consecutive repeated values
    • iroh::net::endpoint::Endpoint::accept now returns Incoming instead of Connecting. This allows rejecting incoming connections earlier, notify the initiating side to retry later and more. To get back Connecting, simply use Incoming::accept(). If all you did with Connecting before was to .await it, you can do the same with Incoming, too, and get back a Connection.
    • Removed iroh::net::endpoint::Builder::concurrent_connections. The amount of concurrent connections is now controlled by either calling Incoming::accept or Incoming::refuse after Endpoint::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! to trace! logs (#2689) - (6181455)
  • (iroh-blobs) Turn println! into tracing::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 and recv_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

  • (iroh, iroh-blobs, iroh-net) [breaking] Remove deprecated items (#2652) - (060bf83)

🧪 Testing

  • (iroh-gossip) Wait for the relay to make gossip_net_smoke faster. (#2663) - (1d3f3fa)

⚙️ Miscellaneous Tasks

  • (iroh-net) Do not add the NodeId in the magicsock span field (#2679) - (05fff6a)

Deps

  • (iroh-gossip) Do not depend directly on Quinn (#2678) - (6296964)

v0.23.0

20 Aug 14:10
Compare
Choose a tag to compare

Read All about this release on our blog post!

⚠️ Breaking Changes

  • iroh
    • No more deref of iroh::net::Client to iroh::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 case NotFound
    • iroh::client::blobs::BlobStatus::Partial: size is now a BaoBlobSize instead of a u64
    • V0 and V1 of the iroh_blobs store are deprecated. Ensure data that is imported as iroh_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
  • iroh-cli
    • --metrics-port flag on the iroh cli is now --metrics-addr, eg: specify 127.0.0.1:9090 instead of 9090
    • node connection-info -> node remote-info
    • node connections -> node remote-list
  • iroh-blobs
    • Modifies Event enum:
      • removes CustomGetRequestReceived
      • adds TransferProgress
    • send_blob now takes an EventSender
    • trait EventSender has been renamed CustomEventSender
    • the concrete (boxed) event sender is now called just EventSender
    • FlumeProgressSender is now AsyncChannelProgressSender
    • 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.
  • iroh-net
    • LocalSwarmDiscovery is not longer UnwindSafe
    • 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 correct iroh 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 to connection 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

Ref

  • (iroh-net) Move PathState to its own module (#2587) - (2e937a8)

v0.22.0 - Clean up on aisle five

05 Aug 20:58
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • iroh-gossip

    • iroh_gossip::dispatcher is removed with everything that was in it. Use the new API from iroh_gossip::net::Gossip instead (see below).
    • iroh_gossip::net::Gossip methods changed:
      • changed: join now returns a GossipTopic
      • removed: broadcastbroadcast_neighborssubscribesubscribe_allquit.
        • for subscribe use join instead, which returns a GossipTopic
        • for broadcast and broadcast_neighbors use the respective methods on GossipTopic .
        • quit is obsolete now, the topic will be quitted once all GossipTopic handles are dropped.
        • subscribe_all is no longer available
    • 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::* to iroh_net::relay::server::*
        • iroh_net::relay::ClientConnHandler to iroh_net::relay::server::ClientConnHandler
        • iroh_net::relay::Metrics to iroh_net::relay::server::Metrics
        • iroh_net::relay::MaybeTlsStreamServer to iroh_net::relay::server::MaybeTlsStreamServer
        • iroh_net::relay::http::Client to iroh_net::relay::HttpClient
        • iroh_net::relay::http::ClientBuilder to iroh_net::relay::HttpClientBuilder
        • iroh_net::relay::http::ClientReceiver to iroh_net::relay::HttpClientReceiver
        • iroh_net::relay::http::ClientError to iroh_net::relay::HttpClientError
        • iroh_net::relay::http::TlsConfig to iroh_net::relay::server::TlsConfig
      • removed iroh_net::relay::http::ServerHandle. The server can now be aborted via its task_handle() function or by dropping it.
      • renamed iroh_net::relay::RelayClient to iroh_net::relay::RelayConn
      • renamed and moved iroh_net::relay::Server to iroh_net::relay::server::ServerActorTask
      • unexposed iroh_net::relay::http::{Server, ServerBuilder}. Use iroh_net::relay::server::Server instead.
    • Properly feature-gate the iroh server implementation behind #[cfg(feature = "iroh-relay")] by feature-gating the whole iroh_net::relay::server module.
  • 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

Ref

  • (iroh-net) Don't write the match as fully exhaustive (#2585) - (43ef8b6)