Skip to content

refactor(moq-net): drop per-frame compression, restore Publisher Max Latency to TRACK_INFO (lite-05)#1962

Merged
kixelated merged 1 commit into
devfrom
claude/pedantic-wiles-c61bcd
Jun 30, 2026
Merged

refactor(moq-net): drop per-frame compression, restore Publisher Max Latency to TRACK_INFO (lite-05)#1962
kixelated merged 1 commit into
devfrom
claude/pedantic-wiles-c61bcd

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Syncs the moq-lite-05 implementation with the spec, which removed per-frame payload compression (drafts #42, #45) and, in the same change, moved Publisher Max Latency into TRACK_INFO.

Wire change (TRACK_INFO)

  • Drops the Compression field.
  • Adds Publisher Max Latency (cache), a milliseconds varint.
  • Field order now matches the spec exactly: Publisher Priority, Publisher Ordered, Publisher Max Latency, Timescale.

ANNOUNCE_BROADCAST was never compressed in the implementation, so it was already aligned.

Summary

  • rs/moq-net: delete model/compression.rs, the Compression type, TrackInfo::compress / with_compress, and Error::Decompress; strip the compress-on-write / decompress-on-read paths from the lite publisher and subscriber; drop the now-unused flate2 dependency. The model already tracked cache and evicted on it, so restoring Publisher Max Latency is just serialization.
  • rs/hang: the catalog track no longer requests compression.
  • rs/moq-ffi: MoqTrackInfo drops the compress field (regenerates for the py/swift/kt/go bindings).
  • js/net: delete compression.ts, add cache to the wire and model TrackInfo, and block group decoding on timescale instead of the codec.
  • wrappers: py/swift/go doc comments and a py test updated.

Expiration stays wall-clock only; the spec's min-of-two timestamp/wall-clock change (#45) is intentionally left for a follow-up.

Breaking changes

Per Branch Targeting, this is a breaking wire + public-API change, so it targets dev:

  • Wire: TRACK_INFO layout changed (lite-05-wip, still WIP).
  • rs/moq-net: removed Compression, TrackInfo::compress, TrackInfo::with_compress, Error::Decompress; lite::TrackInfo field compression -> cache.
  • rs/moq-ffi: MoqTrackInfo.compress removed.
  • js/net: removed the Compression export and compression.ts; TrackInfo.compress removed, TrackInfo.cache is now wire-backed.

Test plan

  • cargo test -p moq-net (396) + moq-native e2e (incl. the lite-05 timestamp roundtrip over the new wire) + hang / moq-ffi
  • cargo clippy / cargo fmt --check / cargo shear / cargo sort
  • RUSTDOCFLAGS="-D warnings" cargo doc --workspace --all-features --no-deps (CI doc path)
  • just js check + bun test (@moq/net 188 tests)

Heads up: the local inner-loop just check is red on a pre-existing dev issue unrelated to this PR. It docs the workspace with default features, and since ec405f552 made quinn non-default, two intra-doc links in moq-native (error.rs:6, server.rs:284) point at quinn-gated items. CI's --all-features doc path is unaffected. Tracked separately.

(Written by Claude Opus 4.8)

…Latency to TRACK_INFO (lite-05)

Sync the moq-lite-05 implementation with the spec, which removed per-frame
payload compression (drafts #42, #45) and moved Publisher Max Latency into
TRACK_INFO.

- Wire lite::TrackInfo drops Compression and adds cache (Publisher Max Latency,
  ms varint); field order is now priority, ordered, cache, timescale.
- Delete the Compression type, TrackInfo::compress / with_compress, and
  Error::Decompress; strip compress-on-write / decompress-on-read from the lite
  publisher and subscriber. The model already tracked cache and evicted on it,
  so restoring Publisher Max Latency is just serialization.
- Mirror across hang (catalog no longer requests compression), moq-ffi
  (MoqTrackInfo drops compress), js/net (delete compression.ts, add cache to the
  wire and model TrackInfo, block group decoding on timescale), and the
  py/swift/go wrapper docs.

ANNOUNCE_BROADCAST was never compressed in the implementation, so it was already
aligned. Expiration stays wall-clock only; the spec's min-of-two timestamp /
wall-clock change is left for a follow-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @kixelated, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@kixelated kixelated merged commit e5dc9b2 into dev Jun 30, 2026
6 checks passed
@kixelated kixelated deleted the claude/pedantic-wiles-c61bcd branch June 30, 2026 15:59
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.

1 participant