nandi/jolt-nativepublic Fork 0
fc16d8e4f1cf0b5245d833bf4521e99d73b72df4
Commits
Clone
git clone https://git.rickub.com/nandi/jolt-native.git
git clone ssh://git@rickub.com/nandi/jolt-native.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Lift freeq's AV media plane out of sleek 90f8b89 · on fc16d8e4f1cf0b5245d833bf4521e99d73b72df4 · nandi · 20d ago
CHANGELOG.md · 136 lines · 5.3 KBmarkdown
Blame HistoryOpen raw

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

Unreleased

Added

  • Added Driver::latencies()
  • asio_message now dispatches kAsioResyncRequest and kAsioLatenciesChanged to callbacks
    instead of silently ignoring them
  • sample_rate_did_change now dispatches AsioDriverEvent::SampleRateChanged to registered
    callbacks when the reported rate differs from the last known rate

Changed

  • Driver::add_message_callback and Driver::remove_message_callback replaced by
    Driver::add_event_callback and Driver::remove_event_callback
  • MessageCallback renamed to DriverEventCallback, and MessageCallbackId renamed to
    DriverEventCallbackId. DriverEventCallback wraps Fn(AsioDriverEvent) -> bool where
    AsioDriverEvent is a new enum covering both asioMessage selector events and
    sampleRateDidChange notifications
  • CallbackId renamed to BufferCallbackId
  • Public-facing c_long fields and return types replaced with i32
  • Public-facing c_double parameters and return types replaced with f64.
  • Driver::latencies() now returns Latencies { input, output }.
  • Driver::buffersize_range() now returns BufferSizeRange { min, max }.
  • CallbackInfo::system_time is now u64 nanoseconds.
  • AsioError::ASE_NoMemory renamed to AsioError::NoMemory.
  • AsioTime::reserved, AsioTimeInfo::reserved, AsioTimeCode::future fields made private.
  • asio_import module is now pub(crate); raw bindgen types are no longer public API
  • asio_message delegates kAsioSelectorSupported for unknown selectors to registered
    callbacks, so each host decides which capabilities it opts into

Fixed

  • Asio::load_driver now returns LoadDriverError::LoadDriverFailed instead of panicking when the
    driver name contains a null byte
  • Fixed TOCTOU race condition when creating streams concurrently
  • Driver::set_sample_rate now performs a dummy buffer cycle and driver reload when
    the driver does not apply the rate change immediately, as required by some drivers
    (e.g. Steinberg)
  • Fixed asio_message not advertising kAsioSelectorSupported itself as a supported selector
  • Fixed data race where channels, latencies, sample_rate, and related query methods could
    call ASIO concurrently during set_sample_rate's teardown/reload

Removed

  • Removed unused SampleRate struct
  • DriverState is no longer part of the public API

0.2.6 - 2026-02-18

Fixed

  • Link advapi32 to resolve Windows Registry API symbols

0.2.5 - 2026-01-04

Fixed

  • Fixed ASIO SDK discovery on case sensitive filesystems

0.2.4 - 2025-12-20

Fixed

  • Fixed docs.rs documentation build by generating stub bindings when building for docs.rs
  • Fixed buffer switch detection to work correctly with non-conformant ASIO drivers

0.2.3 - 2025-12-12

Added

  • Added edition = "2021" and rust-version = "1.70" to Cargo.toml
  • Added README.md with usage documentation
  • Added CHANGELOG.md following Keep a Changelog format
  • Added rustfmt.toml for consistent formatting

Changed

  • Update bindgen to 0.72
  • Update cc to 1.2
  • Update parse_cfg to 4.1
  • Update enumerate example to use pub type SampleRate = u32 instead of pub struct SampleRate(pub u32) for consistency with cpal

Fixed

  • Fix linker flags for MinGW cross-compilation
  • Add packed(4) to representation of ASIO time structs in bindings
  • Fix handling for kAsioResetRequest message to prevent driver UI becoming unresponsive
  • Fix timeinfo flags type

0.2.2 - 2024-03-04

Added

  • Automate ASIO SDK download during build (no longer requires manual download)
  • Add support for CPAL_ASIO_DIR environment variable to use local SDK

Changed

  • Update bindgen to 0.59
  • Switch to once_cell from lazy_static
  • Improve build script error messages and SDK detection
  • Clean up build script structure
  • Re-run build script when CPAL_ASIO_DIR changes

Fixed

  • Fix segmentation fault during build on some systems
  • Fix various compiler warnings
  • Fix typos in code and comments

0.2.1 - 2021-11-26

Changed

  • Update bindgen to 0.56

Fixed

  • Fix some typos and warnings

0.2.0 - 2020-07-22

Changed

0.1.0 - 2020-07-22

Initial release.

Added

  • FFI bindings to Steinberg ASIO SDK
  • Automatic binding generation using bindgen
  • Support for MSVC toolchain on Windows
  • Basic error types: AsioError, LoadDriverError
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added
- Added `Driver::latencies()`
- `asio_message` now dispatches `kAsioResyncRequest` and `kAsioLatenciesChanged` to callbacks
  instead of silently ignoring them
