v0.16.0
n0-computer/irohv0.16.0May 13, 2024by github-actions[bot]
AI Summary
This is a major rebranding release renaming `iroh-bytes` to `iroh-blobs` and `iroh-sync` to `iroh-docs`, along with a significant refactor of the networking API to `magic_endpoint`.
Key Highlights
- Renamed `iroh-bytes` to `iroh-blobs` and `iroh-sync` to `iroh-docs`
- Renamed `magicsock` to `magic_endpoint`
- Unified node API
- Improved initial connection latency
Breaking Changes
- `iroh-bytes` is now `iroh-blobs`
- `iroh-sync` is now `iroh-docs`
- Renamed `magicsock` types to `magic_endpoint`
- Renamed `sync` -> `docs`, `bytes` -> `blobs`
- Renamed `ProviderService` -> `RpcService`
- Moved `DocTicket` into `iroh-sync`
- Moved client methods to `client::Client`
- Removed `ticket` and `dial` modules
- `MagicEndpoint::accept` returns `Accept` instead of Quinn's `Accept`
- `magic_endpoint::Connecting` replaces `quinn::Connecting`
- Renamed `client::Node` methods to `client::Client`
New Features
- Report connection type changes in rolling fashion
- Allow the addr info of tickets to be empty
- Make ticket-inspect print full node ids
- Add doctor plot
- Expose DNS resolver
- Improve initial connection latency
- Own the public QUIC API
- Update from `default-net` to `netdev`
Full Release Notes
## Breaking Changes
- `iroh-bytes` is now `iroh-blobs`
- `iroh-sync` is now `iroh-docs`
### `iroh-net`
- renamed:
- `magicsock::ConnectionType` -> `magic_endpoint::ConnectionType`
- `magicsock::ControlMsg` -> `iroh_net::magic_endpoint::ControlMsg`
- `magicsock::ConnectionInfo` -> `iroh_net::magic_endpoint::ConnectionInfo`
- `magicsock::ConnectionTypeStream` -> `iroh_net::magic_endpoint::ConnectionTypeStream`
- `magicsock::DirectAddrInfo` -> `iroh_net::magic_endpoint::DirectAddrInfo`
- `magicsock::LocalEndpointsStream` -> `iroh_net::magic_endpoint::LocalEndpointsStream`
- made private:
- `net::interfaces`
- `magicsock`
- `MagicEndpoint::accept` now returns `magic_endpoint::Accept` rather than Quinn's `Accept` type.
- `magic_endpoint::Connecting` replaces `quinn::Connecting`. This is the type returned by `.await`ing the `Accept` future.
- `magic_endpoint::accept_conn` and `magic_endpoint::get_alpn` have been removed. You now accept the connection by directly awaiting the futures returned. To retrieve the ALPN use the new `Connecting::alpn` method.
### `iroh`
- renamed:
- `sync` -> `docs`
- `bytes` -> `blobs`
- `ProviderService` -> `RpcService`
- `iroh::client`
- `mem::Iroh` -> `MemIroh`
- `mem::Doc` -> `MemDoc`
- `quic::Iroh` -> `QuicIroh`
- `quic::Doc` -> `QuicDoc`
- `blobs::BlobReader` -> `blobs::Reader`
- `blobs::BlobAddProgress` -> `blobs::AddProgress`
- `blobs::BlobAddOutcome` -> `blobs::AddOutcome`
- `blobs::BlobDownloadProgress` -> `blobs::DownloadProgress`
- `blobs::BlobDownloadOutcome` -> `blobs::DownloadOutcome`
- `blobs::BlobExportProgress` -> `blobs::ExportProgress`
- `docs::DocImportFileProgress` -> `docs::ImportFileProgress`
- `docs::DocExportFileProgress` -> `docs::ExportFileProgress`
- `docs::DocImportFileOutcome` -> `docs::ImportFileOutcome`
- `docs::DocExportFileOutcome` -> `docs::ExportFileOutcome`
- `rpc_protocol::NodeStatusResponse` -> `client::node::NodeStatus`
- `rpc_protocol::ListTagsResponse` -> `client::tags::TagInfo`
- `rpc_protocol::BlobListResponse` -> `client::blobs::BlobInfo`
- `rpc_protocol::BlobListIncompleteResponse` -> `client::blobs::IncompleteBlobInfo`
- `rpc_protocol::BlobListCollectionResponse` -> `client::blobs::CollectionInfo`
- `rpc_protocol::DownloadMode` -> `client::blobs::DownloadMode`
- moved:
- `DocTicket` into `iroh-sync`
- `client::Node::stats` -> `client::Client::stats`
- `client::Node::connections` -> `client::Client::connections`
- `client::Node::connection_info` -> `client::Client::connection_info`
- `client::Node::status` -> `client::Client::status`
- `client::Node::id` -> `client::Client::node_id`
- `client::Node::shutdown` -> `client::Client::shutdown`
- removed:
- `ticket` module
- `dial` module
- made private:
- `sync_engine`
- `client::rpc_protocol`
- `client::quic::RPC_ALPN`
- `client::quic::connect_raw`
- added:
- `client::node::Client::id`
- `client::blobs::Client::download_with_opts`
- `client::blobs::Client::download_hash_seq`
- `client::Client::my_relay`
- `client::Client::my_addr`
- removed
- `node::Node::ticket`, use `client::blobs::Client::share` instead
### โฐ๏ธ Features
- *(doctor)* Report connection type changes in rolling fashion ([#2251](https://github.com/n0-computer/iroh/issues/2251)) - ([9a050a9](https://github.com/n0-computer/iroh/commit/9a050a954bcd3f3baedfa148b33e6df356a0c0f0))
- *(iroh)* [**breaking**] Unify node api ([#2275](https://github.com/n0-computer/iroh/issues/2275)) - ([6ed6b34](https://github.com/n0-computer/iroh/commit/6ed6b34d755aade02ce06e07b4f6c0faae616f09))
- *(iroh-base)* Allow the addr info of tickets to be empty ([#2254](https://github.com/n0-computer/iroh/issues/2254)) - ([5502c5a](https://github.com/n0-computer/iroh/commit/5502c5a8a88b11175c441b8730f3594fe2aad954))
- *(iroh-cli)* Make ticket-inspect print full node ids ([#2261](https://github.com/n0-computer/iroh/issues/2261)) - ([f099dab](https://github.com/n0-computer/iroh/commit/f099dab7742106eb49b36161d8e1b5ff4ed70c42))
- *(iroh-cli)* Add doctor plot ([#2206](https://github.com/n0-computer/iroh/issues/2206)) - ([4f1d8b0](https://github.com/n0-computer/iroh/commit/4f1d8b07f3851a0a15b55d4504fdd631fa5b8810))
- *(iroh-net)* Expose DNS resolver ([#2262](https://github.com/n0-computer/iroh/issues/2262)) - ([6504727](https://github.com/n0-computer/iroh/commit/650472793fb298aabf64195c0872e38bb7ca2fd0))
- *(iroh-net)* [**breaking**] Improve initial connection latency ([#2234](https://github.com/n0-computer/iroh/issues/2234)) - ([ec48b0d](https://github.com/n0-computer/iroh/commit/ec48b0d7eaef7f976f8d04e74629a4df07dcf39b))
- *(iroh-net)* Own the public QUIC API ([#2279](https://github.com/n0-computer/iroh/issues/2279)) - ([b62e904](https://github.com/n0-computer/iroh/commit/b62e90409f43aa06cbfb1f45a2ee2f9ae2af77de))
- Update from `default-net` to rebranded `netdev` ([#2264](https://github.com/n0-computer/iroh/issues/2264)) - ([302fea4](https://github.com/n0-computer/iroh/commit/302fea4ac46ad2e8119dc3df247fcd439c2a3892))
### ๐ Bug Fixes
- *(iroh-net)* Reconfirm best addr when receiving data on it ([#2255](https://github.com/n0-computer/iroh/issues/2255)) - ([6fbf4a9](https://github.com/n0-computer/iroh/commit/6fbf4a92c98c394e888f3e33f40e20ede3ca7bcb))
- *(iroh-net)* Do not log as error if client disconnects from relay ([#2259](https://github.com/n0-computer/iroh/issues/2259)) - ([cdedc43](https://github.com/n0-computer/iroh/commit/cdedc434731428cb8dc80a5fcb9a46e6af4f85e3))
### ๐ Refactor
- *(iroh)* [**breaking**] Cleanup public API ([#2263](https://github.com/n0-computer/iroh/issues/2263)) - ([d41f433](https://github.com/n0-computer/iroh/commit/d41f4331b94619360a2ceec5c48ae1c332518fa0))
- *(iroh-net)* [**breaking**] Make the interfaces module private ([#2266](https://github.com/n0-computer/iroh/issues/2266)) - ([38bdaef](https://github.com/n0-computer/iroh/commit/38bdaef1bc7053bfdafee5a48b99f3b56acb50b5))
- Renames iroh-sync & iroh-bytes ([#2271](https://github.com/n0-computer/iroh/issues/2271)) - ([26d718f](https://github.com/n0-computer/iroh/commit/26d718f324293ea1e428ce7b28a631e676d51279))
### ๐งช Testing
- *(iroh)* Test sync with restarting node ([#2146](https://github.com/n0-computer/iroh/issues/2146)) - ([ec1e1d2](https://github.com/n0-computer/iroh/commit/ec1e1d2d424ecdde6a7af57978052e3f47859494))
- *(iroh-net)* Fix relay's codec proptesting ([#2283](https://github.com/n0-computer/iroh/issues/2283)) - ([5343cea](https://github.com/n0-computer/iroh/commit/5343cea0e00741fb5a6c4c014a600c30a9f99fb6))
- Disable flaky tests on windowns again ([#2267](https://github.com/n0-computer/iroh/issues/2267)) - ([6cc12d8](https://github.com/n0-computer/iroh/commit/6cc12d856101aaed64dd11c5c12f346ab43223d8))