@@ -72,9 +72,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7272 silently returning an empty list.
7373- ** AAudio** : Bump MSRV to 1.85.
7474- ** AAudio** : Buffers with default sizes are now dynamically tuned.
75- - ** AAudio** : ` SupportedBufferSize ` now reports ` min: 1 ` .
75+ - ** AAudio** : ` SupportedBufferSize ` in enumeration is now ` Unknown ` .
7676- ** AAudio** : ` default_input_config() ` and ` default_output_config() ` now prefer 48 kHz, then
7777 44.1 kHz, then the maximum supported sample rate, instead of always taking the maximum.
78+ - ** AAudio** : Channel enumeration extended to 8 channels.
7879- ** ALSA** : Stream error callback now receives ` ErrorKind::DeviceNotAvailable ` on device
7980 disconnection.
8081- ** ALSA** : Polling errors trigger underrun recovery instead of looping.
@@ -99,6 +100,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99100- ** AudioWorklet** : ` BufferSize::Fixed ` now sets ` renderSizeHint ` on the ` AudioContext ` .
100101- ** AudioWorklet** : ` default_output_config() ` now uses 48 kHz as the default sample rate instead
101102 of 44.1 kHz, reflecting the dominant native rate on modern hardware.
103+ - ** AudioWorklet** : ` channels: 0 ` or ` sample_rate: 0 ` now return ` InvalidInput ` instead of ` UnsupportedConfig ` .
104+ - ** AudioWorklet** : Sample rates now enumerated as discrete standard rates in the spec-required
105+ range of 3–768 kHz.
102106- ** CoreAudio** : Bump MSRV to 1.85.
103107- ** CoreAudio** : Bump ` mach2 ` to 0.6 (uses ` core::ffi ` instead of ` libc ` , enables tvOS builds).
104108- ** CoreAudio** : Timestamps now include device latency and safety offset.
@@ -141,6 +145,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
141145- ** WebAudio** : Initial buffer scheduling offset now scales with buffer duration.
142146- ** WebAudio** : ` default_output_config() ` now uses 48 kHz as the default sample rate instead of
143147 44.1 kHz, reflecting the dominant native rate on modern hardware.
148+ - ** WebAudio** : Sample rates now enumerated as discrete standard rates in the spec-required
149+ range of 3–768 kHz.
144150
145151### Removed
146152
@@ -154,13 +160,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
154160### Fixed
155161
156162- Fix numeric overflows in calls to create ` StreamInstant ` in ASIO, CoreAudio and JACK.
163+ - ** AAudio** : Fix panic in device configuration enumeration for pathological channel counts.
157164- ** AAudio** : Fix thread lock when a stream is dropped before it fully starts.
158165- ** AAudio** : Fix capture and playback timestamps falling back to time-zero on error.
159166- ** AAudio** : Fix capture and playback timestamp not accounting for audio pipeline buffer depth.
160167- ** AAudio** : Fix overflow in ` buffer_capacity_in_frames ` for large fixed buffer sizes.
161168- ** AAudio** : Poisoned stream locks now return ` ErrorKind::StreamInvalidated ` instead of panicking.
162169- ** AAudio** : Output buffers are now zero-filled before the callback runs.
163170- ** AAudio** : Stream errors are now forwarded to ` error_callback ` .
171+ - ** AAudio** : Fix ` channels: 0 ` returning ` UnsupportedConfig ` instead of ` InvalidInput ` .
172+ - ** AAudio** : Fix ` sample_rate: 0 ` silently opening a stream at the NDK default rate instead of
173+ returning ` InvalidInput ` .
164174- ** ALSA** : Fix capture stream hanging or spinning on overruns.
165175- ** ALSA** : Fix timestamps stepping backward during stream startup or after xrun recovery.
166176- ** ALSA** : Fix spurious timestamp errors during stream startup.
@@ -177,6 +187,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
177187- ** ALSA** : Fix ` supported_configs() ` using the same buffer range for all formats and channels.
178188- ** ALSA** : Fix ` supported_configs() ` dropping sample rates outside of ` COMMON_SAMPLE_RATES ` .
179189- ** ALSA** : Fix ` BufferSize::Fixed(0) ` being silently accepted.
190+ - ** ALSA** : Fix ` channels: 0 ` or ` sample_rate: 0 ` returning ` UnsupportedConfig ` instead of ` InvalidInput ` .
191+ - ** ALSA** : Fix ` build_*_stream_raw ` returning ` UnsupportedConfig ` instead of ` UnsupportedOperation ` when
192+ the device does not support the requested direction.
180193- ** ASIO** : Fix enumeration returning only the first device when using ` collect() ` .
181194- ** ASIO** : Fix device enumeration and stream creation failing when called from spawned threads.
182195- ** ASIO** : Fix buffer size not resizing when the driver reports ` kAsioBufferSizeChange ` .
@@ -190,7 +203,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
190203- ** ASIO** : Fix ` driver.sample_rate() ` failures at stream creation being silently ignored.
191204- ** ASIO** : Fix callbacks firing before ` build_*_stream ` returns the ` Stream ` handle.
192205- ** ASIO** : Fix overrun not being reported when the driver reports ` kAsioOverload ` .
206+ - ** ASIO** : Fix ` channels: 0 ` , ` sample_rate: 0 ` , or ` BufferSize::Fixed(0) ` not returning
207+ ` ErrorKind::InvalidInput ` ; preventing a divide-by-zero panic.
208+ - ** ASIO** : Fix ` BufferSize::Fixed ` with a size that does not align to the driver's step constraint
209+ not returning ` ErrorKind::UnsupportedConfig ` .
193210- ** AudioWorklet** : Fix ` default_output_device() ` to return ` None ` when AudioWorklet is unavailable.
211+ - ** AudioWorklet** : Fix channel count exceeding ` destination.maxChannelCount ` silently using fewer
212+ channels than requested.
213+ - ** AudioWorklet** : Fix ` supported_output_configs() ` reporting the buffer size upper bound as
214+ ` FrameCount::MAX ` ; now correctly ` floor(6 × sample_rate) ` per spec.
215+ - ** AudioWorklet** : Fix ` supported_output_configs() ` reporting the minimum render quantum size as
216+ 128 when ` renderQuantumSize ` is supported; the spec minimum is 1.
194217- ** CoreAudio** : Fix default output streams silently stopping when the system default output
195218 device is unplugged; they now reroute automatically or report ` ErrorKind::DeviceNotAvailable ` .
196219- ** CoreAudio** : Fix undefined behaviour and silent failure in loopback device creation.
@@ -201,23 +224,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
201224- ** CoreAudio** : Fix crashes on certain drivers due to early initialization.
202225- ** CoreAudio** : Fix ` supported_output_configs() ` and ` supported_input_configs() ` collapsing
203226 non-continuous hardware rates into a continuous range of sample rates (regression since v0.17.0).
227+ - ** CoreAudio** : Fix ` channels: 0 ` , ` sample_rate: 0 ` , or ` BufferSize::Fixed(0) ` to return ` ErrorKind::InvalidInput ` .
228+ - ** CoreAudio** : Fix ` BufferSize::Fixed ` producing cryptic backend errors when not validated against
229+ the hardware buffer frame size range before stream creation.
230+ - ** CoreAudio (iOS)** : Fix ` BufferSize::Fixed ` not being validated against the supported range before stream creation.
204231- ** JACK** : Fix input capture timestamp using callback execution time instead of cycle start.
205232- ** JACK** : Poisoned error callback mutex no longer silently drops subsequent error notifications.
206233- ** JACK** : Port registration failure now fails stream creation instead of silently failing.
207234- ** JACK** : ` activate_async() ` failure now returns an error instead of panicking.
208235- ** JACK** : Sample rate is now validated against the live JACK server at stream creation time.
209236- ** JACK** : Underrun notification no longer blocks the notification thread.
210237- ** JACK** : Output buffers are now zero-filled before the callback runs.
238+ - ** JACK** : Fix ` channels: 0 ` , ` sample_rate: 0 ` , or ` BufferSize::Fixed(0) ` not returning ` ErrorKind::InvalidInput `
239+ before attempting server connection.
240+ - ** JACK** : Fix ` supported_input_configs() ` and ` supported_output_configs() ` reporting a hardcoded sparse channel
241+ list instead of enumerating all counts up to the number of physical system ports.
242+ - ** PipeWire** : Fix ` channels: 0 ` or ` sample_rate: 0 ` silently using PipeWire-negotiated values instead of
243+ returning ` ErrorKind::InvalidInput ` .
244+ - ** PulseAudio** : Fix ` channels: 0 ` or ` sample_rate: 0 ` reaching the server instead of returning ` ErrorKind::InvalidInput ` .
211245- ** WASAPI** : Poisoned locks now returns an error instead of panicking.
212246- ** WASAPI** : Output buffers are now zero-filled before the callback runs.
213247- ** WASAPI** : Fix audio worker thread spawn failure panicking instead of returning an error.
214248- ** WASAPI** : Fix callbacks firing before ` build_*_stream ` returns the ` Stream ` handle.
215249- ** WASAPI** : Fix Communications-class inputs to return silence.
216250- ** WASAPI** : Fix ` supported_input_configs() ` advertising unsupported sample rates on input
217251 devices.
252+ - ** WASAPI** : Fix ` sample_rate: 0 ` with ` BufferSize::Fixed ` causing a divide-by-zero panic.
253+ - ** WASAPI** : Fix ` channels: 0 ` or ` sample_rate: 0 ` not returning ` ErrorKind::InvalidInput ` .
254+ - ** WASAPI** : Fix ` supported_input_configs() ` , ` supported_output_configs() ` , ` default_input_config() ` ,
255+ and ` default_output_config() ` reporting an unconstrained buffer range on software audio stacks.
256+ - ** PulseAudio** : Fix ` supported_output_configs() ` and ` default_output_config() ` to account for PulseAudio's double-buffer.
257+ - ** WebAudio** : Fix overflow with pathological channel counts.
218258- ** WebAudio** : Fix duplicated callbacks on repeated ` play() ` calls.
219259- ** WebAudio** : Report errors through the callback instead of panicking.
220260- ** WebAudio** : Fix ` default_output_device() ` to return ` None ` when WebAudio is unavailable.
261+ - ** WebAudio** : Fix ` channels: 0 ` , ` sample_rate: 0 ` , or ` BufferSize::Fixed(0) ` not returning ` ErrorKind::InvalidInput ` .
262+ - ** WebAudio** : Fix channel count exceeding ` destination.maxChannelCount ` silently using fewer
263+ channels than requested.
221264
222265
223266## [ 0.17.3] - 2026-02-18
0 commit comments