Skip to content

feat: upgrade iroh to 1.0.2 - #165

Merged
ecv merged 1 commit into
mainfrom
evetere/161-iroh-1.0.2
Jul 8, 2026
Merged

feat: upgrade iroh to 1.0.2#165
ecv merged 1 commit into
mainfrom
evetere/161-iroh-1.0.2

Conversation

@ecv

@ecv ecv commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

What

Upgrade the datum-cloud/app workspace's iroh dependency stack from 0.97 to the stable 1.0 line (latest 1.0.2), with the accompanying API migration.

Why

Issue #161 originally targeted v1.0.0-rc.0, now obsolete — stable 1.0.0 shipped 2026-06-15 and 1.0.2 is current. This jumps straight to stable and skips the release candidates. Parallel to the iroh-gateway upgrade (datum-cloud/iroh-gateway#11).

Dependency bumps

Workspace Cargo.toml:

Crate 0.97 → verified
iroh / iroh-base / iroh-relay 1.0 1.0.2
iroh-tickets 1.0 1.0.0
iroh-metrics 1.0 1.0.1
iroh-proxy-utils 0.3 0.3.0
iroh-services 1.0 1.0.0
n0-error 1.0 1.0.0
  • lib/Cargo.toml: iroh-blobs 0.99.00.103.0
  • n0des-local/Cargo.toml: irpc / irpc-iroh 0.130.17

API migration

Compile-driven against iroh 1.0.2. Breakages surfaced:

  • iroh-services feature gates removed — the net_diagnostics and client_host features no longer exist; those modules (ClientHost, CLIENT_HOST_ALPN, caps::NetDiagnosticsCap, net_diagnostics) are now compiled unconditionally. Dropped the features = [...] list.
  • iroh_relay::dns is privateDnsProtocol/DnsResolver imported from iroh::dns (lib/src/node.rs).
  • Endpoint::empty_builder() removedEndpoint::builder(presets::Empty) (lib/src/node.rs).
  • SecretKey::generate(rng)SecretKey::generate() — no argument (lib/src/repo.rs, n0des-local/src/lib.rs).
  • iroh_tickets::Ticket trait reshaped (lib/src/state.rs): to_bytes/from_bytes renamed to encode_bytes/decode_bytes; the removed Ticket::deserialize(s) is replaced by the trait's provided decode_string(s). Round-trip is preserved — the default encode_string/decode_string are mutually consistent (KIND prefix + base32 of encode_bytes).

Obsolete pin removed

lib/Cargo.toml carried a transitive pin pkcs8 = "=0.11.0-rc.11" to work around an ed25519-dalek 3.0.0-pre.1 incompatibility via the old iroh. iroh 1.0.2 resolves stable pkcs8 0.11.0 with ed25519-dalek 3.0.0-rc.0, so the pin is removed per its own TODO.

Validation

  • cargo check --workspace clean (exit 0; only 2 pre-existing unused-variable warnings in ui/, unrelated)
  • cargo test --workspace — see PR checks
  • cargo clippy --workspace — see PR checks

n0des-local note: this crate is excluded from the workspace yet inherits workspace = true dependencies, so it is not standalone-buildable with cargo in its own directory (pre-existing structural condition, independent of this upgrade — it is not a CI target). Its edits (irpc/irpc-iroh bump, SecretKey::generate()) are applied for consistency but could not be compile-verified in isolation.

Follow-up

Overall upgrade tracked in datum-cloud/network-services-operator#168. Relay image bump (Step 3) is datum-cloud/infra#3212.

Closes #161

Upgrade the workspace iroh dependency stack from 0.97 to the stable 1.0
release line (latest 1.0.2). The original target was v1.0.0-rc.0; stable
1.0.0 shipped 2026-06-15 and 1.0.2 is current, so this jumps straight to
stable and skips the release candidates.

Dependency bumps:
- Workspace: iroh, iroh-base, iroh-relay, iroh-tickets to 1.0,
  iroh-metrics to 1.0, iroh-proxy-utils to 0.3, iroh-services to 1.0,
  n0-error to 1.0
- lib: iroh-blobs 0.99.0 -> 0.103.0
- n0des-local: irpc, irpc-iroh 0.13 -> 0.17

API migration (compile-driven against 1.0.2):
- iroh-services net_diagnostics/client_host feature gates removed; those
  modules are now compiled unconditionally, so drop the features list
- DnsProtocol/DnsResolver move from iroh_relay::dns to iroh::dns
- Endpoint::empty_builder() removed; use Endpoint::builder(presets::Empty)
- SecretKey::generate() no longer takes an rng argument
- iroh_tickets::Ticket reshaped: to_bytes/from_bytes renamed to
  encode_bytes/decode_bytes, and the removed Ticket::deserialize is
  replaced by the trait-provided decode_string; round-trip is preserved

Remove the obsolete pkcs8 = "=0.11.0-rc.11" transitive pin: iroh 1.0.2
resolves stable pkcs8 0.11.0 with ed25519-dalek 3.0.0-rc.0, satisfying
the pin's own removal condition.

cargo check, test (34 passed), and clippy are clean.

Part of datum-cloud/network-services-operator#168.
Closes #161
@ecv
ecv merged commit 169b18e into main Jul 8, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade iroh to 1.0.2

2 participants