iroh 1.0.3 - Steadier Connections

by ramfox

Welcome to a new release of iroh, a modular networking stack in Rust, for building direct connections between devices.

We've shipped iroh 1.0.3 together with noq 1.1.0 to give you a cleaner, smoother connection experience. Say "goodbye" to some pesky panics and "hello" to better error messaging.

Connections hold up better under real-world conditions

This release closes up a handful of corner cases in noq: path validation is timed more consistently when a new path opens, better handling of received data referring to abandoned paths, and a connection-accounting bug that could undercount active connections is fixed. Packet coalescing during the handshake is also more correct now, which matters most on networks that don't behave nicely.

Specifically, if you were seeing the following panics, they have been fixed!

  • panicked at noq-1.0.1/src/endpoint.rs:648:17: attempt to subtract with overflow
  • panicked at noq-proto-1.0.1/src/connection/packet_builder.rs:159:9: assertion failed: max_size >= min_size

Fewer confusing errors, less noise

A couple of small changes make failures easier to reason about. Connecting with an empty ALPN now gives you a clear error instead of a panic. Logs are quieter in a couple of places. Small stuff, but it adds up to a better experience when looking through logs to debug.

A win for us because of open source

On top of the work we did to improve noq, we've also merged some extremely helpful upstream commits that were implemented by the folks working on quinn. Thank you!

Better defaults out of the box

The n0 preset now includes an HTTPS-based pkarr resolver. This means that we now, by default, have a fallback if our normal DNS-based resolver fails.

What's next?

We expect the next few releases to keep this rhythm: happy maintenance releases every few weeks, with small fixes for corner cases and invisible improvements. As always, the full details are in the changelogs for iroh and noq.

See you at the next release, and keep filing those bugs!

Iroh is a dial-any-device networking library that just works. Compose from an ecosystem of ready-made protocols to get the features you need, or go fully custom on a clean abstraction over dumb pipes. Iroh is open source, and already running in production on hundreds of thousands of devices.
To get started, take a look at our docs, dive directly into the code, or chat with us in our discord channel.