v0.15.0
n0-computer/irohv0.15.0Apr 29, 2024by github-actions[bot]
AI Summary
A major refactoring release that introduces new download modes, removes the `magicsock` module in favor of `MagicEndpoint`, and improves address sharing options.
Key Highlights
- Refactor downloader queue and add progress reporting
- Remove the magicsock module from the public api
- Rename endpoint for nodes to node_state
- Improve magicsock's shutdown story
Breaking Changes
- Refactor downloader queue and add progress reporting
- Improve magicsock's shutdown story
- Remove the magicsock module from the public api
- Avoid using futures crate directly
- Implement improved address sharing options
- Only call quinn_connect if a send addr is available
New Features
- More context to errors
- Copy fallback for Export::TryReference
- DNS fallback option
- Direct addr discovery
- Release automation
Full Release Notes
## Breaking API Changes: #### `iroh` - The `BlobDownloadRequest` has a new field `mode` to select between direct and queued downloads, and now contains a list of nodes in place of a single node before - Renamed: `iroh::client::blobs::ShareTicketOptions` -> `iroh_base::node_addr::AddrInfoOptions` - Default for `AddrInfoOptions` is now `Id`, before it was `RelayandAddresses` - Added `addr_options` to `iroh::client::docs::Docs.share` - Added `Id` option to `AddrInfoOptions` #### `iroh-bytes` - `Role` enum is removed - `Downloader::queue` now takes a `DownloadRequest` with more options than before - `DownloadProgress` has a new variant `InitialState` which is emitted when attaching to an already-running download - `ConcurrencyLimits` gained a new field #### `iroh-net` - `MagicEndpoint::close` now consumes the endpoint. - Created new public struct `RelayUrlInfo` that combines the `relay_url` and additional information about the state of our connection to the remote node at this relay URL - `NodeInfo.relay_url` (called `ConnectionInfo` outside of iroh-net) is now `Option<RelayUrlInfo>`, changed from `Option<RelayUrl>` - Renamed: `MagicSock::tracked_endpoints` -> `MagicSock::connection_infos` - Renamed: `MagicSock::tracked_endpoint` -> `MagicSock::connection_info` - Renamed: `magicsock::EndpointInfo` -> `magicsock::ConnectionInfo` - Renamed:`iroh_net::magicsock::ConnectionType` -> `iroh_net::magic_endpoint::ConnectionType` - Renamed:`iroh_net::magicsock::ControlMsg` -> `iroh_net::magic_endpoint::ControlMsg` - Renamed:`iroh_net::magicsock::ConnectionInfo` -> `iroh_net::magic_endpoint::ConnectionInfo` - Renamed:`iroh_net::magicsock::ConnectionTypeStream` -> `iroh_net::magic_endpoint::ConnectionTypeStream` - Renamed:`iroh_net::magicsock::DirectAddrInfo` -> `iroh_net::magic_endpoint::DirectAddrInfo` - Renamed:`iroh_net::magicsock::LocalEndpointsStream` -> `iroh_net::magic_endpoint::LocalEndpointsStream` - Now private: module `magicsock` - Now private:`iroh_net::magicsock::MagicSock` no longer accessible. Use `MagicEndpoint` instead. - Now private:`iroh_net::magicsock::Options` Used internally only. - Now private::`iroh_net::magicsock::PacketSplitIter` This is an implementation detail of internal use only. - Now private: `iroh_net::magicsock::Timer` This is an implementation detail of internal use only. - Now private: `iroh_net::magicsock::UdpSocket` This is an implementation detail of internal use only. #### `iroh-dns-server` - `iroh_dns_server::config::Config` struct has a new field `mainline`. #### `iroh-cli` - renamed `iroh-cli`: `doc share --ticket-options` -> `doc share --addr-options` #### Other - `SetTagOption` was moved from `iroh` to `iroh-bytes` --- ### โฐ๏ธ Features - *(iroh-bytes)* Add more context to errors ([#2196](https://github.com/n0-computer/iroh/issues/2196)) - ([d3fec78](https://github.com/n0-computer/iroh/commit/d3fec78d23f98eb609bb5b7497c447301a8382b2)) - *(iroh-bytes)* [**breaking**] Refactor downloader queue and add progress reporting ([#2085](https://github.com/n0-computer/iroh/issues/2085)) - ([93290e3](https://github.com/n0-computer/iroh/commit/93290e3fb71ad66713dfa846bdf179d81e2c08d6)) - *(iroh-bytes)* Add copy fallback for Export::TryReference ([#2233](https://github.com/n0-computer/iroh/issues/2233)) - ([ec7de88](https://github.com/n0-computer/iroh/commit/ec7de88c87e13fde19713c0d792e397a7dc31fc3)) - *(iroh-dns-server)* [**breaking**] Add dht fallback option ([#2188](https://github.com/n0-computer/iroh/issues/2188)) - ([0b0508b](https://github.com/n0-computer/iroh/commit/0b0508b36c38ccbe2781b7ed4214227c8af8a64e)) - *(iroh-net)* Extend discovery NodeInfo to allow direct addrs ([#2201](https://github.com/n0-computer/iroh/issues/2201)) - ([2c49ee8](https://github.com/n0-computer/iroh/commit/2c49ee8d45b934054be8358e652efca8e2c10f49)) - Release automation ([#2214](https://github.com/n0-computer/iroh/issues/2214)) - ([b5f8277](https://github.com/n0-computer/iroh/commit/b5f827703f89740ee977965515b122005ae48826)) - [**breaking**] Implement improved address sharing options ([#2230](https://github.com/n0-computer/iroh/issues/2230)) - ([a26a350](https://github.com/n0-computer/iroh/commit/a26a35023e0565936925dcf819385df8f368230f)) ### ๐ Bug Fixes - *(ci)* Typo in semver rev check ([#2213](https://github.com/n0-computer/iroh/issues/2213)) - ([2a6ae17](https://github.com/n0-computer/iroh/commit/2a6ae17cfb122f1434709e38bdf8648fd7e3f039)) - *(ci)* Minor corrections for manual release runs ([#2215](https://github.com/n0-computer/iroh/issues/2215)) - ([3a74d89](https://github.com/n0-computer/iroh/commit/3a74d893f6003c9a3b68c7795e6654aed047ba77)) - *(ci)* Fix for windows release runs ([#2216](https://github.com/n0-computer/iroh/issues/2216)) - ([2dfd0ae](https://github.com/n0-computer/iroh/commit/2dfd0aef7c61496456a21fe30dd3b0c97cc8760c)) - *(ci)* Release builds ([#2219](https://github.com/n0-computer/iroh/issues/2219)) - ([ba7317d](https://github.com/n0-computer/iroh/commit/ba7317d903ccbe8807c696c06a475cded3c60fa5)) - *(deps)* Update rustls ([#2218](https://github.com/n0-computer/iroh/issues/2218)) - ([f508830](https://github.com/n0-computer/iroh/commit/f5088303898a9b3197f8275cd3090635d69ffb97)) - *(iroh-bytes)* Do not log redundant file delete error ([#2199](https://github.com/n0-computer/iroh/issues/2199)) - ([1e84ae0](https://github.com/n0-computer/iroh/commit/1e84ae03cc315191c784e3d07c09ed8c30d5821f)) - *(iroh-bytes)* Reduce log level from info to debug for most uncritical operations ([#2202](https://github.com/n0-computer/iroh/issues/2202)) - ([6d36d00](https://github.com/n0-computer/iroh/commit/6d36d0001738ebd309c27af2136f750f97914646)) - *(iroh-cli)* Avoid using debug formatting for rpc errors ([#2203](https://github.com/n0-computer/iroh/issues/2203)) - ([508a812](https://github.com/n0-computer/iroh/commit/508a8123c1c9f9b14a16234bf8519ede97566047)) - *(iroh-dns-server)* Fix bug in pkarr name parsing ([#2200](https://github.com/n0-computer/iroh/issues/2200)) - ([2bb7bd5](https://github.com/n0-computer/iroh/commit/2bb7bd51a460c2de2aaacde35a79c37a33c029bf)) - *(iroh-gossip)* Do not enable "metrics" feature for iroh-net by default ([#2235](https://github.com/n0-computer/iroh/issues/2235)) - ([2693ec5](https://github.com/n0-computer/iroh/commit/2693ec5c0b5ab2fba4a346b388d7ea9bfa04c9b2)) - *(iroh-net)* Suppress HostUnreachable network error as well ([#2197](https://github.com/n0-computer/iroh/issues/2197)) - ([600393b](https://github.com/n0-computer/iroh/commit/600393b3d48509b5603bf31c2f424634ac64268b)) - *(iroh-net)* Better logging for pkarr publish ([#2208](https://github.com/n0-computer/iroh/issues/2208)) - ([0f624cc](https://github.com/n0-computer/iroh/commit/0f624cc2bb59b97737a80cf19737ae50108a0663)) - *(iroh-net)* [**breaking**] Improve magicsock's shutdown story ([#2227](https://github.com/n0-computer/iroh/issues/2227)) - ([265e284](https://github.com/n0-computer/iroh/commit/265e2843e25afca759b3c4917b139c03cad71139)) - *(iroh-net)* [**breaking**] Only call quinn_connect if a send addr is available ([#2225](https://github.com/n0-computer/iroh/issues/2225)) - ([e913051](https://github.com/n0-computer/iroh/commit/e91305138e866ce54327655e7b6df72e072e5c3a)) - *(iroh-net)* Do not persist invalid node addresses ([#2209](https://github.com/n0-computer/iroh/issues/2209)) - ([18b301a](https://github.com/n0-computer/iroh/commit/18b301a877f8d59f1718278e6b3085012cbdfaef)) - *(iroh_net)* Less agressive best_addr clearing on pong timeout ([#2238](https://github.com/n0-computer/iroh/issues/2238)) - ([5329927](https://github.com/n0-computer/iroh/commit/5329927d63c80b3e81d2f0120542e049a573a65d)) - *(iroh_net)* Track `recv_data_ipv4` & `recv_data_ipv6` ([#2243](https://github.com/n0-computer/iroh/issues/2243)) - ([f8ff3bc](https://github.com/n0-computer/iroh/commit/f8ff3bc26be9c36bdfe31fa0ccae1c1b277250aa)) - Better logging for iroh-dns-server ([#2195](https://github.com/n0-computer/iroh/issues/2195)) - ([075737d](https://github.com/n0-computer/iroh/commit/075737d93fe0b8b4ba499860c6a8ce55ce56082a)) - Semver check on main ([#2212](https://github.com/n0-computer/iroh/issues/2212)) - ([5873a55](https://github.com/n0-computer/iroh/commit/5873a55557f68251425746eb171a2caf47eb13e0)) ### ๐ Refactor - *(iroh-net)* [**breaking**] Rename endpoint for nodes to node_state ([#2222](https://github.com/n0-computer/iroh/issues/2222)) - ([26e4564](https://github.com/n0-computer/iroh/commit/26e4564441358a083787542b013a4d4e4b797ba1)) - *(iroh-net)* Merge related fields regarding incoming pings ([#2236](https://github.com/n0-computer/iroh/issues/2236)) - ([0f370ad](https://github.com/n0-computer/iroh/commit/0f370ad4dce0cd0ac566b8a7569c915caf033559)) - *(iroh-net)* [**breaking**] Remove the magicsock module from the public api ([#2247](https://github.com/n0-computer/iroh/issues/2247)) - ([06e0b7b](https://github.com/n0-computer/iroh/commit/06e0b7b3ba1537f66b912b9520cf3fc013b8b3c6)) - *(iroh-sync)* Doc store batching ([#2172](https://github.com/n0-computer/iroh/issues/2172)) - ([9b3165b](https://github.com/n0-computer/iroh/commit/9b3165b7f26685d16042a5e10ee14e80f74da5e9)) - Happy clippy ([#2220](https://github.com/n0-computer/iroh/issues/2220)) - ([d6ff0cf](https://github.com/n0-computer/iroh/commit/d6ff0cf552a4cf2f992205b53efac3a006974843)) - Improve content downloading in docs ([#2127](https://github.com/n0-computer/iroh/issues/2127)) - ([1432d61](https://github.com/n0-computer/iroh/commit/1432d61e7c4367e115e63dfe2785b3ff7b540b8c)) - [**breaking**] Avoid using futures crate directly ([#2117](https://github.com/n0-computer/iroh/issues/2117)) - ([b91b684](https://github.com/n0-computer/iroh/commit/b91b68400ebfcf557feed431f5a6b15a56a796e8)) ### ๐ Documentation - Improve breaking change handling ([#2207](https://github.com/n0-computer/iroh/issues/2207)) - ([d55b782](https://github.com/n0-computer/iroh/commit/d55b782a702ae4a8ee3f850c522597fd588eec03)) ### ๐งช Testing - *(iroh_net)* Mark test_icmpk_probe_eu_relayer as flaky on windows ([#2240](https://github.com/n0-computer/iroh/issues/2240)) - ([ea8e047](https://github.com/n0-computer/iroh/commit/ea8e047ea5a6efb3e2e031729639fc8fc6d429e8)) - Remove flaky label from windows-DNS affected tests ([#2223](https://github.com/n0-computer/iroh/issues/2223)) - ([93bcaa5](https://github.com/n0-computer/iroh/commit/93bcaa5a6adf92856eeb9938b4c4921aa6e3dfae)) - Mark iroh::sync_big flaky ([#2245](https://github.com/n0-computer/iroh/issues/2245)) - ([297fd1a](https://github.com/n0-computer/iroh/commit/297fd1a4d7db97cc41ec222f6651e572f0c43f29)) ### โ๏ธ Miscellaneous Tasks - Rename derper > iroh-relay ([#2211](https://github.com/n0-computer/iroh/issues/2211)) - ([ebe7196](https://github.com/n0-computer/iroh/commit/ebe7196a978dccf4873188a2355039b496efc402)) ### Deps - *(iroh-blake3)* Upgrade to version fixing more symbol collions ([#2246](https://github.com/n0-computer/iroh/issues/2246)) - ([0c336c4](https://github.com/n0-computer/iroh/commit/0c336c40a015ed13492256d6831965b5a4ddef6f))