open-standards/joule-code/joule-code-rs/crates/joule-moq/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 88ff316805
All checks were successful
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 29s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 6s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 6s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 6s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 6s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 50s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 3m6s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 8m44s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 42s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 13m10s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 3m5s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 7s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 6s
wai-fleet service / does this change touch it (pull_request) Successful in 7s
WAI Studio / does this change touch it (pull_request) Successful in 6s
wai-fleet service / service · macos (pull_request) Successful in 44s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 3m1s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 1m24s
wai-fleet service / service · linux (pull_request) Successful in 2m0s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 5m39s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 6m18s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 10m6s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 10m18s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 11m42s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 12m28s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m50s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m29s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 6m42s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 9m44s
joule-moq-relay: an object is held once, and the socket keeps what arrives
Under load the relay collapsed with cores to spare, for two reasons a load
test showed.

Its one UDP socket kept the kernel's default buffer, about 212 KB. Each
fan-out's acknowledgements arrive together, so at 2,000 viewers of 2 Mbit/s the
kernel dropped about a million packets in 20 seconds. A dropped acknowledgement
reads as loss: a retransmission and a smaller congestion window. The buffer is
now a setting, 4 MiB by default, for the sockets the relay listens on and dials
from. The system caps it, so the relay warns when it gets less.

Each subscriber also got its own copy of every payload, while the fan-out held
the relay's one lock, and two more copies on the way to the wire. An object is
now held once, from when it is read until the last QUIC stream has it
acknowledged. The cache, every session's queue and every QUIC send buffer share
one allocation, and a keyframe stops being N keyframes in memory. A transport
that keeps no buffers still copies, once, where it writes, and a bridge to an
earlier draft still gets an object's head and payload as one write.

`examples/fanout_load.rs` is the load test. A bystander on its own track measures
what the audience costs everyone else on the relay.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 13:26:10 -05:00
..
draft16 joule-moq-relay: relay-to-relay cascading (work in progress) 2026-10-25 22:41:09 -04:00
draft18 joule-moq-relay: relay-to-relay cascading (work in progress) 2026-10-25 22:41:09 -04:00
draft22 joule-moq-relay: an object is held once, and the socket keeps what arrives 2026-11-02 13:26:10 -05:00
secure_objects joule-moq secure_objects: a keyring holds the locations it opened by epoch, and forgets them with the epoch's keys 2026-10-20 08:28:18 -04:00
carriage.rs Receipts in WAI's binary form (jwp-receipts §2.7) on the receipts track, replacing JSON 2026-10-18 14:43:44 -04:00
draft.rs joule-moq: drafts chosen by this crate's preference; relay tests and client take the draft 2026-10-21 05:33:13 -04:00
endpoint.rs joule-moq-relay: meter the relay's own energy for real, or sign the unmetered marker 2026-10-26 08:30:49 -04:00
error.rs joule-moq: the async surface behind a default feature, runtime; without it the codec, carriage and receipts build for wasm32 2026-10-18 13:20:25 -04:00
grant_proof.rs age × co: the room's own service is not held to the serving rule 2026-10-22 07:08:25 -04:00
lib.rs LOC carriage: WAI envelopes on LOC objects, a writer and reader in joule-moq, the corpus live-conformance/loc 2026-10-22 10:43:34 -04:00
loc.rs LOC corpus: the second-layer vector appends an SPS of layer 1, so only the base-layer rule refuses it 2026-10-22 10:51:18 -04:00
messages.rs joule-moq: the session, mock, receipts and QUIC transport move onto draft-22 2026-10-16 10:07:07 -04:00
mock.rs joule-moq-relay: meter the relay's own energy for real, or sign the unmetered marker 2026-10-26 08:30:49 -04:00
rating.rs clippy: is_multiple_of in the date check, too_many_arguments allowed on the page's claim writer 2026-10-21 19:33:55 -04:00
receipt.rs joule-moq rating claims over MOQT (WAI_RATING 0x3A4D) and the relay's serving rule (age-assurance §5.5, §5.7) 2026-10-21 19:03:43 -04:00
session.rs joule-moq: drafts chosen by this crate's preference; relay tests and client take the draft 2026-10-21 05:33:13 -04:00
staged.rs wai: MoQ catalog — extent from the tracks present, typed fields, namespaces, a receipts track per media track; text against MOQT-22/MSF-01/CMSF-01 2026-10-06 10:16:03 -04:00
track.rs joule-moq: the session, mock, receipts and QUIC transport move onto draft-22 2026-10-16 10:07:07 -04:00
transport_quic.rs joule-moq: the session, mock, receipts and QUIC transport move onto draft-22 2026-10-16 10:07:07 -04:00
wai_dispatch.rs joule-moq: receipt chains recover (P-J2, P-J3); public text by capability; the conformance gate parses its count 2026-10-06 10:39:21 -04:00
wire.rs joule-moq: the session, mock, receipts and QUIC transport move onto draft-22 2026-10-16 10:07:07 -04:00