Repository navigation
Conversation
soundserver builds only `SincFixedOut`, which never reaches rubato's `fft_resampler` feature: that default feature compiles `synchro.rs` (`FftFixedIn`/`FftFixedInOut`/`FftFixedOut`) and swaps the `FftNum` bound on `Sample` from realfft's to a local trait of the same bounds. Turning the default off removes rustfft, realfft, num-complex, strength_reduce, transpose and primal-check from the lockfile and the image's build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017cSFvbD35xJ2kGANVdm23C
Evidence: the resampling path is unchangedHead 1. Host differential: rubato 0.16.2 with and without
|
Gate logs (excerpts, head
|
Guest suite, head
|
|
Review of head Net lines ( Is "the audio is unchanged" proven? Yes, for the resampler's output on both architectures.
What the PR does not show is that the binary is unchanged. It is not, so the timing judges have to be read on the machine.
BLOCKER
NOTE
SEND BACK |
|
T14 at |
|
Round 2, head Round 1's BLOCKER
BLOCKERNone. NOTE
LAND |
|
CI at |
soundserver depends on
rubatowithdefault-features = false. soundserver builds onlySincFixedOut. rubato's one default feature,fft_resampler, compiles onlysynchro.rs(FftFixedIn/FftFixedInOut/FftFixedOut) and swaps theFftNumbound onSamplefrom realfft's trait to a local trait with the same bounds (rubato-0.16.2/src/lib.rs:44,58,src/sample.rs:3-15). Turning it off removes six crates fromCargo.lock:rustfft,realfft,num-complex,strength_reduce,transposeandprimal-check. Together they hold 66,876 lines of.rsin the registry sources (find <crate> -name '*.rs' | xargs cat | wc -l; rustfft alone has 59,502).rubato,num-integerandnum-traitsstay.This is stage R0 of the audio resampler work. It changes nothing in soundserver's source.
The audio path is unchanged; the binary is not byte-identical
The evidence is in the PR comment "Evidence: the resampling path is unchanged". In short:
fft_resamplerproduces bit-identical output and the sameinput_frames_next/used/produced sequence. The test uses soundserver's exact parameters at 19 rate pairs. Both runs exit 0, both outputs hash to sha256e0073d81…, andcmpreturns 0. Negative control: changingf_cutoffby 1e-7 changes the output (cmpreturns 1).rubato,toyos_mixer,soundserver::client) is identical. The constants that path loads are the same bytes. What went away is two allocator helpers rustfft had instantiated (RawVec::grow_one,finish_grow). Their instructions match the copies the binary keeps, and identical code folding now merges them.Gates
cargo run -- --build-only(based6298c83e)build-before.logcargo run -- --build-only1c87ae677build-after.logcargo run -- --ci host1c87ae677Host: 78 step(s), all green)ci-host.logcargo test(whole guest suite)1c87ae67741 passed, 41 total; uptime load 48.71 68.28 79.47 at start, 60.38 67.77 77.45 at end). An earlier run hit a full host disk (ENOSPC) and is void.guest.logcargo test --test toyos-build -- --metal --metal-readback <dir> boot:testcases1c87ae677testcases/image.imgsha25622682b7a…,testcases-watchdog/image.img3440a70a…metal-stage.logboot:testcases, run by the orchestrator (both images' hashes checked,--fat32-check0)1c87ae677[metal] 249 passed, 0 failed, 2 boot(s), withhda_tone,hda_client_stall,shipped_client_departures,audio_idle_suspendgreenDiff
Cargo.lock: −59 lines (six[[package]]entries, plusnum-complexandrealfftfrom rubato's dependencies).userland/soundserver/Cargo.toml: one line changed.What I am unsure of
fft_resampleroff, theSamplebound is a local trait with the same bounds as rustfft'sFftNum, no items and a blanket impl, so no itemSincFixedOut<f32>calls changes. The host differential (rubato's NEON path on aarch64-apple-darwin) is a witness to that, not the proof.🤖 Generated with Claude Code
https://claude.ai/code/session_017cSFvbD35xJ2kGANVdm23C