Added
- AAudio: Xruns are now reported as
ErrorKind::Xrun. - CoreAudio: Xruns are now reported as
ErrorKind::Xrun. - PipeWire: Xruns are now reported as
ErrorKind::Xrun. - WASAPI: Capture xruns are now reported as
ErrorKind::Xrun.
Changed
- BSD: Clarify that
realtime-dbushas no effect there. - CoreAudio: Bump
objc2-core-foundationdependency lower bound to 0.3.1. - iOS: Timestamps now include hardware latency and update when the audio route changes.
- JACK: Timestamps now include port latency.
- Linux: Clarify that
realtimealone is a no-op withoutrealtime-dbus. - PipeWire: Devices with multiple ports now get distinct, localized, per-port names.
- WASAPI: The
windowsandwindows-coredependencies are now both pinned to 0.62.
Fixed
- Timestamps now stay monotonic across device and graph changes.
- ALSA: A nonzero but sub-millisecond stream timeout is no longer treated as a non-blocking poll.
- ALSA: Fix compilation on FreeBSD, DragonFly, and NetBSD.
- ASIO: Fix duplex streams silently dropping audio when built from separate
Devicehandles. - AudioWorklet: Fix
Streamoperations to work when called from any thread. - AudioWorklet: Fix stale audio output when a data callback wrote a partial buffer.
- CoreAudio: Fix stale audio output when a data callback wrote a partial buffer.
- CoreAudio: Default-output streams now report xrun status.
- iOS: Streams now resume automatically when an audio session interruption ends.
- JACK: Streams with more channels than physical system ports no longer fail to build.
- JACK: Channel enumeration is no longer capped at the physical system port count.
- JACK:
Device::idno longer embeds the process ID, soDeviceIdis now stable across application restarts. - PipeWire: Fix streams starting audio before
play()is called. - PipeWire: Fix real-time promotion blocking the audio callback thread on Linux.
- PipeWire: Fix rtkit burst limit errors from repeated real-time promotion on quantum jitter.
- PipeWire: Fix 24-bit sample format mapping.
- PipeWire: Nodes with an
/Internalmedia class are now enumerated as devices. - PipeWire: Streams for a specific device no longer auto-reroute if it disappears.
- PipeWire: Build on 32-bit targets without native 64-bit atomics.
- PulseAudio:
NoDataerrors are no longer misreported as buffer xruns. - PulseAudio: Build on 32-bit targets without native 64-bit atomics.
- visionOS: The CoreAudio backend now builds.
- WASAPI:
Stream::drop,play, andpauseno longer panic when the device is lost. - WASAPI: Output streams no longer reject formats that the built-in resampler can convert.
- WASAPI: Fix 24-bit samples not being packed into the upper bits of their sample container.
- WASAPI: Reported buffer sizes are no longer off by one frame.
- WASAPI: Default device changes no longer report
DeviceChanged, which wrongly implied the stream had rerouted automatically. - WebAudio: Fix stale audio output when a data callback wrote a partial buffer.
- WebAudio: Fix unsound
Send + SynconStreamwhen compiled with+atomics. - WebAudio: Fix
Host::is_available()always returningtrue, even in non-window contexts.
Thanks to Our Contributors
14 people contributed to this release, 9 of them for the first time: Andreas (@sandreas), Benoît Rouleau (@benface), @dheijl, Edwin Löffler (@edwloef), Erwan Legrand (@ErwanLegrand), @Jaxx497, Kpqi5858 (@kpqi5858), LastExceed (@LastExceed), Mat Silverstein (@silverstein), @MordechaiHadad, Nicola Vitale (@nivit), Nicolas Franco Gomez (@nico-franco-gomez), SkeletonGamer (@SkeletonGamer), and @the-drunk-coder. Welcome aboard, and thank you all!