github n0-computer/iroh v0.29.0

latest release: v0.30.0
16 days ago

⚠️ 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 memory leaks in the iroh-relay server (#2915) - (e2c3c98)
  • (iroh-relay) Do not use spawn_blocking in stun handler (#2924) - (1084400)
  • (netwatch) BSD rebind socket on errors (#2913) - (c451750)
  • (netwatch) Hold on to netmon sender reference in android (#2923) - (4bd4df7)
  • Update to patched iroh-gossip 0.28.1 - (bd44719)
  • Enforce cc@1.1.31 (#2907) - (68c6184)
  • Remove problematic usage of else branches in tokio::selects (#2940) - (ccfc700)

🚜 Refactor

  • (iroh) [breaking] Move blobs and tags rpc client and server to iroh-blobs (#2874) - (d6a32f4)
  • (iroh) Extract docs RPC into iroh-docs (#2868) - (289b4cf)
  • (iroh) [breaking] Get rid of some dependencies (#2948) - (73e7d44)
  • (iroh) [breaking] Extract net and node rpc (#2927) - (f174c8e)
  • (iroh-cli) [breaking] Use blobs and tags cli from iroh-blobs crate (#2942) - (f9e883d)
  • (iroh-cli) [breaking] Use docs and authors cli from iroh-docs crate (#2947) - (ad91831)
  • (iroh-cli) [breaking] Use gossip cli from iroh-gossip crate (#2945) - (fcc105b)
  • (iroh-cli) [breaking] Use config and logging from iroh-node-utils (#2953) - (3ff914d)
  • (iroh-cli) [breaking] Move net and node cli into iroh-node-util under the cli feature (#2954) - (cbf7fd0)
  • (iroh-net) Remove dead code in relay http-server (#2908) - (23b874c)
  • (iroh-relay) Improve overall server structure (#2922) - (0e57292)
  • (iroh-router) [breaking] Change accept to take an AsRef<[u8]> (#2963) - (4e3b431)
  • [breaking] Remove default protocols and iroh-cli (#2928) - (a956319)
  • Move iroh-router into iroh-net and rename iroh-net to iroh (#2973) - (f7764ef)
  • Cleanup internal dependency references (#2976) - (fb20176)
  • Extract iroh-metrics into its own repo (#2989) - (df591bc)
  • Extract net-tools (#2991) - (574337a)

📚 Documentation

🧪 Testing

  • (iroh) Feature-flag the doc test (#2983) - (b30f218)
  • (iroh-cli) Increase wait on windows resumption tests (#2919) - (f80dd3f)
  • (iroh-relay, netcheck) Move tests to use local relays (#2935) - (8edaee9)

⚙️ Miscellaneous Tasks

Ref

  • (iroh) Remove unused function (#2984) - (4ffbd13)
  • (iroh-metrics, iroh-relay) Remove the UsageStatsReporter (#2952) - (8b7611e)
  • (iroh-net) [breaking] Make Endpoint::close not consume self (#2882) - (50f66dd)

Don't miss a new iroh release

NewReleases is sending notifications on new releases.