Repository navigation
v0.0.4
0.0.4 (2026-10-25)
Changed
- On 32-bit x86 the library is built with SSE2 math
(-msse2 -mfpmath=sse), so it needs a processor with SSE2, and every
build now leaves trapping math at the compiler's default, from the
family's compiler flags. On 64-bit builds the bake still matches byte
for byte and every test passes unchanged
(#57).
Fixed
- An ALSA output through ALSA's PulseAudio plugin, the default PCM
wherever ALSA programs are routed to a PulseAudio server (a PipeWire
system withoutpipewire-alsaincluded), counts the gaps it plays.
The plugin plays silence for a starved stream without-EPIPE, so
such gaps used to leaveunderrunsunchanged. A running output now
counts one underrun when it finds its PCM's queue empty before a
write, once the PCM has had the stream's frames, and when a write
comes more than a period after every frame written so far could have
played out, once the write before it found frames queued; the second
catches a stall thatpipewire-pulsereports with frames still
queued. Each gap counts once. The first fill after a start or a
recovery, silence written while the stream does not run, and an empty
queue reported before the frames could have played count nothing, and
neither does a sink that starts late. A sink that stops taking frames
mid-stream and resumes later also counts an underrun, since the server
reports it as it reports a starved stream. Hardware PCMs are
unchanged: their gaps still come as-EPIPE
(#35,
#62). - On 32-bit x86 the library's floating-point setting also holds the x87
control word, so a host that leaves x87 at single or double precision
no longer changes what the library computes there, andsqrtcompiles
to one rounded instruction rather than a C library call that may set
errno. The bake and the golden renders are unchanged
(#23).
Release gate: the nightly extended run on main. The owner waived device-checklist.md step 7 for this release on 2026-10-25.