- `sample_rate_did_change` now dispatches `AsioDriverEvent::SampleRateChanged` to registered
  callbacks when the reported rate differs from the last known rate

### Changed
- `Driver::add_message_callback` and `Driver::remove_message_callback` replaced by
  `Driver::add_event_callback` and `Driver::remove_event_callback`
- `MessageCallback` renamed to `DriverEventCallback`, and `MessageCallbackId` renamed to
  `DriverEventCallbackId`. `DriverEventCallback` wraps `Fn(AsioDriverEvent) -> bool` where
  `AsioDriverEvent` is a new enum covering both `asioMessage` selector events and
  `sampleRateDidChange` notifications
- `CallbackId` renamed to `BufferCallbackId`
- Public-facing `c_long` fields and return types replaced with `i32`
- Public-facing `c_double` parameters and return types replaced with `f64`.
- `Driver::latencies()` now returns `Latencies { input, output }`.
- `Driver::buffersize_range()` now returns `BufferSizeRange { min, max }`.
- `CallbackInfo::system_time` is now `u64` nanoseconds.
- `AsioError::ASE_NoMemory` renamed to `AsioError::NoMemory`.
- `AsioTime::reserved`, `AsioTimeInfo::reserved`, `AsioTimeCode::future` fields made private.
- `asio_import` module is now `pub(crate)`; raw bindgen types are no longer public API
- `asio_message` delegates `kAsioSelectorSupported` for unknown selectors to registered
  callbacks, so each host decides which capabilities it opts into

### Fixed
- `Asio::load_driver` now returns `LoadDriverError::LoadDriverFailed` instead of panicking when the 
  driver name contains a null byte
- Fixed TOCTOU race condition when creating streams concurrently
- `Driver::set_sample_rate` now performs a dummy buffer cycle and driver reload when
  the driver does not apply the rate change immediately, as required by some drivers
  (e.g. Steinberg)
- Fixed `asio_message` not advertising `kAsioSelectorSupported` itself as a supported selector
- Fixed data race where `channels`, `latencies`, `sample_rate`, and related query methods could
  call ASIO concurrently during `set_sample_rate`'s teardown/reload

### Removed
- Removed unused `SampleRate` struct
- `DriverState` is no longer part of the public API

## [0.2.6] - 2026-02-18

### Fixed
- Link `advapi32` to resolve Windows Registry API symbols

## [0.2.5] - 2026-01-04

### Fixed
- Fixed ASIO SDK discovery on case sensitive filesystems

## [0.2.4] - 2025-12-20

### Fixed
- Fixed docs.rs documentation build by generating stub bindings when building for docs.rs
- Fixed buffer switch detection to work correctly with non-conformant ASIO drivers

## [0.2.3] - 2025-12-12

### Added
- Added `edition = "2021"` and `rust-version = "1.70"` to Cargo.toml
- Added README.md with usage documentation
- Added CHANGELOG.md following Keep a Changelog format
- Added rustfmt.toml for consistent formatting

### Changed
- Update `bindgen` to 0.72
- Update `cc` to 1.2
- Update `parse_cfg` to 4.1
- Update enumerate example to use `pub type SampleRate = u32` instead of `pub struct SampleRate(pub u32)` for consistency with cpal

### Fixed
- Fix linker flags for MinGW cross-compilation
- Add `packed(4)` to representation of ASIO time structs in bindings
- Fix handling for `kAsioResetRequest` message to prevent driver UI becoming unresponsive
- Fix timeinfo flags type

## [0.2.2] - 2024-03-04

### Added
- Automate ASIO SDK download during build (no longer requires manual download)
- Add support for `CPAL_ASIO_DIR` environment variable to use local SDK

### Changed
- Update `bindgen` to 0.59
- Switch to `once_cell` from `lazy_static`
- Improve build script error messages and SDK detection
- Clean up build script structure
- Re-run build script when `CPAL_ASIO_DIR` changes

### Fixed
- Fix segmentation fault during build on some systems
- Fix various compiler warnings
- Fix typos in code and comments

## [0.2.1] - 2021-11-26

### Changed
- Update `bindgen` to 0.56

### Fixed
- Fix some typos and warnings

## [0.2.0] - 2020-07-22

### Changed
- Update repository URL to https://github.com/RustAudio/cpal/

## [0.1.0] - 2020-07-22

Initial release.

### Added
- FFI bindings to Steinberg ASIO SDK
- Automatic binding generation using bindgen
- Support for MSVC toolchain on Windows
- Basic error types: `AsioError`, `LoadDriverError`

[Unreleased]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.6...HEAD
[0.2.6]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.5...asio-sys-v0.2.6
[0.2.5]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.4...asio-sys-v0.2.5
[0.2.4]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.3...asio-sys-v0.2.4
[0.2.3]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.2...asio-sys-v0.2.3
[0.2.2]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.1...asio-sys-v0.2.2
[0.2.1]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.2.0...asio-sys-v0.2.1
[0.2.0]: https://github.com/RustAudio/cpal/compare/asio-sys-v0.1.0...asio-sys-v0.2.0
[0.1.0]: https://github.com/RustAudio/cpal/releases/tag/asio-sys-v0.1.0