v0.34.0

n0-computer/irohv0.34.0Mar 17, 2025by github-actions[bot]

AI Summary

A major release switching TLS authentication to raw public keys and renaming discovery modules.

Key Highlights

  • Switched TLS authentication to raw public keys (default).
  • Renamed local_swarm_discovery to mdns.
  • Changed ProtocolHandler::accept to take Connection instead of Connecting.
  • Changed default cert format from DER to PEM.
  • Removed MAPPED_ADDR_PORT from net-report.
  • Added netwatch::netmon::Monitor and metrics feature in Wasm.

Breaking Changes

  • TLS authentication switched to raw public keys.
  • local_swarm_discovery renamed to mdns.
  • ProtocolHandler::accept signature changed.
  • Default cert format changed to PEM.
  • MAPPED_ADDR_PORT removed.

New Features

  • netwatch::netmon::Monitor and metrics in Wasm.
  • Limiting incoming connections on the router.

Full Release Notes

## ⚠️   Breaking Changes

- `iroh`
   - added:
      - `endpoint::Builder::tls_x509` to enable using X.509 TLS certificates.
      By default iroh endpoints will now use the new `RawPublicKey` TLS configuration. This means they will not be able to talk to older iroh nodes. If needed, the old mechanism can still be used by configuring the endpoint like this:

```rust
let endpoint = Endpoint::builder()
   .tls_x509() // <--- this enables the old style TLS authentication
   // ...
   .bind();
```
   - changed:
      - renamed `iroh::discovery::local_swarm_discovery` to `iroh::discovery::mdns`
      - renamed `iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery` to `iroh::discovery::mdns::MdnsDiscovery`
      - changed the default cert format for `Reloading` certificate mode from `DER` to `PEM`
      - trait method `ProtocolHandler::accept(&self, connection: iroh::endpoint::Connection)` used to take an `iroh::endpoint::Connecting`, now takes a `iroh::endpoint::Connection`.
     
- `iroh-net-report`
   - removed:
      - `iroh-base`: We removed the unused `getrandom` optional dependency. As such, there doesn't exist a `getrandom` feature flag in `iroh-base` anymore.
      - `MAPPED_ADDR_PORT` is removed.
   - changed:
      - `IpMappedAddr::socket_addr` -> `IpMappedAddr::private_socket_addr`
     
## ⛰️  Features

- *(iroh)* Enable `netwatch::netmon::Monitor` and the `metrics` feature in Wasm ([#3206](https://github.com/n0-computer/iroh/issues/3206)) - ([7acfe39](https://github.com/n0-computer/iroh/commit/7acfe395429edc5810efa5136fbd77e7ae9d4952))
- *(iroh)* [**breaking**] Allow for limiting incoming connections on the router ([#3157](https://github.com/n0-computer/iroh/issues/3157)) - ([3e16848](https://github.com/n0-computer/iroh/commit/3e168483b08d3e9705f616812b567634ed35cf9b))
- *(iroh)* [**breaking**] Switch TLS authentication to raw public keys ([#2937](https://github.com/n0-computer/iroh/issues/2937)) - ([d8c8c8e](https://github.com/n0-computer/iroh/commit/d8c8c8e393243a1858f84354b7e92443ed665146))
- [**breaking**] Add `DiscoveryItem::user_data` method and adjust `locally-discovered-nodes` example ([#3215](https://github.com/n0-computer/iroh/issues/3215)) - ([f6b5f5c](https://github.com/n0-computer/iroh/commit/f6b5f5cf0d8b6e75e2f87707b71855f32b12481f))

## 🐛 Bug Fixes

- *(iroh)* Don't cause re-stuns all the time in browsers ([#3234](https://github.com/n0-computer/iroh/issues/3234)) - ([ef3645e](https://github.com/n0-computer/iroh/commit/ef3645e8b7d5700e309de3cd13b745bbf352f151))
- *(iroh-base)* [**breaking**] Remove unused `getrandom` dependency ([#3202](https://github.com/n0-computer/iroh/issues/3202)) - ([0c7a122](https://github.com/n0-computer/iroh/commit/0c7a1227cf1b9f640145c059c7581f2c502e6691))
- *(iroh-relay)* Report round-trip-latency instead of single-trip for QAD ([#3230](https://github.com/n0-computer/iroh/issues/3230)) - ([00f8309](https://github.com/n0-computer/iroh/commit/00f8309b00158fdb7a4565d4cd85c404262cd19b))
- *(relay)* [**breaking**] Change default cert format from der to pem ([#3204](https://github.com/n0-computer/iroh/issues/3204)) - ([4930837](https://github.com/n0-computer/iroh/commit/493083765083c77fd74c7575236d8b7696b61754))
- Update project_sync ([#3213](https://github.com/n0-computer/iroh/issues/3213)) - ([aa7463b](https://github.com/n0-computer/iroh/commit/aa7463bcc025aae69b164c101e8d7d52c96184db))

## 🚜 Refactor

- *(iroh)* Factor out socket-related state & construction into `magicsock::SocketState` and `ActorSocketState` ([#3203](https://github.com/n0-computer/iroh/issues/3203)) - ([2a49265](https://github.com/n0-computer/iroh/commit/2a492652b3c322dfd05c5f43a90d368195d6d121))
- *(iroh, iroh-net-report)* [**breaking**] Make ports more private ([#3207](https://github.com/n0-computer/iroh/issues/3207)) - ([906250b](https://github.com/n0-computer/iroh/commit/906250bb28244ad62c23399c9b10494226610c5a))

## 📚 Documentation

- *(iroh)* Fix quicwg.org link ([#3235](https://github.com/n0-computer/iroh/issues/3235)) - ([f09c89e](https://github.com/n0-computer/iroh/commit/f09c89e8bda4a7d09a5335b9439bede5eec73d5d))

## ⚙️ Miscellaneous Tasks

- Switch from `backoff` to `backon` ([#3227](https://github.com/n0-computer/iroh/issues/3227)) - ([14795ab](https://github.com/n0-computer/iroh/commit/14795ab89747ec72868fad07f91424b8a408b45c))