4. Size and dependencies
-
Soft cap 16,777,216 B (16 MiB) for the standalone release exe,
ritmolux.exe— derived from what the artifact carries by the rule ADR-0159 set for the component, applied to this artifact by ADR-0231, replacing an inherited 10,000,000 B that had never been measured against the exe. The derivation (Plan 0207 Phase 1): 10,971,648 B measured fortarget\release\ritmolux.exe(Windows 10,cargo build --release, default features, 2026-09-19), plus one more step the size of the largest feature class this project has shipped — thetextstep, +2,104,320 B as ADR-0159 measured it on the component, the one measured feature-sized diff on this code — is 13,075,968 B, and 16 MiB is the next round binary boundary above it (ADR-0231 names the two boundaries the rule steps by, 12 MiB and 16 MiB; 12,582,912 B is below the sum). The reading of “round” as any whole MiB would give 13,631,488 B and was not taken: under it the one step the rule means to admit would land at 95.9 % of the cap, past the warning line, so the cap would admit nothing quietly. At 16 MiB that step lands at 77.9 % and a second one at 90.5 %, which is the shape ADR-0159 asks for exactly — one more feature of the largest class is admitted and the second has to be argued for. The cap names the Windows exe; whether each platform’s binary owes a figure of its own is still not decided, and every recipe below measures per executable.packaging/windows/stage.ps1,packaging/macos/bundle.shandpackaging/linux/stage.shprint the length on every build, beside the build that produced it, and warn above 15,099,494 B (90 % of the cap) — each Apple slice on its own, since a universal binary is two executables in one file. None fails a release over a size: these caps are soft. The Windows release exe carries--features spoutand has not been measured with it; the first tag build prints that figure.What the exe carries, measured 2026-09-22 on the Linux build of the same tree —
ritmoluxfromcargo build --release -p standalone, v0.143.1, rustc 1.97.1, Arch, 12,711,784 B stripped (75.8 % of the cap; 96 B over the 12,711,688 B recorded for v0.142.0), then rebuilt with--config profile.release.strip=falseso the symbol table could be read. By section, from the stripped file:.text9,247,623 B,.rodata1,771,688 B,.eh_frame637,668 B,.rela.dyn400,992 B,.data.rel.ro327,352 B,.gcc_except_table225,904 B, everything else under 100 KB together. By crate, from the 9,325,300 B of function and object symbols the unstripped file names (fat LTO inlines the rest into callers, so every figure is a floor):naga1,177,352 B; Rust’score1,105,465 B;rustfft799,921 B;rlx_core655,958 B;wgpu_core580,588 B;winit509,326 B;wgpu_hal+wgpu425,719 B; the standalone shell (ritmoluxstandalone) 344,921 B;wayland_client275,803 B. The font stack behind thetextfeature —harfrust,skrifa,zeno,read_fonts,cosmic_text,swash,fontdb,fontconfig_parser,roxmltree,yazi, theunicode_*tables andglyphonitself — sums to 1,584,263 B of named symbols, a floor consistent with the 2,104,320 B the same feature measured as a whole-artifact diff. The embedded preset library is 116 files, 641,455 B verbatim in.rodata(ADR-0022). The series, one row per reading:
Measured at binary build bytes 2026-09-19 ritmolux.exeWindows 10, cargo build --release, default features10,971,648 B 2026-09-22 ritmolux(Linux)v0.142.0, packaging/linux/stage.sh, Arch12,711,688 B 2026-09-22 ritmolux(Linux)v0.143.1, cargo build --release -p standalone, rustc 1.97.1, Arch12,711,784 B -
Soft cap 12,582,912 B (12 MiB) for the foobar2000 component,
foo_ritmolux.dll— its own figure rather than “the same ballpark”, because the two artifacts do not carry the same things. The component carries the whole core, the embedded preset library and the SDK shim, and carries neitherwinit, the window, nor the WASAPI capture stack. Derived in ADR-0159 as 9,789,952 B plus one more step the size of thetextstep, rounded up to the next binary boundary — so it admits one more feature of the largest class this project has shipped, and a second one has to be argued for.packaging/foobar/build-component.ps1prints the length on every build and warns above 11,324,620 B (90 % of the cap). It never fails a release over a size: these caps are soft, while the seven fatal checks beside the measurement are properties of a correct artifact. -
Recorded, not capped: 118,073,278 B for the Windows studio zip,
ritmolux-studio-v0.113.0-windows-x64.zip, measured from the first zippackaging/studio/build-studio.ps1produced (ADR-0178 asks for the figure in bytes; the macOS universal zip carries two Electron architectures and will be larger, and its figure joins this row when the first release measures it). It decomposes, from the unpacked 291,321,974 B: 277,424,419 B of prebuilt Electron runtime, 10,701,824 B of player, and 3,195,731 B ofapp.asar— everything this project wrote. That ratio is why the row records rather than caps: 95 % of the artifact is a dependency whose size no edit here moves, so a cap would measure Electron’s release cadence rather than our restraint, and the two soft caps above exist to be readings on the latter. What would move it is dropping a bundle, not trimming one; the studio is never shipped inside the player, and nothing shipped depends on it. -
wgpu is the accepted fixed cost; little else is.
-
Release profile: LTO on, symbols stripped, exact-version pins for direct deps.
-
Gate: any new crate pulling > ~20 transitive deps needs a stated justification (comment in
Cargo.tomlor, if cross-cutting, an ADR).
Built from 13c7582 at version 0.158.0. This site tracks main and is not versioned per release.