Skip to content

Releases: n0-computer/iroh

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)

v0.21.0 - Fix, Clean & Polish

22 Jul 18:39
Compare
Choose a tag to compare

⚠️ Breaking Changes

Protocol Changes

  • iroh-relay
    • Clients will dial /relay instead of /derp, this means all 0.21 nodes are only compatible with relays >= 0.20

API Changes

  • iroh-cli
    • top level commands
      • author -> authors
      • blob -> blobs
      • doc -> docs
      • tag -> tags
      • sub commands
        • new -> create
    • added metrics_dump_path on the top level CLI parameters, which if set will make sure metrics are collected at regular intervals and written to the provided path in CSV format.
  • iroh
    • removed deprecated
      • client::MemIroh use iroh::client::Iroh instead
      • client::QuicIroh use iroh::client::Iroh instead
      • client::MemDocuse iroh::client::docs::Doc instead
      • client::QuicDoc use iroh::client::docs::Doc instead
  • iroh-net
    • renamed
      • field: magicsock::metrics::Metrics::update_endpoints -> update_direct_addrs.
    • relay server is now behind the iroh-relay feature flag
    • removed
      • endpoint::Builder::peers_path
    • added
      • endpoint::Builder::known_nodes
  • no automatic storage of known peers anymore in iroh-net
  • Public interfaces using tokio_util::task::LocalPoolHandle now use our own LocalPool/LocalPoolHandle.

