diff --git a/Cargo.lock b/Cargo.lock index 3cb400f..af83de1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2480,9 +2480,9 @@ dependencies = [ [[package]] name = "iroh" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460de6bc52163b41b1646931f2897e5ab986f0966ade444467fec25024751a72" +checksum = "329552fad4e46b5ccb4439d5635216f6289eec2c46f3fde4bc732d762694b9e5" dependencies = [ "backon", "blake3", @@ -2531,9 +2531,9 @@ dependencies = [ [[package]] name = "iroh-base" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6be73e16ee21c923aca9b3121aaa0db936f7c7ecc156ff47b8dac944c68d59a8" +checksum = "3ccf4cde68a02ef03c0095ab2c031c6adfe508f3bc8e7c258558a027ebe64a8e" dependencies = [ "curve25519-dalek 5.0.0", "data-encoding", @@ -2550,9 +2550,9 @@ dependencies = [ [[package]] name = "iroh-dns" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f6a9b39d18e6345f5c151afd299f2488e2cb5c520fe41b107b6bd3dc4c3349" +checksum = "9a41224eb0140a5c519935d4073fc6b236d174080be401f9bf7da126b2ee3aa4" dependencies = [ "arc-swap", "cfg_aliases", @@ -2680,9 +2680,9 @@ dependencies = [ [[package]] name = "iroh-relay" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24bd586cf927f7b700f56ec3639b53cb5fa901ce284784051ff71092bfbf8193" +checksum = "1b5f6f07e2c9b0c4bc82e2864be09f4aea4320165d5316e668616dbc822f428a" dependencies = [ "blake3", "bytes", @@ -3200,9 +3200,9 @@ dependencies = [ "libc", "mac-addr", "ndk-context", - "netlink-packet-core", - "netlink-packet-route", - "netlink-sys", + "netlink-packet-core 0.8.1", + "netlink-packet-route 0.31.0", + "netlink-sys 0.8.8", "objc2", "objc2-core-foundation", "objc2-core-wlan", @@ -3213,6 +3213,30 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "netdev" +version = "0.46.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db4135b187ddae3b6813c4f9d9ac9d5181859fa6a08b4e006c63a130974ed62" +dependencies = [ + "block2", + "dispatch2", + "dlopen2", + "ipnet", + "jni 0.21.1", + "libc", + "mac-addr", + "ndk-context", + "netlink-packet-core 0.9.0", + "netlink-packet-route 0.33.0", + "netlink-sys 0.9.0", + "objc2-core-foundation", + "objc2-system-configuration", + "once_cell", + "plist", + "windows-sys 0.61.2", +] + [[package]] name = "netlink-packet-core" version = "0.8.1" @@ -3222,6 +3246,12 @@ dependencies = [ "paste", ] +[[package]] +name = "netlink-packet-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6e2daf9a8c2e21302714706860a0e6be02e03d17294ecc66b354ea7d4059dd" + [[package]] name = "netlink-packet-route" version = "0.31.0" @@ -3231,7 +3261,20 @@ dependencies = [ "bitflags 2.13.1", "libc", "log", - "netlink-packet-core", + "netlink-packet-core 0.8.1", +] + +[[package]] +name = "netlink-packet-route" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d48ffc8b73a506e1ff0878528c72668f2bfbc3d875b6be890a96be5d0d5576" +dependencies = [ + "bitflags 2.13.1", + "libc", + "log", + "netlink-packet-core 0.9.0", + "zerocopy", ] [[package]] @@ -3244,8 +3287,8 @@ dependencies = [ "futures-channel", "futures-util", "log", - "netlink-packet-core", - "netlink-sys", + "netlink-packet-core 0.8.1", + "netlink-sys 0.8.8", "thiserror 2.0.19", ] @@ -3262,11 +3305,22 @@ dependencies = [ "tokio", ] +[[package]] +name = "netlink-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c99d38e00b420df49e940fe0826e667c3dad82ac68eb4c2bbf754c1c14a83a10" +dependencies = [ + "bytes", + "libc", + "log", +] + [[package]] name = "netwatch" -version = "0.19.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d9cbe01741347ef750d743d6690603f5eed8341e679fb51c8e629337aa11976" +checksum = "39da9cad5f23aa43401f09497d3b280e51b5feba115d9ffbf38ca35d6ff95e96" dependencies = [ "atomic-waker", "bytes", @@ -3278,11 +3332,12 @@ dependencies = [ "n0-error", "n0-future", "n0-watcher", - "netdev", - "netlink-packet-core", - "netlink-packet-route", + "netdev 0.45.0", + "netdev 0.46.2", + "netlink-packet-core 0.8.1", + "netlink-packet-route 0.31.0", "netlink-proto", - "netlink-sys", + "netlink-sys 0.8.8", "noq-udp", "objc2-core-foundation", "objc2-system-configuration", @@ -3324,9 +3379,9 @@ dependencies = [ [[package]] name = "noq" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11803df44ac03a30988d61585ea50885d5428e42da944fe1e498799da7886a2" +checksum = "f1e6c57353d26be91a242f0ec96073066c4481a03f6be874daafb18902394515" dependencies = [ "bytes", "cfg_aliases", @@ -3346,9 +3401,9 @@ dependencies = [ [[package]] name = "noq-proto" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "334c3c9833f7b2c573cceb9896ddc7aaeb58c8807cbb63211b24d1fe88bf866e" +checksum = "9a46813e306c29c4f86357b6ffa39a8e1c97bb274b9a296a19a56d62e4111225" dependencies = [ "aes-gcm 0.10.3", "bytes", @@ -3373,9 +3428,9 @@ dependencies = [ [[package]] name = "noq-udp" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bba20e097a5a16cd0ad14ec882fae1e80a092a124e9422fc4dddd92e96a647" +checksum = "b56d621ed2c1773b5356ab39cc68c819f8d0103f7493d8661c4a5f5f8ea55f40" dependencies = [ "cfg_aliases", "libc", @@ -4016,9 +4071,9 @@ dependencies = [ [[package]] name = "portmapper" -version = "0.19.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3713e4977408279158444a18c1a01ac9bf2e7eaf1fbfd1a19ac9cd18d90721" +checksum = "ca97242f016e090a25330613bc2382aab65eb22f9149dbe84d8f8e711d49a530" dependencies = [ "base64", "bytes", @@ -5326,9 +5381,9 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "simple-dns" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a75cbde1bf934313596a004973e462f9a82caa814dcf1a5f507bdf51597eeb4" +checksum = "2b6f884fa9a8d48101774bfbd3aeb81e968dd22cffd19a372da69f183db22c1a" dependencies = [ "bitflags 2.13.1", ] @@ -5531,7 +5586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix", "windows-sys 0.59.0", diff --git a/README.md b/README.md index 9a7fb31..fba4c0d 100644 --- a/README.md +++ b/README.md @@ -241,7 +241,7 @@ streams as resources — over three wires behind one surface: the relay via `wasi:sockets`, and WebRTC data channels as a background upgrade (a relay-dialed connection moves onto the channel when it opens; `connection.path` reports the move). Upstream interop is proven both -ways over UDP against iroh v1.0.3, and against n0's production relay +ways over UDP against iroh v1.1.0, and against n0's production relay infrastructure over wss. `endpoint-demo/` is the first consumer, composed via `wac plug` and driven by `host-wasmtime/src/bin/endpoint-demo.rs`. Internally: one detached pump diff --git a/endpoint/Cargo.toml b/endpoint/Cargo.toml index be41d66..5b2a7cf 100644 --- a/endpoint/Cargo.toml +++ b/endpoint/Cargo.toml @@ -11,7 +11,7 @@ crate-type = ["cdylib"] [dependencies] iroh-endpoint-core = { path = "../core" } polymorph-tls-quic.workspace = true -noq-proto = { version = "=1.1.0", default-features = false } +noq-proto = { version = "=1.2.0", default-features = false } rustls = { version = "=0.23.43", default-features = false, features = ["std", "custom-provider"] } getrandom = "0.4" bytes = "1" diff --git a/endpoint/src/endpoint_impl.rs b/endpoint/src/endpoint_impl.rs index fc4cc5c..a5c5acb 100644 --- a/endpoint/src/endpoint_impl.rs +++ b/endpoint/src/endpoint_impl.rs @@ -239,21 +239,21 @@ const REDIAL_ESTABLISHED: Duration = Duration::from_secs(10); /// Deadline on every relay dial (`bind`, `ensure-relay`, the home /// redial): a relay that accepts the socket and then stalls the /// handshake fails the dial instead of pinning it (issue #93). The -/// value matches upstream's relay connect timeout (iroh-1.0.3 +/// value matches upstream's relay connect timeout (iroh-1.1.0 /// src/socket/transports/relay/actor.rs, CONNECT_TIMEOUT) and sits /// well under `ensure_relay`'s 30s claim-wait, so a stalled dial /// resolves its waiters before they give up. const DIAL_TIMEOUT: Duration = Duration::from_secs(10); /// How much inbound silence on a relay wire elicits a liveness ping -/// (issue #96): matches upstream's ping cadence (iroh-1.0.3 +/// (issue #96): matches upstream's ping cadence (iroh-1.1.0 /// src/socket/transports/relay/actor.rs, PING_INTERVAL, reset on any /// inbound message), chosen there as half QUIC's default 30s /// max-idle-timeout so a dead home wire is caught with time to recover. const RELAY_PING_INTERVAL: Duration = Duration::from_secs(15); /// How long an unanswered liveness ping is allowed before the wire is -/// declared dead: upstream's maximum pong bound (iroh-relay-1.0.3 +/// declared dead: upstream's maximum pong bound (iroh-relay-1.1.0 /// src/ping_tracker.rs, PING_TIMEOUT). Upstream shrinks the bound by /// measured RTT; this client tracks no RTT and uses the cap. const RELAY_PING_TIMEOUT: Duration = Duration::from_secs(5); diff --git a/experiments/iroh-blobs/guest/Cargo.lock b/experiments/iroh-blobs/guest/Cargo.lock index a4637de..b0d10a1 100644 --- a/experiments/iroh-blobs/guest/Cargo.lock +++ b/experiments/iroh-blobs/guest/Cargo.lock @@ -1384,8 +1384,8 @@ dependencies = [ [[package]] name = "iroh" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "backon", "blake3", @@ -1433,8 +1433,8 @@ dependencies = [ [[package]] name = "iroh-base" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "curve25519-dalek", "data-encoding", @@ -1500,8 +1500,8 @@ dependencies = [ [[package]] name = "iroh-dns" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "arc-swap", "cfg_aliases", @@ -1563,8 +1563,8 @@ dependencies = [ [[package]] name = "iroh-relay" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "blake3", "bytes", @@ -1948,9 +1948,9 @@ dependencies = [ "libc", "mac-addr", "ndk-context", - "netlink-packet-core", - "netlink-packet-route", - "netlink-sys", + "netlink-packet-core 0.8.2", + "netlink-packet-route 0.31.0", + "netlink-sys 0.8.8", "objc2", "objc2-core-foundation", "objc2-core-wlan", @@ -1961,6 +1961,30 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "netdev" +version = "0.46.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db4135b187ddae3b6813c4f9d9ac9d5181859fa6a08b4e006c63a130974ed62" +dependencies = [ + "block2", + "dispatch2", + "dlopen2", + "ipnet", + "jni 0.21.1", + "libc", + "mac-addr", + "ndk-context", + "netlink-packet-core 0.9.0", + "netlink-packet-route 0.33.0", + "netlink-sys 0.9.0", + "objc2-core-foundation", + "objc2-system-configuration", + "once_cell", + "plist", + "windows-sys 0.61.2", +] + [[package]] name = "netlink-packet-core" version = "0.8.2" @@ -1970,6 +1994,12 @@ dependencies = [ "paste", ] +[[package]] +name = "netlink-packet-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6e2daf9a8c2e21302714706860a0e6be02e03d17294ecc66b354ea7d4059dd" + [[package]] name = "netlink-packet-route" version = "0.31.0" @@ -1979,7 +2009,20 @@ dependencies = [ "bitflags", "libc", "log", - "netlink-packet-core", + "netlink-packet-core 0.8.2", +] + +[[package]] +name = "netlink-packet-route" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d48ffc8b73a506e1ff0878528c72668f2bfbc3d875b6be890a96be5d0d5576" +dependencies = [ + "bitflags", + "libc", + "log", + "netlink-packet-core 0.9.0", + "zerocopy", ] [[package]] @@ -1992,8 +2035,8 @@ dependencies = [ "futures-channel", "futures-util", "log", - "netlink-packet-core", - "netlink-sys", + "netlink-packet-core 0.8.2", + "netlink-sys 0.8.8", "thiserror 2.0.19", ] @@ -2010,10 +2053,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "netlink-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c99d38e00b420df49e940fe0826e667c3dad82ac68eb4c2bbf754c1c14a83a10" +dependencies = [ + "bytes", + "libc", + "log", +] + [[package]] name = "netwatch" -version = "0.19.1" -source = "git+https://github.com/lann/net-tools.git?branch=polymorph-iroh#e877e799bb71112ffaa1aa20de6270162b4d4445" +version = "0.19.3" +source = "git+https://github.com/lannbot/net-tools.git?rev=17c98b368a42055da3f9e11be58f7f25382e5252#17c98b368a42055da3f9e11be58f7f25382e5252" dependencies = [ "atomic-waker", "bytes", @@ -2025,11 +2079,12 @@ dependencies = [ "n0-error", "n0-future", "n0-watcher", - "netdev", - "netlink-packet-core", - "netlink-packet-route", + "netdev 0.45.0", + "netdev 0.46.2", + "netlink-packet-core 0.8.2", + "netlink-packet-route 0.31.0", "netlink-proto", - "netlink-sys", + "netlink-sys 0.8.8", "noq-udp", "objc2-core-foundation", "objc2-system-configuration", @@ -2048,8 +2103,9 @@ dependencies = [ [[package]] name = "noq" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e6c57353d26be91a242f0ec96073066c4481a03f6be874daafb18902394515" dependencies = [ "bytes", "cfg_aliases", @@ -2069,8 +2125,9 @@ dependencies = [ [[package]] name = "noq-proto" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a46813e306c29c4f86357b6ffa39a8e1c97bb274b9a296a19a56d62e4111225" dependencies = [ "aes-gcm", "bytes", @@ -2095,8 +2152,9 @@ dependencies = [ [[package]] name = "noq-udp" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b56d621ed2c1773b5356ab39cc68c819f8d0103f7493d8661c4a5f5f8ea55f40" dependencies = [ "cfg_aliases", "libc", @@ -4106,6 +4164,26 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "zerofrom" version = "0.1.8" diff --git a/experiments/iroh-blobs/guest/Cargo.toml b/experiments/iroh-blobs/guest/Cargo.toml index 128709f..daf3c7b 100644 --- a/experiments/iroh-blobs/guest/Cargo.toml +++ b/experiments/iroh-blobs/guest/Cargo.toml @@ -15,19 +15,16 @@ tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } # Same wasi enablement patches as the iroh-relay-ws spike, from the -# lann/iroh and lann/net-tools `polymorph-iroh` branches (see that +# lannbot/iroh and lannbot/net-tools `polymorph-iroh` branches (see that # Cargo.toml for the full rationale). iroh-blobs depends on crates-io # iroh, so the substitution happens on the crates-io side here; the # branch's path deps pull the patched iroh-relay and iroh-dns along, # and iroh-base is patched to the same branch so iroh and iroh-blobs # share one copy of its types. [patch.crates-io] -iroh = { git = "https://github.com/lann/iroh.git", branch = "polymorph-iroh" } -iroh-base = { git = "https://github.com/lann/iroh.git", branch = "polymorph-iroh" } -noq = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -noq-proto = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -noq-udp = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -netwatch = { git = "https://github.com/lann/net-tools.git", branch = "polymorph-iroh" } +iroh = { git = "https://github.com/lannbot/iroh.git", rev = "b7895560883b2f9a1539843337f4deb9b976f1c3" } +iroh-base = { git = "https://github.com/lannbot/iroh.git", rev = "b7895560883b2f9a1539843337f4deb9b976f1c3" } +netwatch = { git = "https://github.com/lannbot/net-tools.git", rev = "17c98b368a42055da3f9e11be58f7f25382e5252" } [profile.release] lto = true diff --git a/experiments/iroh-relay-ws/guest/Cargo.lock b/experiments/iroh-relay-ws/guest/Cargo.lock index 426a40c..18e7b30 100644 --- a/experiments/iroh-relay-ws/guest/Cargo.lock +++ b/experiments/iroh-relay-ws/guest/Cargo.lock @@ -1270,8 +1270,8 @@ dependencies = [ [[package]] name = "iroh" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "backon", "blake3", @@ -1319,8 +1319,8 @@ dependencies = [ [[package]] name = "iroh-base" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "curve25519-dalek", "data-encoding", @@ -1337,8 +1337,8 @@ dependencies = [ [[package]] name = "iroh-dns" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "arc-swap", "cfg_aliases", @@ -1387,8 +1387,8 @@ dependencies = [ [[package]] name = "iroh-relay" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "blake3", "bytes", @@ -1713,9 +1713,9 @@ dependencies = [ "libc", "mac-addr", "ndk-context", - "netlink-packet-core", - "netlink-packet-route", - "netlink-sys", + "netlink-packet-core 0.8.2", + "netlink-packet-route 0.31.0", + "netlink-sys 0.8.8", "objc2", "objc2-core-foundation", "objc2-core-wlan", @@ -1726,6 +1726,30 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "netdev" +version = "0.46.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db4135b187ddae3b6813c4f9d9ac9d5181859fa6a08b4e006c63a130974ed62" +dependencies = [ + "block2", + "dispatch2", + "dlopen2", + "ipnet", + "jni 0.21.1", + "libc", + "mac-addr", + "ndk-context", + "netlink-packet-core 0.9.0", + "netlink-packet-route 0.33.0", + "netlink-sys 0.9.0", + "objc2-core-foundation", + "objc2-system-configuration", + "once_cell", + "plist", + "windows-sys 0.61.2", +] + [[package]] name = "netlink-packet-core" version = "0.8.2" @@ -1735,6 +1759,12 @@ dependencies = [ "paste", ] +[[package]] +name = "netlink-packet-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6e2daf9a8c2e21302714706860a0e6be02e03d17294ecc66b354ea7d4059dd" + [[package]] name = "netlink-packet-route" version = "0.31.0" @@ -1744,7 +1774,20 @@ dependencies = [ "bitflags", "libc", "log", - "netlink-packet-core", + "netlink-packet-core 0.8.2", +] + +[[package]] +name = "netlink-packet-route" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d48ffc8b73a506e1ff0878528c72668f2bfbc3d875b6be890a96be5d0d5576" +dependencies = [ + "bitflags", + "libc", + "log", + "netlink-packet-core 0.9.0", + "zerocopy", ] [[package]] @@ -1757,8 +1800,8 @@ dependencies = [ "futures-channel", "futures-util", "log", - "netlink-packet-core", - "netlink-sys", + "netlink-packet-core 0.8.2", + "netlink-sys 0.8.8", "thiserror 2.0.19", ] @@ -1775,10 +1818,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "netlink-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c99d38e00b420df49e940fe0826e667c3dad82ac68eb4c2bbf754c1c14a83a10" +dependencies = [ + "bytes", + "libc", + "log", +] + [[package]] name = "netwatch" -version = "0.19.1" -source = "git+https://github.com/lann/net-tools.git?branch=polymorph-iroh#e877e799bb71112ffaa1aa20de6270162b4d4445" +version = "0.19.3" +source = "git+https://github.com/lannbot/net-tools.git?rev=17c98b368a42055da3f9e11be58f7f25382e5252#17c98b368a42055da3f9e11be58f7f25382e5252" dependencies = [ "atomic-waker", "bytes", @@ -1790,11 +1844,12 @@ dependencies = [ "n0-error", "n0-future", "n0-watcher", - "netdev", - "netlink-packet-core", - "netlink-packet-route", + "netdev 0.45.0", + "netdev 0.46.2", + "netlink-packet-core 0.8.2", + "netlink-packet-route 0.31.0", "netlink-proto", - "netlink-sys", + "netlink-sys 0.8.8", "noq-udp", "objc2-core-foundation", "objc2-system-configuration", @@ -1813,8 +1868,9 @@ dependencies = [ [[package]] name = "noq" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e6c57353d26be91a242f0ec96073066c4481a03f6be874daafb18902394515" dependencies = [ "bytes", "cfg_aliases", @@ -1834,8 +1890,9 @@ dependencies = [ [[package]] name = "noq-proto" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a46813e306c29c4f86357b6ffa39a8e1c97bb274b9a296a19a56d62e4111225" dependencies = [ "aes-gcm", "bytes", @@ -1860,8 +1917,9 @@ dependencies = [ [[package]] name = "noq-udp" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b56d621ed2c1773b5356ab39cc68c819f8d0103f7493d8661c4a5f5f8ea55f40" dependencies = [ "cfg_aliases", "libc", @@ -3755,6 +3813,26 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "zerofrom" version = "0.1.8" diff --git a/experiments/iroh-relay-ws/guest/Cargo.toml b/experiments/iroh-relay-ws/guest/Cargo.toml index be66b09..90b7733 100644 --- a/experiments/iroh-relay-ws/guest/Cargo.toml +++ b/experiments/iroh-relay-ws/guest/Cargo.toml @@ -5,38 +5,28 @@ name = "iroh-relay-ws-guest" version = "0.0.1" edition = "2021" publish = false -description = "Spike: upstream iroh (main, unmodified) on wasm32-wasip2 — relay over polymorph-websocket plus live migration onto WebRTC data channels via the synthetic-address overlay, all through the synthetic-datagram wake pattern" +description = "Spike: upstream iroh (v1.1.0 + wasi patches) on wasm32-wasip2 — relay over polymorph-websocket plus live migration onto WebRTC data channels via the synthetic-address overlay, all through the synthetic-datagram wake pattern" [dependencies] -iroh = { git = "https://github.com/lann/iroh.git", branch = "polymorph-iroh", default-features = false, features = ["tls-ring"] } +iroh = { git = "https://github.com/lannbot/iroh.git", rev = "b7895560883b2f9a1539843337f4deb9b976f1c3", default-features = false, features = ["tls-ring"] } tokio = { version = "1.53", default-features = false, features = ["rt", "macros", "time", "sync", "io-util", "net"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } -# The wasi enablement patches. Released versions lag upstream too far -# (noq#773 merged but unreleased; netwatch restructured on main; iroh -# main carries relay-path fixes), so everything comes from pinned git -# sources: +# iroh and netwatch need wasi-enablement patches not (yet) upstream, +# carried on the lannbot forks rebased onto the released versions: # -# - iroh rides the lann/iroh `polymorph-iroh` branch: upstream main -# (735958f8) plus the wasi patch branches merged — lann/iroh#1 +# - iroh fork = v1.1.0 plus the wasi patch branches merged — lann/iroh#1 # (iroh-dns tolerates the missing system resolver config), #2 (relay # connect() over the datagram pipe), #3 (net_report skips probes no # wasi host can deliver). iroh's path deps pull the patched # iroh-relay and iroh-dns from the same checkout. -# - the noq family rides the rev carrying noq#773 (wasip2 support for -# noq-udp; released 1.1.1 was cut from a pre-merge base, and released -# noq requires noq-udp ^1.1.1, so the three must move together). -# - netwatch rides the lann/net-tools `polymorph-iroh` branch: the -# netwatch-v0.19.1 tag (iroh main still requires ^0.19.1) plus the -# wasi patch branches merged — lann/net-tools#1 (wasi routes to the -# netdev-free posix_minimal branch), #2 (sockets close inline on +# - netwatch fork = netwatch-v0.19.3 (iroh 1.1.0 requires ^0.19.3) plus +# the wasi patch branches merged — lann/net-tools#1 (wasi routes to +# the netdev-free posix_minimal branch), #2 (sockets close inline on # drop; no spawn_blocking on wasi). [patch.crates-io] -noq = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -noq-proto = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -noq-udp = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -netwatch = { git = "https://github.com/lann/net-tools.git", branch = "polymorph-iroh" } +netwatch = { git = "https://github.com/lannbot/net-tools.git", rev = "17c98b368a42055da3f9e11be58f7f25382e5252" } [profile.release] lto = true diff --git a/experiments/ping-demo/guest/Cargo.lock b/experiments/ping-demo/guest/Cargo.lock index 294d343..dfd5d12 100644 --- a/experiments/ping-demo/guest/Cargo.lock +++ b/experiments/ping-demo/guest/Cargo.lock @@ -1384,8 +1384,8 @@ dependencies = [ [[package]] name = "iroh" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "backon", "blake3", @@ -1433,8 +1433,8 @@ dependencies = [ [[package]] name = "iroh-base" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "curve25519-dalek", "data-encoding", @@ -1489,8 +1489,8 @@ dependencies = [ [[package]] name = "iroh-dns" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "arc-swap", "cfg_aliases", @@ -1552,8 +1552,8 @@ dependencies = [ [[package]] name = "iroh-relay" -version = "1.0.3" -source = "git+https://github.com/lann/iroh.git?branch=polymorph-iroh#e52993efe22b367bcaf0e822d5c7fc16996b5af8" +version = "1.1.0" +source = "git+https://github.com/lannbot/iroh.git?rev=b7895560883b2f9a1539843337f4deb9b976f1c3#b7895560883b2f9a1539843337f4deb9b976f1c3" dependencies = [ "blake3", "bytes", @@ -1937,9 +1937,9 @@ dependencies = [ "libc", "mac-addr", "ndk-context", - "netlink-packet-core", - "netlink-packet-route", - "netlink-sys", + "netlink-packet-core 0.8.2", + "netlink-packet-route 0.31.0", + "netlink-sys 0.8.8", "objc2", "objc2-core-foundation", "objc2-core-wlan", @@ -1950,6 +1950,30 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "netdev" +version = "0.46.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db4135b187ddae3b6813c4f9d9ac9d5181859fa6a08b4e006c63a130974ed62" +dependencies = [ + "block2", + "dispatch2", + "dlopen2", + "ipnet", + "jni 0.21.1", + "libc", + "mac-addr", + "ndk-context", + "netlink-packet-core 0.9.0", + "netlink-packet-route 0.33.0", + "netlink-sys 0.9.0", + "objc2-core-foundation", + "objc2-system-configuration", + "once_cell", + "plist", + "windows-sys 0.61.2", +] + [[package]] name = "netlink-packet-core" version = "0.8.2" @@ -1959,6 +1983,12 @@ dependencies = [ "paste", ] +[[package]] +name = "netlink-packet-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6e2daf9a8c2e21302714706860a0e6be02e03d17294ecc66b354ea7d4059dd" + [[package]] name = "netlink-packet-route" version = "0.31.0" @@ -1968,7 +1998,20 @@ dependencies = [ "bitflags", "libc", "log", - "netlink-packet-core", + "netlink-packet-core 0.8.2", +] + +[[package]] +name = "netlink-packet-route" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d48ffc8b73a506e1ff0878528c72668f2bfbc3d875b6be890a96be5d0d5576" +dependencies = [ + "bitflags", + "libc", + "log", + "netlink-packet-core 0.9.0", + "zerocopy", ] [[package]] @@ -1981,8 +2024,8 @@ dependencies = [ "futures-channel", "futures-util", "log", - "netlink-packet-core", - "netlink-sys", + "netlink-packet-core 0.8.2", + "netlink-sys 0.8.8", "thiserror 2.0.19", ] @@ -1999,10 +2042,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "netlink-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c99d38e00b420df49e940fe0826e667c3dad82ac68eb4c2bbf754c1c14a83a10" +dependencies = [ + "bytes", + "libc", + "log", +] + [[package]] name = "netwatch" -version = "0.19.1" -source = "git+https://github.com/lann/net-tools.git?branch=polymorph-iroh#e877e799bb71112ffaa1aa20de6270162b4d4445" +version = "0.19.3" +source = "git+https://github.com/lannbot/net-tools.git?rev=17c98b368a42055da3f9e11be58f7f25382e5252#17c98b368a42055da3f9e11be58f7f25382e5252" dependencies = [ "atomic-waker", "bytes", @@ -2014,11 +2068,12 @@ dependencies = [ "n0-error", "n0-future", "n0-watcher", - "netdev", - "netlink-packet-core", - "netlink-packet-route", + "netdev 0.45.0", + "netdev 0.46.2", + "netlink-packet-core 0.8.2", + "netlink-packet-route 0.31.0", "netlink-proto", - "netlink-sys", + "netlink-sys 0.8.8", "noq-udp", "objc2-core-foundation", "objc2-system-configuration", @@ -2037,8 +2092,9 @@ dependencies = [ [[package]] name = "noq" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e6c57353d26be91a242f0ec96073066c4481a03f6be874daafb18902394515" dependencies = [ "bytes", "cfg_aliases", @@ -2058,8 +2114,9 @@ dependencies = [ [[package]] name = "noq-proto" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a46813e306c29c4f86357b6ffa39a8e1c97bb274b9a296a19a56d62e4111225" dependencies = [ "aes-gcm", "bytes", @@ -2084,8 +2141,9 @@ dependencies = [ [[package]] name = "noq-udp" -version = "1.1.0" -source = "git+https://github.com/n0-computer/noq.git?rev=f1ae90533aad86942b7fdc6562744006268989b3#f1ae90533aad86942b7fdc6562744006268989b3" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b56d621ed2c1773b5356ab39cc68c819f8d0103f7493d8661c4a5f5f8ea55f40" dependencies = [ "cfg_aliases", "libc", @@ -4122,6 +4180,26 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "zerofrom" version = "0.1.8" diff --git a/experiments/ping-demo/guest/Cargo.toml b/experiments/ping-demo/guest/Cargo.toml index 48214de..cf2af0a 100644 --- a/experiments/ping-demo/guest/Cargo.toml +++ b/experiments/ping-demo/guest/Cargo.toml @@ -18,19 +18,16 @@ tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } # Same wasi enablement patches as the iroh-relay-ws spike, from the -# lann/iroh and lann/net-tools `polymorph-iroh` branches (see that +# lannbot/iroh and lannbot/net-tools `polymorph-iroh` branches (see that # Cargo.toml for the full rationale). iroh-blobs depends on crates-io # iroh, so the substitution happens on the crates-io side; the branch's # path deps pull the patched iroh-relay and iroh-dns along, and # iroh-base is patched to the same branch so iroh and iroh-blobs share # one copy of its types. [patch.crates-io] -iroh = { git = "https://github.com/lann/iroh.git", branch = "polymorph-iroh" } -iroh-base = { git = "https://github.com/lann/iroh.git", branch = "polymorph-iroh" } -noq = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -noq-proto = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -noq-udp = { git = "https://github.com/n0-computer/noq.git", rev = "f1ae90533aad86942b7fdc6562744006268989b3" } -netwatch = { git = "https://github.com/lann/net-tools.git", branch = "polymorph-iroh" } +iroh = { git = "https://github.com/lannbot/iroh.git", rev = "b7895560883b2f9a1539843337f4deb9b976f1c3" } +iroh-base = { git = "https://github.com/lannbot/iroh.git", rev = "b7895560883b2f9a1539843337f4deb9b976f1c3" } +netwatch = { git = "https://github.com/lannbot/net-tools.git", rev = "17c98b368a42055da3f9e11be58f7f25382e5252" } [profile.release] lto = true diff --git a/justfile b/justfile index 678d051..17c5fcd 100644 --- a/justfile +++ b/justfile @@ -136,9 +136,9 @@ bench: build interop-prod: build ./scripts/interop-prod.sh -# The upstream-iroh-over-relay spike (issue #14): the unmodified iroh -# crate (upstream main + the wasi-enablement patch branches, from the -# lann/iroh and lann/net-tools polymorph-iroh branches) as a wasip2 +# The upstream-iroh-over-relay spike (issue #14): the upstream iroh +# crate (the release + the wasi-enablement patch branches, from the +# lannbot/iroh and lannbot/net-tools polymorph-iroh branches) as a wasip2 # component, runtime-linked under polyengine on stock Deno — relay-only # bootstrap over the polymorph-websocket sibling's polyengine module, then # live migration onto a WebRTC data channel through the synthetic-address diff --git a/scripts/setup.sh b/scripts/setup.sh index 819720e..05467a4 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -14,7 +14,7 @@ cd "$(dirname "$0")/.." WASM_TOOLS_VERSION="${WASM_TOOLS_VERSION:-1.247.0}" JUST_VERSION="${JUST_VERSION:-1.54.0}" WAC_VERSION="${WAC_VERSION:-0.10.1}" -IROH_RELAY_VERSION="${IROH_RELAY_VERSION:-1.0.3}" +IROH_RELAY_VERSION="${IROH_RELAY_VERSION:-1.1.0}" log() { printf '\n==> %s\n' "$1"; } @@ -131,7 +131,7 @@ fi log "Ensuring iroh-relay ${IROH_RELAY_VERSION} is installed" # Version-checked, not presence-checked: the interop gates pair this -# binary with the `iroh` crate tools/iroh-peer pins (`=1.0.3`); the two +# binary with the `iroh` crate tools/iroh-peer pins (`=1.1.0`); the two # move together. On platforms with no prebuilt release asset, binstall's # source fallback needs `--features server` to produce the binary: # cargo install iroh-relay@ --locked --features server diff --git a/tools/iroh-peer/Cargo.toml b/tools/iroh-peer/Cargo.toml index 8c1ad6d..a20000d 100644 --- a/tools/iroh-peer/Cargo.toml +++ b/tools/iroh-peer/Cargo.toml @@ -8,7 +8,7 @@ publish.workspace = true # The upstream implementation under test. The pin is co-pinned with the # `iroh-relay` binary scripts/setup.sh installs — the two must move # together. -iroh = "=1.0.3" +iroh = "=1.1.0" bytes = "1" anyhow = "1"