版本发布 8
### Changed - Reverted SemVer-breaking `DeviceBusy` error variant addition. ### Fixed - **ASIO**: Fix linker errors.
### Added - **ALSA**: `Default` implementation for `Device` (returns the ALSA "default" device). - **CI**: Checks default/no-default/all feature sets with platform-dependent MSRV for JACK. ### Fixed - **ALSA**: Device enumeration now includes both hints and physical cards. - **JACK**: No longer builds on iOS. - **WASM**: WasmBindgen no longer crashes (regression from 0.17.0). ### Changed - **ALSA**: Devices now report direction from hint metadata and physical hardware probing.
### Added - `DeviceTrait::id` method that returns a stable audio device ID. - `HostTrait::device_by_id` to select a device by its stable ID. - `Display` and `FromStr` implementations for `HostId`. - Support for custom `Host`s, `Device`s, and `Stream`s. - `Sample::bits_per_sample` method. - `Copy` implementation to `InputCallbackInfo` and `OutputCallbackInfo`. - `StreamError::StreamInvalidated` variant for when stream must be rebuilt. - `StreamError::BufferUnderrun` variant for buffer underrun/overrun notifications. - `Hash` implementation to `Device` for all backends. - **AAudio**: `Send` and `Sync` implementations to `Stream`. - **AAudio**: Support for 12 and 24 kHz sample rates. - **ALSA**: `I24` and `U24` sample format support (24-bit samples stored in 4 bytes). - **ALSA**: Support for 12, 24, 352.8, 384, 705.6, and 768 kHz sample rates. - **ALSA**: `Eq` and `PartialEq` implementations to `Device`. - **CI**: Native ARM64 Linux support in GitHub Actions. - **CoreAudio**: `i8`, `i32` and `I24` sample format support (24-bit samples stored in 4 bytes). - **CoreAudio**: Support for loopback recording (recording system audio output) on macOS > 14.6. - **CoreAudio**: `Send` implementation to `Stream`. - **Emscripten**: `BufferSize::Fixed` validation against supported range. - **iOS**: Complete AVAudioSession integration for device enumeration and buffer size control. - **JACK**: Support for macOS and Windows platforms. - **JACK**: `BufferSize::Fixed` validation to reject requests that don't match server buffer size. - **WASAPI**: Expose `IMMDevice` from WASAPI host Device. - **WASAPI**: `I24` and `U24` sample format support (24-bit samples stored in 4 bytes). - **WASAPI**: `Send` and `Sync` implementations to `Stream`. - **WebAudio**: `Send` and `Sync` implementations to `Stream`. - **WebAudio**: `BufferSize::Fixed` validation against supported range. ### Changed - MSRV depends on the platform and at minimum 1.77. - Set examples to Rust 2021. - `SampleRate` from struct to `u32` type alias. - Update `audio_thread_priority` to 0.34. - Migrate CHANGELOG to [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. - **AAudio**: Configure buffer to ensure consistent callback buffer sizes. - **AAudio**: Buffer size range detection to query the AudioService property correctly. - **ALSA**: Improve `BufferSize::Fixed` precision and audio callback performance. - **ALSA**: `BufferSize::Default` to use the device defaults. - **ALSA**: Card enumeration to work like `aplay -L` does. - **ALSA**: Update `alsa` to 0.10. - **ALSA**: Pass `silent=true` to `PCM.try_recover`, so it doesn't write to stderr. - **ALSA**: Report buffer underruns/overruns via `StreamError::BufferUnderrun`. - **ASIO**: Share `sys::Asio` instance across all `Host` instances. - **CI**: Fix cargo publish to trigger on GitHub releases instead of every master commit. - **CI**: Replace cargo install commands with cached tool installation for faster builds. - **CI**: Update actions to latest versions (checkout@v5, rust-cache@v2). - **CI**: Verify compatibility with windows crates since v0.59. - **CI**: Test platforms on appropriate MSRV per backend. - **CI**: Fix `cargo update` syntax for compatibility with Cargo 1.70 (use `-p` flag instead of positional argument). - **CoreAudio**: `Device::supported_configs` to return a single element containing the available sample rate range when all elements have the same `mMinimum` and `mMaximum` values. - **CoreAudio**: Default audio device detection to be lazy when building a stream, instead of during device enumeration. - **CoreAudio**: Configure device buffer to ensure predictable callback buffer sizes. - **CoreAudio**: Remove `Clone` implementation from `Stream`. - **JACK**: Use `StreamError::StreamInvalidated` for JACK server sample rate changes. - **JACK**: Report buffer underruns/overruns via `StreamError::BufferUnderrun`. - **WASAPI**: Update `windows` to >= 0.59, <= 0.62. ### Fixed - **ALSA**: Format selection to probe hardware endianness instead of assuming native byte order. - **ALSA**: Data race in stream shutdown. - **ASIO**: Handling for `kAsioResetRequest` message to prevent driver UI becoming unresponsive. - **ASIO**: Buffer silencing logic to work with non-conformant drivers (e.g., FL Studio ASIO). - **CoreAudio**: Timestamp accuracy. - **CoreAudio**: Segfaults when enumerating devices. - **CoreAudio**: Undefined behavior related to null pointers and aligned reads. - **CoreAudio**: Unnecessary microphone permission requests when using output devices only. - **iOS**: Example by properly activating audio session. ### Removed - **WebAudio**: Optional `wee-alloc` feature for security reasons.
- Migrate from `oboe` to `ndk::audio`. **NOTE:** This raises the minimum Android API version to 26 (Android 8/Oreo). - `SampleFormat` now impls `PartialOrd`, `Ord` and `Hash`. - All error enums are now `Clone`, `PartialEq`, `Eq` and `Hash`. - Added optional `supports_input`/`output` methods to `DeviceTrait`. - Added 384000Hz to `COMMON_SAMPLE_RATES`. - Added constructors for `InputCallbackInfo`, `OutputCallbackInfo` and `StreamInstant`. - Added `Default` impl for `Host`. - Set realtime priority for stream threads in ALSA and WASAPI. - AAudio: Improve device names. - ALSA: Don't panic when handling invalid stream timestamps. - ALSA: Improved card enumeration. - ALSA: Fix infinite loop on broken pipes. - ASIO: Fix build failure on Windows. - ASIO: Add support for int24. - CoreAudio: Fix callback being called after dropping the stream. - CoreAudio: Fix non-default audio output. - CoreAudio: Fix handling of integer input formats. - WASAPI: Fixed memory leak. - WASAPI: Remove usage of `eval`. - Update `jack` dependency to 0.13. - Update `coreaudio-rs` dependency to 0.13.
- Add feature `oboe-shared-stdcxx` to enable `shared-stdcxx` on `oboe` for Android support - Remove `thiserror` dependency - Swith `mach` dependency to `mach2`
- Support the 0.6.1 release of `alsa-rs` - Fix `asio` feature broken in 0.14.0 - `NetBSD` support - CI improvements
- Faster sample format conversion - Update dependencies (ndk, oboe, ndk-glue, jack, alsa, nix)
- Update dependencies (ndk, nix, oboe, jni, etc)