NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1072 most downloaded on crates.io
Bindings and wrappers for Apple's Grand Central Dispatch (GCD)
Last release 7 months ago
26 Feb 2026
Release timing varies
gaps range from 3 months to 2.3 years
Nearly every release is documented
notes for 4 of 4 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
4 releases · first in 2022
One column per quarter.
Bump objc2 0.6.3 -> 0.6.4
Bump objc2 0.6.3 -> 0.6.4
DispatchSemaphoreGuard::release.crate-type = ["dylib"].Some of the old names are kept (but deprecated) for easier migration.
Queue::exec_sync on workloops.
This is discouraged for performance reasons, but doesn't need to be
outright disallowed.DispatchRetained<T>, which is a smart pointer which allows
retain/release operations on dispatch objects, similar in spirit to
objc2::rc::Retained. This mostly replaces DispatchObject<T>.Send and Sync for dispatch objects.DispatchData helper functions.Changed how memory management works to match other objc2 crates. Instead
of types like DispatchGroup holding the retain count internally, it is now
done externally by DispatchRetained<DispatchGroup>.
Converted DispatchObject to a trait.
BREAKING: Renamed dispatch types to be prefixed with Dispatch
(e.g. DispatchGroup, DispatchQueue and DispatchOnce).
Some of the old names are kept (but deprecated) for easier migration.
Handle memory management in ffi module automatically.
Merged some high-level binding types with their ffi "_t"/"_s" counterparts.
E.g. dispatch_group_t, dispatch_group_s and DispatchGroup are now one
type.
Move some functions to methods on the relevant Dispatch type.
BREAKING: Removed TargetQueueError and the error case in
DispatchObject::set_target_queue (it now instead aborts on error,
as that's what the underlying function does).
Removed ffi methods that are actually macros:
dispatch_waitdispatch_notifydispatch_canceldispatch_testcancelUsing these would have resulted in a linker error before.
dispatch_get_current_queueDeprecated.
objc2 encodings.block2.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.#[must_use] in bindings where the source uses it.Queue::main for fetching the main queue.run_on_main and MainThreadBound from objc2-foundation to this
crate.Once, a wrapper over dispatch_once_f which works similarly to
std::sync::Once.#![no_std] supportobjc2 project.Queue::set_specific take a key pointer instead of a usize.extern "C-unwind" instead of extern "C" in certain functions that required that.isize instead of usize in certain functions where that is more correct.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_asyncQueue::exec_asyncQueue::barrier_asyncQueue::barrier_async_and_wait[0.1.0]: https://github.com/madsmtm/objc2/releases/tag/dispatch2-0.1.0
Initial version.
Your coding agent can read these notes before it upgrades. Set up the MCP server →