From 488a77abd4f982325742d71c5496434c2346cc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cramfox=E2=80=9D?= <“kasey@n0.computer”> Date: Tue, 21 Jul 2026 13:05:10 -0400 Subject: [PATCH 1/4] blog: iroh 1.0.3 and noq 1.1.0 release --- src/app/blog/iroh-1-0-3/page.mdx | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/app/blog/iroh-1-0-3/page.mdx diff --git a/src/app/blog/iroh-1-0-3/page.mdx b/src/app/blog/iroh-1-0-3/page.mdx new file mode 100644 index 00000000..ede3ba85 --- /dev/null +++ b/src/app/blog/iroh-1-0-3/page.mdx @@ -0,0 +1,55 @@ +import { BlogPostLayout } from '@/components/BlogPostLayout' +import { MotionCanvas } from '@/components/MotionCanvas' + +export const post = { + draft: false, + author: 'ramfox', + date: '2026-07-21', + title: 'iroh 1.0.3 - Steadier Connections', + description: 'Release of iroh v1.0.3, alongside noq v1.1.0', +} + +export const metadata = { + title: post.title, + description: post.description, + openGraph: { + title: post.title, + description: post.description, + images: [{ + url: `/api/og?title=Blog&subtitle=${post.title}`, + width: 1200, + height: 630, + alt: post.title, + type: 'image/png', + }], + type: 'article' + } +} + +export default (props) => + +Welcome to a new release of `iroh`, a modular networking stack in Rust, for building direct connections between devices. + +After [last release's security fix](/blog/iroh-1-0-2), we're happy to be back to the good kind of boring. We've shipped iroh 1.0.3 together with [noq 1.1.0](https://github.com/n0-computer/noq/releases/tag/noq-v1.1.0) to give you a cleaner, smoother connection experience, without breaking any APIs. + +## Connections hold up better under real-world conditions + +This release closes up a handful of corner cases in noq: path validation is timed more correctly when a new path opens, stray packets from paths that have already been abandoned are no longer allowed to cause confusion, 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. + +## 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. + +## Know when a connection is trustworthy + +noq adds a new `Connection::authenticated` method that succeeds as soon as an 0-RTT connection is proven to not be a replay attack (and always succeeds immediately in a 1-RTT connection). We still have `Connection::handshake_confirmed`, which waits longer for the client to confirm the client-side authentication. Read more [here](https://docs.rs/noq/latest/noq/struct.Connection.html#method.authenticated) + +## Better defaults out of the box + +The `n0` preset now includes a pkarr resolver. This means that we now, by default, have a fallback if our normal DNS 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](https://github.com/n0-computer/iroh/releases/tag/v1.0.3) and [noq](https://github.com/n0-computer/noq/releases/tag/noq-v1.1.0). + +See you at the next release, and keep [filing](https://github.com/n0-computer/iroh/issues) those bugs! From 39bfb16bfe64c0f1544c7aceed51b40fe8f42f2e Mon Sep 17 00:00:00 2001 From: ramfox Date: Wed, 22 Jul 2026 09:39:43 -0400 Subject: [PATCH 2/4] Update src/app/blog/iroh-1-0-3/page.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Diva Martínez <26765164+divagant-martian@users.noreply.github.com> --- src/app/blog/iroh-1-0-3/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/blog/iroh-1-0-3/page.mdx b/src/app/blog/iroh-1-0-3/page.mdx index ede3ba85..78a59957 100644 --- a/src/app/blog/iroh-1-0-3/page.mdx +++ b/src/app/blog/iroh-1-0-3/page.mdx @@ -34,7 +34,7 @@ After [last release's security fix](/blog/iroh-1-0-2), we're happy to be back to ## Connections hold up better under real-world conditions -This release closes up a handful of corner cases in noq: path validation is timed more correctly when a new path opens, stray packets from paths that have already been abandoned are no longer allowed to cause confusion, 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. +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. ## Fewer confusing errors, less noise From a1abf2f2373348f07907f0fae56e8d6cead4ae64 Mon Sep 17 00:00:00 2001 From: ramfox Date: Wed, 22 Jul 2026 09:39:54 -0400 Subject: [PATCH 3/4] Update src/app/blog/iroh-1-0-3/page.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Philipp Krüger --- src/app/blog/iroh-1-0-3/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/blog/iroh-1-0-3/page.mdx b/src/app/blog/iroh-1-0-3/page.mdx index 78a59957..52bca4a2 100644 --- a/src/app/blog/iroh-1-0-3/page.mdx +++ b/src/app/blog/iroh-1-0-3/page.mdx @@ -46,7 +46,7 @@ noq adds a new `Connection::authenticated` method that succeeds as soon as an 0- ## Better defaults out of the box -The `n0` preset now includes a pkarr resolver. This means that we now, by default, have a fallback if our normal DNS resolver fails. +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? From bbeb1c661eeeb104e7af6ba3892328a3d243d975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cramfox=E2=80=9D?= <“kasey@n0.computer”> Date: Wed, 22 Jul 2026 10:04:32 -0400 Subject: [PATCH 4/4] blog: iroh 1.0.3 post, incorporate feedback --- src/app/blog/iroh-1-0-3/page.mdx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/app/blog/iroh-1-0-3/page.mdx b/src/app/blog/iroh-1-0-3/page.mdx index 52bca4a2..633b0b8b 100644 --- a/src/app/blog/iroh-1-0-3/page.mdx +++ b/src/app/blog/iroh-1-0-3/page.mdx @@ -30,19 +30,24 @@ export default (props) => Welcome to a new release of `iroh`, a modular networking stack in Rust, for building direct connections between devices. -After [last release's security fix](/blog/iroh-1-0-2), we're happy to be back to the good kind of boring. We've shipped iroh 1.0.3 together with [noq 1.1.0](https://github.com/n0-computer/noq/releases/tag/noq-v1.1.0) to give you a cleaner, smoother connection experience, without breaking any APIs. +We've shipped iroh 1.0.3 together with [noq 1.1.0](https://github.com/n0-computer/noq/releases/tag/noq-v1.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. -## Know when a connection is trustworthy +## A win for us because of open source -noq adds a new `Connection::authenticated` method that succeeds as soon as an 0-RTT connection is proven to not be a replay attack (and always succeeds immediately in a 1-RTT connection). We still have `Connection::handshake_confirmed`, which waits longer for the client to confirm the client-side authentication. Read more [here](https://docs.rs/noq/latest/noq/struct.Connection.html#method.authenticated) +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](https://github.com/quinn-rs/quinn). Thank you! ## Better defaults out of the box