# Changelog

Notable changes to this crate will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## Unreleased - YYYY-MM-DD


## 0.2.0 - 2025-01-22

### Added
- Added support for `objc2` encodings.
- Added initial support for `block2`.
- Autogenerated `ffi` bindings, which adds:
  - `dispatch_data_applier_t`.
  - `dispatch_fd_t`.
  - `dispatch_io_close_flags_t`.
  - `dispatch_io_handler_t`.
  - `dispatch_io_interval_flags_t`.
  - `dispatch_io_s` / `dispatch_io_t`.
  - `dispatch_io_type_t`.
  - `DISPATCH_WALLTIME_NOW`.
  - `_dispatch_source_type_mach_recv`.
  - `_dispatch_source_type_proc`.
  - `_dispatch_source_type_signal`.
  - `_dispatch_source_type_vnode`.
  - `dispatch_allow_send_signals`.
  - `dispatch_apply`.
  - `dispatch_cancel`.
  - `dispatch_data_apply`.
  - `dispatch_get_current_queueDeprecated`.
  - `dispatch_get_main_queue`.
  - `dispatch_io_barrier`.
  - `dispatch_io_close`.
  - `dispatch_io_create`.
  - `dispatch_io_create_with_io`.
  - `dispatch_io_create_with_path`.
  - `dispatch_io_get_descriptor`.
  - `dispatch_io_read`.
  - `dispatch_io_set_high_water`.
  - `dispatch_io_set_interval`.
  - `dispatch_io_set_low_water`.
  - `dispatch_io_write`.
  - `dispatch_notify`.
  - `dispatch_read`.
  - `dispatch_testcancel`.
  - `dispatch_wait`.
  - `dispatch_write`.
- Added `#[must_use]` in bindings where the source uses it.
- Added `Queue::main` for fetching the main queue.
- Moved `run_on_main` and `MainThreadBound` from `objc2-foundation` to this
  crate.
- Added `Once`, a wrapper over `dispatch_once_f` which works similarly to
  `std::sync::Once`.
- Added `#![no_std]` support

### Changed
- Moved to the `objc2` project.
- **BREAKING**: Made `Queue::set_specific` take a key pointer instead of a `usize`.

### Fixed
- **BREAKING**: Use `extern "C-unwind"` instead of `extern "C"` in certain functions that required that.
- **BREAKING**: Use `isize` instead of `usize` in certain functions where that is more correct.
- **BREAKING**: An `F: 'static` bound was added to the following methods to make
                sure any referenced values passed to them are borrowed for long
                enough since they perform their `work` asynchronously (#689):
  - `Group::exec_async`
  - `Queue::exec_async`
  - `Queue::barrier_async`
  - `Queue::barrier_async_and_wait`


## 0.1.0 - 2022-10-02

Initial version.