⛰️ Features

  • (ci) Publish docker images (#2520) - (c0fa1f4)
  • (iroh-cli) [breaking] Realign cli commands with library (#2522) - (4c11c58)
  • (iroh-net) Add holepunching events (#2495) - (8685222)
  • (iroh-net) [breaking] Remove fs based peers storage (#2510) - (0a8cb8a)
  • (iroh-net) Update netdev to 0.30 (#2528) - (214bb0c)
  • (iroh-relay) Add more context to iroh-relay errors (#2506) - (04df203)

🐛 Bug Fixes

  • (iroh-blobs) Properly handle Drop in local pool during shutdown (#2517) - (b4506b2)
  • (iroh-docs) Do not dial invalid peers (#2470) - (7579caa)
  • (iroh-metrics) Add the bind addr in errors for bind failures (#2511) - (50a8b5c)

🚜 Refactor

  • (iroh) Make use of quic-rpc-derive macros to prettify the rpc declarations (#2508) - (026baaa)
  • (iroh-net) [breaking] Move relay implemention in iroh-net behind iroh-relay cfg flag (#2516) - (f37d9f9)
  • (iroh-net) Switch to new iroh-relay route /relay instead of /derp (#2489) - (b7b493d)
  • (iroh-net) More renaming of endpoint to direct address (#2515) - (0c03f6e)
  • (iroh-net) Remove random choice of direct addr (#2509) - (c1c3539)
  • [breaking] Metrics (#2464) - (09e9746)

📚 Documentation

🧪 Testing

  • (iroh-cli) Improve bao_store_migration test logging (#2483) - (d17ffa3)

⚙️ Miscellaneous Tasks

  • (bytes) Bytes v1.6.0 was yanked so upgrade to bytes v1.6.1 (#2503) - (ecfbed3)
  • Add a flaky tests failure report to our discord notification (#2496) - (f84c06e)
  • Keep GitHub Actions up to date with GitHub's Dependabot (#2498) - (538efbf)

Deprecation

  • (iroh) [breaking] Remove deprecated type aliases (#2467) - (0102b05)

v0.20.0 - More ways to connect

09 Jul 12:49
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • iroh-net

    • Add must_use to utils::AbortingJoinHandle
    • renamed pkarr_publish -> pkarr
    • removed relay::http::server::Protocol::from_url_scheme
    • removed relay::http::ServerBuilder::relay_endpoint
    • iroh_net::defaults is now split into prod and staging
    • iroh_net::discovery::dns::N0_DNS_NODE_ORIGIN is now N0_DNS_NODE_ORIGIN_PROD
    • iroh_net::discovery::pkarr::N0_DNS_PKARR_RELAY is now N0_DNS_PKARR_RELAY_PROD
  • iroh

    • rename client::Iroh::my_relay -> home_relay
    • rename client::Iroh::my_addr -> node_addr
    • rename node::Node::my_relay -> home_relay

⛰️ Features

  • (iroh) Add rpc request to add an AddrInfo (#2433) - (59e2719)
  • (iroh) Gossip client (#2258) - (b0d5413)
  • (iroh) Add missing gossip reexports (#2479) - (af36c2f)
  • (iroh-net) Implement websocket protocol upgrade in iroh-relay (#2387) - (17c654e)
  • (iroh-net) [breaking] Make relay protocol configurable on ClientBuilder instead of defined by the relay url scheme (#2446) - (ab2c7ea)
  • (iroh-net) [breaking] Add PkarrResolver and publish direct addresses in PkarrPublisher when relay is disabled (#2417) - (5ba6855)
  • (iroh-net) Local swarm discovery (#2376) - (3866b6f)
  • [breaking] Split relay configuration between production and staging (#2425) - (d421ece)
  • Add Asia Pacific relay url to the default relay url list in production (#2469) - (23790cb)
  • Docker images for iroh (#2404) - (debc4fb)

🐛 Bug Fixes

  • (cli) Always respect the --metrics-port disabled option (#2459) - (2c40984)
  • (iroh-bytes) Fix off-by-one error in Collection::load (#2473) - (3002deb)
  • (iroh-docs) Ensure docs db write txn gets closed regularly under all circumstances (#2474) - (235c69c)
  • (iroh-docs) [breaking] Add flush_store and use it to make sure the default author is persisted (#2471) - (b88dfa5)
  • (iroh-gossip) Gossip dispatcher: reliable events on join, allow dropping sinks or streams (#2482) - (998d29f)
  • (iroh-net) Delays of non-stun probes for subsequent relays (#2445) - (b34587f)
  • (iroh-net) Use staging URL for pkarr publish in dev mode (#2466) - (fe1d17f)
  • (iroh-net) Unexpected cfg condition values / possible fix on netbsd (#2476) - (aff8152)

🚜 Refactor

  • (iroh) Log inner errors (#2423) - (da3f84b)
  • (iroh) [breaking] Attempt make naming more consistent (#2434) - (6b4435d)
  • (iroh) Modularize protocol (#2454) - (5aa3fb6)
  • (iroh) [breaking] Remove server channel type parameter (#2461) - (f4d1e71)
  • (iroh-relay) [breaking] Remove relay_endpoint config option & rename /derp route to /relay (#2419) - (d4fe155)

📚 Documentation

  • (iroh) Expand module level documentation in iroh (#2463) - (74e8a6a)
  • (iroh-net) Update discovery and dialing docs, signatures (#2472) - (e53714c)
  • Pass Doc instead of Iroh in example (#2432) - (975124c)
  • Example requires example feature to run (#2451) - (623dcc6)
  • Reference rust doc style guide in contributing guidelines (#2452) - (32b23e6)

🧪 Testing

  • (iroh-cli) Also test for "minutes" in transfer time regex 😬 (#2475) - (9dddafc)
  • (iroh-net) Make some tests less flaky (#2457) - (bc0b397)
  • Increase timeout test_run_rpc_lock_file (#2439) - (efececb)
  • Increase timeouts for tests that are flaky on slow CI (#2450) - (cc30743)

⚙️ Miscellaneous Tasks

Deps

v0.19.0 - Make it your own

27 Jun 10:05
Compare
Choose a tag to compare

⚠️ Breaking Changes

  • iroh
    • Builder loses the E type parameter
    • ProtocolBuilder loses the E type parameter
    • rpc_endpoint takes a boxed::ServerEndpoint
    • renamed
      • client::Iroh::connect -> client::Iroh::connect_path
    • added
      • client::Iroh::connect_addr
      • rpc_port field to client::NodeStatus
  • iroh-net
    • The configuration file format for the relay server has changed, deployments will need to updated. For the full format see struct Config in iroh-net/src/bin/iroh-relay.rs. Here a summary:
      • The 3 parts of the server now have an independent enable setting: enable_relayenable_stun and enable_metrics. If omitted they default to true.
      • The way to specify which addresses the server listens on has changed: http_bind_addr is for the relay server, stun_bind_addr for the STUN server, metrics_bind_addr is for the optional metrics server and tls.https_bind_addr is for when TLS is enabled. Note these are now all full socket addresses. All have sensible defaults if omitted.
      • There are new options in tls.cert_path and tls.key_path which allow more control over where the manual TLS keys are to be read from.
    • removed
      • iroh_net::config is removed.
      • iroh_net::config::NetInfo -> removed
      • iroh_net::config::LinkInfo -> removed
      • Endpoing::my_addr_with_endpoints has been removed.
    • renamed
      • Endpoint::local_endpoints -> Endpoint::direct_addresses
      • endpoint::LocalEndpointStream -> endpoint::DirectAddrStream
      • config::Endpoint -> magicsock::DirectAddr
      • config::EndpointType -> magicsock::DirectAddrType
      • Endpoint::local_addr -> Endpoint::bound_sockets
      • Endpoint::my_addr -> Endpoint::node_addr
      • Endpoint::my_relay -> Endpoint::home_relay
      • defaults::DEFAULT_RELAY_STUN_PORT → defaults::DEFAULT_STUN_PORT
    • changed
      • endpoint::Connecting::alpn returns Vec<u8> instead of String
  • iroh-gossip
    • net::Gossip::update_endpoints -> net::Gossip::update_direct_addresses

⛰️ Features

  • (iroh) Allow to disable docs engine completely (#2390) - (0e6d441)
  • (iroh) Allow setting the logging directory via config file (#2391) - (600ba8c)
  • (iroh) [breaking] Expand ability to connect to RPC (#2398) - (d30ed19)

🐛 Bug Fixes

  • (iroh) Do not double-close docs on drop (#2383) - (55a0c0b)
  • (iroh) Use two stage accept from quic-rpc (#2416) - (83b01ad)
  • (iroh-net) [breaking] ALPNs can be bytes, not just strings (#2377) - (f57c34f)
  • (iroh-net) Prevent adding addressing info that points back to us (#2333) - (b2e8557)
  • (iroh-net) poll_send should drop transmits that we dont have a dest for (#2393) - (aba70ea)
  • Properly wait for docs engine shutdown (#2389) - (eb74cf6)
  • Do not panic on blobs db IO error (#2400) - (38e8ce0)

🚜 Refactor

  • (iroh) [breaking] Use ref-cast instead of fields to get the subsystem clients (#2374) - (be3e16e)
  • (iroh) Allow to register custom protocols (#2358) - (13ded84)
  • (iroh) Move code from builder to node and make things nicer (#2386) - (08f1fe0)
  • (iroh) Use boxed client to get rid of the C type parameter (#2353) - (abc7f5e)
  • (iroh) [breaking] Eliminate the type parameter for the rpc service type (#2405) - (52c96ba)
  • (iroh-net) [breaking] Rename Endpoint::my_relay to home_relay (#2361) - (100d27d)
  • (iroh-net) [breaking] Rename Endpoint::my_addr to Endpoint::node_addr (#2362) - (61d5109)
  • (iroh-net) [breaking] Do not use &NodeId in APIs as this is Copy (#2363) - (e9075f3)
  • (iroh-net) [breaking] Rename Endpoint::local_addr to bound_sockets (#2366) - (a5e5939)
  • (iroh-net) [breaking] Rename Endpoint::local_endpoints to direct_addresses (#2369) - (2ac3d01)
  • (iroh-net) Improve magicsock module visibility (#2371) - (3b0bb51)
  • (iroh-net) [breaking] Rework relay-server binary, more configurable, reverse-proxy support (#2341) - (4ff1ec4)
  • (iroh_net) [breaking] Remove Endpoint::my_addr_with_endpoints (#2359) - (3a2faea)

📚 Documentation

🧪 Testing

⚙️ Miscellaneous Tasks

Deps

v0.18.0 - Small, but helpful

07 Jun 14:00
Compare
Choose a tag to compare

API Deprecations

Not breaking yet, but will be breaking in the next release.

  • iroh
    • client::Client.blobs, use client::Client::blobs()
    • client::Client.docs, use client::Client::docs()
    • client::Client.authors, use client::Client::authors()
    • client::Client.tags, use client::Client::tags()

API Breaking Changes

  • iroh-blobs
    • removed
      • util::LivenessTracker
      • downloader::DownloadRequest
        • field tag
        • function untagged
        • function tag
    • added
      • util::TagDrop
      • util::TagCounter
  • iroh-gossip
    • added
      • Gossip::max_message_size
    • changed
      • net::util::read_message, added max_message_size param
      • net::util::write_message, added max_message_size param
      • net::util::read_lp, added max_message_size param
    • removed
      • proto::MAX_MESSAGE_SIZE

⛰️ Features

  • (iroh-gossip) Configure the max message size (#2340) - (7153a38)

🐛 Bug Fixes

  • (docs) Prevent deadlocks with streams returned from docs actor (#2346) - (98914ee)
  • (iroh-net) Fix extra delay (#2330) - (77f92ef)
  • (iroh-net) Return Poll::Read(Ok(n)) when we have no relay URL or direct addresses in poll_send (#2322) - (b2f0b0e)

🚜 Refactor

  • (iroh) [breaking] Replace public fields in iroh client with accessors and use ref-cast to eliminate them entirely (#2350) - (35ce780)
  • (iroh) [breaking] Remove tags from downloader (#2348) - (82aa93f)
  • (iroh-blobs) [breaking] Make TempTag non-Clone (#2338) - (d0662c2)
  • (iroh-blobs) [breaking] Implement some collection related things on the client side (#2349) - (b047b28)
  • Move docs engine into iroh-docs (#2343) - (3772889)

📚 Documentation

  • (iroh-net) Update toplevel module documentation (#2329) - (4dd69f4)
  • (iroh-net) Update endpoint docs (#2334) - (8d91b10)

🧪 Testing

⚙️ Miscellaneous Tasks