From b501fb8c65098085f8fa6e96ba8f88b125150b20 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Thu, 24 Sep 2026 10:30:45 -0700 Subject: [PATCH 1/3] chore(rs): bump depended-on 0.0.x crates to 0.1.0 A 0.0.x crate treats every release as breaking, so a fix to moq-video or moq-sock can't reach a dependent without its own release. At 0.1.0 a patch flows through ^0.1. Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 14 +++++++------- Cargo.toml | 14 +++++++------- quest/m0/README.md | 11 ++++++----- rs/moq-audio/Cargo.toml | 2 +- rs/moq-nvenc/Cargo.toml | 2 +- rs/moq-sock/Cargo.toml | 2 +- rs/moq-transcode/Cargo.toml | 2 +- rs/moq-uring/Cargo.toml | 2 +- rs/moq-v4l/Cargo.toml | 2 +- rs/moq-video/Cargo.toml | 2 +- 10 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab053a33f4..97625399a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4171,7 +4171,7 @@ dependencies = [ [[package]] name = "moq-audio" -version = "0.0.27" +version = "0.1.0" dependencies = [ "block2 0.6.2", "bytes", @@ -4584,7 +4584,7 @@ dependencies = [ [[package]] name = "moq-nvenc" -version = "0.0.6" +version = "0.1.0" dependencies = [ "cudarc", "libloading 0.9.0", @@ -4701,7 +4701,7 @@ dependencies = [ [[package]] name = "moq-sock" -version = "0.0.1" +version = "0.1.0" dependencies = [ "core_affinity", "libc", @@ -4798,7 +4798,7 @@ dependencies = [ [[package]] name = "moq-transcode" -version = "0.0.21" +version = "0.1.0" dependencies = [ "anyhow", "bytes", @@ -4817,7 +4817,7 @@ dependencies = [ [[package]] name = "moq-uring" -version = "0.0.2" +version = "0.1.0" dependencies = [ "anyhow", "bytes", @@ -4851,7 +4851,7 @@ dependencies = [ [[package]] name = "moq-v4l" -version = "0.0.1" +version = "0.1.0" dependencies = [ "bitflags 2.13.2", "libc", @@ -4874,7 +4874,7 @@ dependencies = [ [[package]] name = "moq-video" -version = "0.0.27" +version = "0.1.0" dependencies = [ "anyhow", "ash", diff --git a/Cargo.toml b/Cargo.toml index 5a529c9cd6..3679d22392 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -137,7 +137,7 @@ loom = { version = "0.7.2", features = ["futures"] } # DNS-SD advertisement and browsing for LAN peer discovery (moq-tokio's `mdns` feature). # `async` awaits the event channel instead of blocking a thread on it. mdns-sd = { version = "0.21", features = ["async"] } -moq-audio = { version = "0.0.27", path = "rs/moq-audio", default-features = false } +moq-audio = { version = "0.1.0", path = "rs/moq-audio", default-features = false } moq-auth = { version = "0.1.0", path = "rs/moq-auth" } moq-binary = { version = "0.1.0", path = "rs/moq-binary" } moq-flate = { version = "0.1.3", path = "rs/moq-flate" } @@ -154,12 +154,12 @@ moq-noq-udp = "1.3" # NVENC bindings, forked from ViliamVadocz/nvidia-video-codec-sdk to dlopen the # driver at runtime. Compiles on any platform (macOS included) but only actually # used by moq-video on Linux. -moq-nvenc = { version = "0.0.6", path = "rs/moq-nvenc" } +moq-nvenc = { version = "0.1.0", path = "rs/moq-nvenc" } moq-pattern = { version = "0.1.0", path = "rs/moq-pattern" } moq-relay = { version = "0.15.1", path = "rs/moq-relay", default-features = false } moq-rtc = { version = "0.3.1", path = "rs/moq-rtc" } moq-rtmp = { version = "0.3.1", path = "rs/moq-rtmp" } -moq-sock = { version = "0.0.1", path = "rs/moq-sock" } +moq-sock = { version = "0.1.0", path = "rs/moq-sock" } moq-srt = { version = "0.3.1", path = "rs/moq-srt" } moq-stats = { version = "0.2.1", path = "rs/moq-stats" } moq-tokio = { version = "0.19.12", path = "rs/moq-tokio", default-features = false } @@ -168,15 +168,15 @@ moq-tokio = { version = "0.19.12", path = "rs/moq-tokio", default-features = fal # provide working native plus software defaults when depended on directly. # VAAPI is opt-in everywhere; its decoder is hardware-validated, while its # encoder is not yet. -moq-transcode = { version = "0.0.21", path = "rs/moq-transcode", default-features = false } +moq-transcode = { version = "0.1.0", path = "rs/moq-transcode", default-features = false } # default-features off (the noq backend) so the consumer picks which QUIC # stack the io_uring path compiles; cargo features are additive, so a default-on # backend could not be opted out of. -moq-uring = { version = "0.0.2", path = "rs/moq-uring", default-features = false } +moq-uring = { version = "0.1.0", path = "rs/moq-uring", default-features = false } # In-tree fork of `v4l` with the videodev2.h bindings checked in, so moq-video's # `capture` and `v4l2` need no libclang or kernel headers. Linux only; an empty # stub elsewhere. -moq-v4l = { version = "0.0.1", path = "rs/moq-v4l" } +moq-v4l = { version = "0.1.0", path = "rs/moq-v4l" } # Standalone crate (moq-dev/vaapi); vendored from cros-libva + cros-codecs. # dlopen's libva at runtime (no libva-dev at build, no NEEDED libva in the binary). moq-vaapi = "0.0.4" @@ -185,7 +185,7 @@ moq-vaapi = "0.0.4" # `features = ["capture"]` to a consumer that ships in those bindings pulls the # whole device graph into every one of them. Codec features are independent of # that argument, so moq-ffi and libmoq opt NVIDIA, OpenH264, and VAAPI back in. -moq-video = { version = "0.0.27", path = "rs/moq-video", default-features = false } +moq-video = { version = "0.1.0", path = "rs/moq-video", default-features = false } nix = { version = "0.31.3", features = ["net", "socket", "uio"] } # Upstream noq-proto, only for iroh's controller factory types. noq-proto = { version = "1.2", default-features = false } diff --git a/quest/m0/README.md b/quest/m0/README.md index af59ce9033..225151105b 100644 --- a/quest/m0/README.md +++ b/quest/m0/README.md @@ -15,11 +15,12 @@ dev landed on main as #3793 on 2026-09-20; [Release](/quest/m0/release.md) names what gates the release that follows. Published API or wire breaks still land on dev; the quest's Plan says so. -The archive, E2EE, socket, and uring crates are 0.0.1 on main after the dev -merge. Their six API quests gate the release and target main under the 0.0.x -exception. Inspect transitive public exposure before changing a shared symbol: -`moq-tokio` publicly re-exports `moq-sock`'s bind module. Keep that re-export -and its current names. +The archive and E2EE crates are 0.0.x; socket, uring, audio, video, transcode, +and nvenc are 0.1.x so dependents can take compatible patches. Their API quests +gate the release; a published break to a 0.1.x crate targets dev. Inspect +transitive public exposure before changing a shared symbol: `moq-tokio` +publicly re-exports `moq-sock`'s bind module. Keep that re-export and its +current names. Keep the useful boundaries: archive owns storage and codecs, E2EE owns protection rather than catalogs, sock owns runtime-neutral sockets, and uring diff --git a/rs/moq-audio/Cargo.toml b/rs/moq-audio/Cargo.toml index bf287757ad..bcd477c666 100644 --- a/rs/moq-audio/Cargo.toml +++ b/rs/moq-audio/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Luke Curley "] repository = "https://github.com/moq-dev/moq" license = "MIT OR Apache-2.0" -version = "0.0.27" +version = "0.1.0" edition = "2024" rust-version.workspace = true diff --git a/rs/moq-nvenc/Cargo.toml b/rs/moq-nvenc/Cargo.toml index f2b7511a45..33ad146d72 100644 --- a/rs/moq-nvenc/Cargo.toml +++ b/rs/moq-nvenc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "moq-nvenc" -version = "0.0.6" +version = "0.1.0" edition = "2021" license = "MIT" rust-version.workspace = true diff --git a/rs/moq-sock/Cargo.toml b/rs/moq-sock/Cargo.toml index 1c994560cb..c86336f496 100644 --- a/rs/moq-sock/Cargo.toml +++ b/rs/moq-sock/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Luke Curley "] repository = "https://github.com/moq-dev/moq" license = "MIT OR Apache-2.0" -version = "0.0.1" +version = "0.1.0" edition = "2024" rust-version.workspace = true diff --git a/rs/moq-transcode/Cargo.toml b/rs/moq-transcode/Cargo.toml index 38106e1d44..eafbea39d4 100644 --- a/rs/moq-transcode/Cargo.toml +++ b/rs/moq-transcode/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Luke Curley "] repository = "https://github.com/moq-dev/moq" license = "MIT OR Apache-2.0" -version = "0.0.21" +version = "0.1.0" edition = "2024" rust-version.workspace = true diff --git a/rs/moq-uring/Cargo.toml b/rs/moq-uring/Cargo.toml index 4be6dd8895..b06c394995 100644 --- a/rs/moq-uring/Cargo.toml +++ b/rs/moq-uring/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Luke Curley "] repository = "https://github.com/moq-dev/moq" license = "MIT OR Apache-2.0" -version = "0.0.2" +version = "0.1.0" edition = "2024" rust-version.workspace = true diff --git a/rs/moq-v4l/Cargo.toml b/rs/moq-v4l/Cargo.toml index 3ac5ae7273..e6229eaa55 100644 --- a/rs/moq-v4l/Cargo.toml +++ b/rs/moq-v4l/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "moq-v4l" -version = "0.0.1" +version = "0.1.0" edition = "2021" license = "MIT" rust-version.workspace = true diff --git a/rs/moq-video/Cargo.toml b/rs/moq-video/Cargo.toml index 3e5e6508d8..701d657bb5 100644 --- a/rs/moq-video/Cargo.toml +++ b/rs/moq-video/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Luke Curley "] repository = "https://github.com/moq-dev/moq" license = "MIT OR Apache-2.0" -version = "0.0.27" +version = "0.1.0" edition = "2024" rust-version.workspace = true From 5527afff01a0c9eac2c57fdedb566d64f37e1d00 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Thu, 24 Sep 2026 10:47:11 -0700 Subject: [PATCH 2/3] docs(quest): retarget media and socket breaks to dev now they are 0.1.x Co-Authored-By: Claude Opus 5.5 --- quest/m0/README.md | 7 +++---- ...4-quic-workers-dropping-one-split-server-resizes-the.md | 2 +- quest/m1/gpu-pool-reservation.md | 4 ++-- quest/m1/ladder/README.md | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/quest/m0/README.md b/quest/m0/README.md index 225151105b..9df4cf9dd2 100644 --- a/quest/m0/README.md +++ b/quest/m0/README.md @@ -45,10 +45,9 @@ Their package boundaries are explicit: - Published `moq-tokio` keeps its worker signatures and `bind` re-export while adapting internal plumbing. Its root names do not move. -The media crates are also 0.0.x, so their changes target main. Adapt callers in -other packages without breaking their published APIs, C layouts, or wire -formats. Do not bump versions as part of these quests. The media review -found the four crates ready for a separately requested 0.1 release. +The media crates are 0.1.x too, so a published break to them targets dev. +Adapt callers in other packages without breaking their published APIs, C +layouts, or wire formats. Do not bump versions as part of these quests. Their package boundaries are explicit: diff --git a/quest/m1/2964-quic-workers-dropping-one-split-server-resizes-the.md b/quest/m1/2964-quic-workers-dropping-one-split-server-resizes-the.md index c70982699d..43f4a0afed 100644 --- a/quest/m1/2964-quic-workers-dropping-one-split-server-resizes-the.md +++ b/quest/m1/2964-quic-workers-dropping-one-split-server-resizes-the.md @@ -26,7 +26,7 @@ session while unused handles are dropped, and prove all serving stops when the group terminates. Wire the tests into normal or nightly CI. Public API: no further `moq-tokio` ownership change. The prerequisite may -change `moq-sock`'s 0.0.x API. Wire: no format change. Close #2964 only when +change `moq-sock`'s 0.1.x API. Wire: no format change. Close #2964 only when both the dev ownership proof and this integration are complete. ## Closes diff --git a/quest/m1/gpu-pool-reservation.md b/quest/m1/gpu-pool-reservation.md index 65d7091c27..d0fad928ec 100644 --- a/quest/m1/gpu-pool-reservation.md +++ b/quest/m1/gpu-pool-reservation.md @@ -25,8 +25,8 @@ then `None`, dropping an unconverted slot frees it, and a failed conversion does not leak the buffer. Update the `just rs vulkan-cuda` hardware test and `doc/lib/rs/moq-video.md` inline. -Public API: `moq-video` 0.0.x, breaking for `Converter::convert` callers. Wire: -none. +Public API: `moq-video` 0.1.x, breaking for `Converter::convert` callers, so +it targets dev. Wire: none. ## Related diff --git a/quest/m1/ladder/README.md b/quest/m1/ladder/README.md index 6d8986db12..20dae78a47 100644 --- a/quest/m1/ladder/README.md +++ b/quest/m1/ladder/README.md @@ -34,7 +34,7 @@ first, so the same number decides what to produce and what to send first; ranking means on the first mile versus a cluster session before the controller depends on it. -`moq-transcode` is 0.0.x, so this line lands on main. +`moq-transcode` is 0.1.x, so a published break in this line targets dev. ### Adaptive bands From 75e5335ca965abaa5f9c6b31593df7bb68248f3c Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Thu, 24 Sep 2026 11:00:24 -0700 Subject: [PATCH 3/3] chore(rs): keep moq-uring at 0.0.x Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 2 +- Cargo.toml | 2 +- quest/m0/README.md | 8 ++++---- rs/moq-uring/Cargo.toml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 97625399a9..a2caa20af2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4817,7 +4817,7 @@ dependencies = [ [[package]] name = "moq-uring" -version = "0.1.0" +version = "0.0.2" dependencies = [ "anyhow", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 3679d22392..119a87204a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -172,7 +172,7 @@ moq-transcode = { version = "0.1.0", path = "rs/moq-transcode", default-features # default-features off (the noq backend) so the consumer picks which QUIC # stack the io_uring path compiles; cargo features are additive, so a default-on # backend could not be opted out of. -moq-uring = { version = "0.1.0", path = "rs/moq-uring", default-features = false } +moq-uring = { version = "0.0.2", path = "rs/moq-uring", default-features = false } # In-tree fork of `v4l` with the videodev2.h bindings checked in, so moq-video's # `capture` and `v4l2` need no libclang or kernel headers. Linux only; an empty # stub elsewhere. diff --git a/quest/m0/README.md b/quest/m0/README.md index 9df4cf9dd2..eb67865d6d 100644 --- a/quest/m0/README.md +++ b/quest/m0/README.md @@ -15,10 +15,10 @@ dev landed on main as #3793 on 2026-09-20; [Release](/quest/m0/release.md) names what gates the release that follows. Published API or wire breaks still land on dev; the quest's Plan says so. -The archive and E2EE crates are 0.0.x; socket, uring, audio, video, transcode, -and nvenc are 0.1.x so dependents can take compatible patches. Their API quests -gate the release; a published break to a 0.1.x crate targets dev. Inspect -transitive public exposure before changing a shared symbol: `moq-tokio` +The archive, E2EE, and uring crates are 0.0.x; socket, audio, video, +transcode, and nvenc are 0.1.x so dependents can take compatible patches. Their +API quests gate the release; a published break to a 0.1.x crate targets dev. +Inspect transitive public exposure before changing a shared symbol: `moq-tokio` publicly re-exports `moq-sock`'s bind module. Keep that re-export and its current names. diff --git a/rs/moq-uring/Cargo.toml b/rs/moq-uring/Cargo.toml index b06c394995..4be6dd8895 100644 --- a/rs/moq-uring/Cargo.toml +++ b/rs/moq-uring/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Luke Curley "] repository = "https://github.com/moq-dev/moq" license = "MIT OR Apache-2.0" -version = "0.1.0" +version = "0.0.2" edition = "2024" rust-version.workspace = true