From 6a0be1196a2322f2ed7e42a231cfa08542894ca6 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sun, 20 Sep 2026 06:14:31 -0700 Subject: [PATCH 1/3] chore: claim quic one backend quest Co-Authored-By: GPT-5 From 23bfc21a7353332fda46755569296ac85c3ffa5d Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sun, 20 Sep 2026 07:18:41 -0700 Subject: [PATCH 2/3] refactor(quic)!: keep only the noq backend Co-Authored-By: GPT-5 --- Cargo.toml | 6 +- bench/justfile | 2 +- bench/run.sh | 4 +- cpp/obs/src/moq-settings.cpp | 18 +- cpp/obs/src/moq-settings.h | 2 +- deny.toml | 2 - doc/bin/relay/config.md | 19 +- doc/bin/relay/http.md | 7 +- doc/lib/c/index.md | 2 +- doc/lib/rs/index.md | 8 +- doc/lib/rs/moq-net.md | 4 +- js/net/src/connection/stats.ts | 4 +- nix/overlay.nix | 2 +- quest/m1/README.md | 6 +- quest/m1/quic-one-backend.md | 77 -- ...relay-cpu-is-vdso-clock-reads-the-drive.md | 2 +- quest/m2/perf/README.md | 7 +- quest/m2/perf/egress-requeue.md | 6 +- quest/m2/perf/uring-quiescence.md | 4 +- quest/m2/quic/README.md | 8 +- quest/m2/quic/fork.md | 3 +- quest/m2/quic/reliable-reset.md | 4 +- quest/m2/uring-flow-control-windows.md | 2 +- quest/m3/multipath-spike.md | 5 +- rs/hang/Cargo.toml | 2 +- rs/justfile | 51 +- rs/libmoq/src/api.rs | 42 - rs/libmoq/src/client.rs | 3 - rs/libmoq/src/test.rs | 49 +- rs/moq-bench/Cargo.toml | 2 - rs/moq-boy/Cargo.toml | 1 - rs/moq-cli/Cargo.toml | 6 +- rs/moq-gst/src/lib.rs | 1 - rs/moq-native/Cargo.toml | 2 - rs/moq-relay/Cargo.toml | 17 +- rs/moq-relay/src/relay.rs | 6 +- rs/moq-relay/src/uring.rs | 5 +- rs/moq-relay/src/web.rs | 5 +- rs/moq-relay/tests/drills.rs | 2 +- rs/moq-relay/tests/goaway_cluster.rs | 4 +- rs/moq-relay/tests/released_cli.rs | 2 - rs/moq-sock/src/bind.rs | 2 +- rs/moq-tokio/Cargo.toml | 33 +- rs/moq-tokio/README.md | 2 +- rs/moq-tokio/src/client.rs | 159 +-- rs/moq-tokio/src/connect.rs | 35 +- rs/moq-tokio/src/error.rs | 40 - rs/moq-tokio/src/iroh.rs | 4 +- rs/moq-tokio/src/lib.rs | 136 +-- rs/moq-tokio/src/listen.rs | 43 +- rs/moq-tokio/src/log.rs | 1 - rs/moq-tokio/src/quic.rs | 27 +- rs/moq-tokio/src/quiche.rs | 939 --------------- rs/moq-tokio/src/quinn.rs | 1051 ----------------- rs/moq-tokio/src/resolve.rs | 11 +- rs/moq-tokio/src/server.rs | 217 +--- rs/moq-tokio/src/settings.rs | 6 - rs/moq-tokio/src/tls.rs | 199 +--- rs/moq-tokio/src/websocket.rs | 2 +- rs/moq-tokio/src/worker/mod.rs | 4 +- rs/moq-tokio/tests/backend.rs | 334 ++---- rs/moq-tokio/tests/broadcast.rs | 2 +- rs/moq-tokio/tests/worker.rs | 2 +- rs/moq-transcode/Cargo.toml | 2 +- rs/moq-uring/Cargo.toml | 25 +- rs/moq-uring/README.md | 42 +- rs/moq-uring/benches/echo_noq.rs | 167 +++ rs/moq-uring/benches/echo_quiche.rs | 148 --- rs/moq-uring/benches/session_lite.rs | 12 +- rs/moq-uring/src/lib.rs | 7 +- rs/moq-uring/src/quic/endpoint.rs | 2 +- rs/moq-uring/src/quic/mod.rs | 39 +- .../src/quic/{quinn => noq}/connection.rs | 101 +- .../src/quic/{quinn => noq}/endpoint.rs | 37 +- rs/moq-uring/src/quic/{quinn => noq}/mod.rs | 113 +- .../src/quic/{quinn => noq}/stream.rs | 40 +- rs/moq-uring/src/quic/qlog.rs | 4 +- rs/moq-uring/src/quic/quiche/connection.rs | 1048 ---------------- rs/moq-uring/src/quic/quiche/endpoint.rs | 646 ---------- rs/moq-uring/src/quic/quiche/mod.rs | 265 ----- rs/moq-uring/src/quic/quiche/stream.rs | 439 ------- rs/moq-uring/src/worker.rs | 2 +- rs/moq-uring/tests/echo.rs | 124 +- rs/moq-uring/tests/endpoint.rs | 33 +- rs/moq-uring/tests/qlog.rs | 10 +- rs/moq-uring/tests/session.rs | 6 +- rs/moq-uring/tests/support.rs | 112 ++ rs/moq-uring/tests/support/quiche.rs | 468 -------- rs/moq-uring/tests/teardown.rs | 2 +- rs/moq-uring/tests/web.rs | 511 +------- rs/moq-uring/tests/workers.rs | 4 +- 91 files changed, 848 insertions(+), 7214 deletions(-) delete mode 100644 quest/m1/quic-one-backend.md delete mode 100644 rs/moq-tokio/src/quiche.rs delete mode 100644 rs/moq-tokio/src/quinn.rs create mode 100644 rs/moq-uring/benches/echo_noq.rs delete mode 100644 rs/moq-uring/benches/echo_quiche.rs rename rs/moq-uring/src/quic/{quinn => noq}/connection.rs (88%) rename rs/moq-uring/src/quic/{quinn => noq}/endpoint.rs (91%) rename rs/moq-uring/src/quic/{quinn => noq}/mod.rs (76%) rename rs/moq-uring/src/quic/{quinn => noq}/stream.rs (90%) delete mode 100644 rs/moq-uring/src/quic/quiche/connection.rs delete mode 100644 rs/moq-uring/src/quic/quiche/endpoint.rs delete mode 100644 rs/moq-uring/src/quic/quiche/mod.rs delete mode 100644 rs/moq-uring/src/quic/quiche/stream.rs create mode 100644 rs/moq-uring/tests/support.rs delete mode 100644 rs/moq-uring/tests/support/quiche.rs diff --git a/Cargo.toml b/Cargo.toml index 0f703fcd92..0207602e3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -212,19 +212,17 @@ usage = { package = "usage-rs", version = "6.3.0" } web-async = { version = "0.1.5", features = ["tracing"] } web-transport-iroh = "0.7" # default-features off so the QUIC crypto provider is chosen by moq-tokio's -# aws-lc-rs / ring features (mirroring how the quinn dependency is wired). +# aws-lc-rs / ring features. # 0.3 for the `qlog` passthrough feature moq-tokio's `qlog` forwards to. web-transport-noq = { version = "0.3", default-features = false } web-transport-proto = "0.6" -web-transport-quiche = "0.7" -web-transport-quinn = { version = "0.12", default-features = false } web-transport-trait = "0.4" web-transport-wasm = "0.6" x11rb = { version = "0.14.0", features = ["randr", "xfixes"] } zeroize = { version = "1", features = ["derive"] } [patch.crates-io] -# web-transport-quinn and web-transport-iroh depend on kio from crates.io. Without +# web-transport-iroh depends on kio from crates.io. Without # this, the lock carries a second kio whose pin drifts behind the member, and the # next publish that reaches both fails to resolve a single version (#3551). kio = { path = "rs/kio" } diff --git a/bench/justfile b/bench/justfile index ba980173c1..b3fa64c392 100755 --- a/bench/justfile +++ b/bench/justfile @@ -16,4 +16,4 @@ runtime $ROUNDS="3" $WORKERS="": # Compile every binary and feature used by the repository-level harness. check: cargo check --locked --package moq-relay --package moq-bench \ - --features moq-relay/io-uring-quinn + --features moq-relay/io-uring diff --git a/bench/run.sh b/bench/run.sh index 5e4ec3acae..db7c0a2c6e 100755 --- a/bench/run.sh +++ b/bench/run.sh @@ -394,10 +394,10 @@ run_runtime_comparison() { return 1 fi - printf 'Building one relay binary with the Tokio and io_uring Quinn paths...\n' + printf 'Building one relay binary with the Tokio and io_uring paths...\n' CARGO_TARGET_DIR=$CURRENT_TARGET cargo build --locked --release \ -p moq-relay -p moq-bench \ - --features moq-relay/io-uring-quinn,moq-bench/uring + --features moq-relay/io-uring,moq-bench/uring LOAD_BIN=$CURRENT_TARGET/release/moq-bench HOST_BIN=$CURRENT_TARGET/release/moq-bench-host diff --git a/cpp/obs/src/moq-settings.cpp b/cpp/obs/src/moq-settings.cpp index 17cc2b8f57..8b3fc4b5a2 100644 --- a/cpp/obs/src/moq-settings.cpp +++ b/cpp/obs/src/moq-settings.cpp @@ -18,7 +18,6 @@ namespace { // Keys. These are stable: they land in scene collections and in the dock's settings // file, so renaming one silently drops whatever the user had configured. constexpr const char *VERSION = "version"; -constexpr const char *BACKEND = "backend"; constexpr const char *BIND = "bind"; constexpr const char *CONNECT_TIMEOUT = "connect_timeout_ms"; constexpr const char *FAILOVER_DELAY = "failover_delay_ms"; @@ -110,15 +109,6 @@ std::vector