Repository navigation
perf(net): keep the IETF message parameter codec out of the first load; checkpoint the m1 size audit - #6172
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SETUP options move from ietf/parameters.ts to ietf/setup_options.ts, with the MAX_REQUEST_ID window from ietf/request.ts, and the MoQ Cluster helpers fill a caller's parameter block instead of constructing one. The eager SETUP surface no longer reaches the message parameter codec or the filter module, which only a session uses. First load drops about 5.1 to 5.5 KB gzip in every consumer bundle; ietf/index.test.ts fails if SETUP reaches parameters.ts again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Re-measures native, WASM and JS sizes against the m0 baseline commit, records the transport erasure ceiling for net-erase-transport, carries the pako lead into the js/net compressed tracks quest, and blocks the run's finish on net-erase-transport so the audit before the breaking cut sees its result. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 20 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Outcome: the m1 size audit is checkpointed. One fix: (Written by Claude Opus 5.5) |
Checkpoint for
quest/m1/audit-size.md, the m1 run of the artifact size audit, a day after the m0 run finished in moq-dev/moq#6101.Problem
@moq/net's eager SETUP surface still pulled in the IETF message parameter codec:SetupOptionssharedietf/parameters.tswith the requestParameters(and through itfilter.ts),cluster.tsbuiltParametersblocks, andinitialMaxRequestIdlived inrequest.ts. A lite session never uses any of it.Approach
SetupOption,SetupOptions,REQUEST_WINDOWandinitialMaxRequestIdmove toietf/setup_options.ts.Cluster.intoParams/updateIntoParamsfill a caller'sParametersinstead of constructing one, socluster.tsimportsParametersas a type only.ietf/index.test.tsnow also fails if the entry statically reachesietf/parameters.ts(verified failing with a stray import insetup.ts).First load, gzip, from
sh/size/bundles.ts, main 7d2a91f -> this PR:netwatchwatch-uipublishAudit results (recorded in the quest)
Rebuilt both 2b28f5e (the m0 baseline) and 7d2a91f locally with the same method:
moq-relaymoqCLIlibmoq_ffi.somoq_bg.wasmgzipmoq-netfeatures (ranges and time anchors, TRACKS, followed instances, compressed tracks), +0.41 to 0.53 MiB of text per binary, plus CLI import stats and the catalog diff serializer. WASM code grew 187 KB raw, 55 KB of itzlib-rsfor compressed tracks. Explained, no action.moq-netis 9.5 MiB of the relay's text and 7.7 MiB of the FFI library's, about 2.5 MiB with one copy per function. The relay's 16-line binary crate alone instantiates 3.1 MiB of it. Linker ICF (-Wl,--icf=all) saves only 0.23 MiB, because the per-crate copies differ after LTO.pakois 12.8 KB gzip ofwatchandpublish; the lead goes into compressed tracks in js/net, which will move it into every first load.sizesis still skipped: the Linux release builds fail to link until moq-dev/moq#6090 lands.Choice made without asking
This run is checkpointed, not finished: the m1 quest now requires
net-erase-transport. If it finished now, the successor would wait in m2 for the release cut, and nothing would audit the rest of m1 (the erasure result,pakomoving into@moq/net) before the breaking release. To finish it now instead, drop theRequiredentry and move the successor to m2.Impact
ietf/*is internal, and@moq/net's exports are unchanged.Checks
just check(scoped): passedquest check: passedbun testforjs/netIETF and connection: 922 pass(Written by Claude Opus 5.5)
🤖 Generated with Claude Code