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))