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.
0.12.5 - 2026-07-23
- (buf) make
IoBuf,SetLen, andIoBufMutdyn-compatible (#969)
- bump cfg_aliases (#980)
- (driver,iour) set IORING_ENTER_NO_IOWAIT on CQE wait (#957)
- (driver) unify buffer pool error to ResourceBusy across backends (#961)
- drop linux_5_11 requirement (#947)
- close ring instance before dropping in_flight data (#943)
- (driver,iour) set correct poll_first flag (#939)
- replace
cfg_ifwithcfg_select(#925)
- (driver) bounds-check buffer_id in Shared::reset (#927)
- check android & ios (#922)
- (compat) runtime compatibility layers (#920)
- (driver) method to flush the operations (#919)
- (driver,executor,runtime) [breaking] remove notify-always (#902)
- (driver) add support for single issuer and deferred task run in ProactorBuilder (#908)
- (driver, net) support recv_send_poll_first (#894)
- (driver,iour) detect kernel version & fallback (#903)
- (driver,net) [breaking] reuse socket on Windows (#887)
- (driver) add
sqpoll_cpuin ProactorBuilder (#900) - (io,net) async zerocopy write traits (#898)
- (driver) compile on android (#916)
- add more targets for docs.rs (#896)
- (driver) add more flags to Extra (#858)
- (driver) add Extra::needs_polling (#857)
- (driver) recvmsg multi (#842)
- (driver) buffer pool allocator (#854)
- (driver,iour) allow to specify cqsize (#834)
- (runtime) [breaking] waker-based future combinator (#825)
- (driver) yield_now in push_blocking loop (#816)
- (driver,fs,unix) async anonymous pipe (#807)
- (driver,net,unix) async bind & listen (#806)
- (io) add traits for reading/writing with ancillary data (#717)
- implement IntoInner for PollOnce and Splice (#792)
- (net,win) make
socket&shutdownsync (#789) - (driver) [breaking] accept multi (#747)
- (driver) fallback for zerocopy ops (#755)
- (driver) send zerocopy for Linux (#754)
- update thin-cell (#738)
- (driver) multishot op (#715)
- (driver) make stub & iocp driver non-send and test (#728)
- (driver) add register_files/unregister_files for io_uring fixed-file ops (#718)
- (driver) entry fallback (#716)
- (driver) add recv_from_managed operation support (#709)
- (fs) dirfd support (#703)
- (driver,unix) [breaking] support dirfd relative fs ops (#699)
- (driver,iocp) impl AsFd for borrowed handle (#694)
- (driver) force OpCode support (#690)
- (dispatcher) block standard POSIX signals on worker threads (#672)
- (runtime) cancel & future combinator (#665)
- (driver) cancel token (#660)
- [breaking] use rustix (#876)
- (driver) adjust sys layout (#870)
- (driver) use WeakKey for Cancel (#864)
- (driver) handle panicking (#853)
- (driver) require Default for Control (#859)
- [breaking] buffer pool & managed IO (#820)
- (driver,unix) use control api (#804)
- (driver,iocp) use control api (#803)
- (driver) get rid of pin (#758)
- (net) adjust
send*methods (#770) - (driver) record multishot results in ops (#748)
- (driver) [breaking] make update_waker take &Key (#742)
- (driver) shared fd (#661)
- (driver,iour) len field for RecvMulti (#879)
- (driver) test cancel for windows (#881)
- (driver,unix) add some control API usages (#832)
- (driver) avoid leak if not consumed (#809)
- (driver,fs) add Sync on fds of AsyncifyFd* (#805)
- (driver) memory leaks on drop (#769)
- (driver) rust-analyzer is confused by Extra (#740)
- unused_features (#739)
- (driver,iour) make
Drivernon-Send(#727) - (driver,net) [breaking] to/from/msg have optional address (#721)
- (driver,stub) allow creation (#705)
- (driver,unix)
set_resultforOpenFile&CreateSocket(#701) - (driver) key is not unique when spawn_blocking (#675)
- (driver) statx on musl (#669)
- (driver) the fusion driver with polling variant (#670)
- (driver) release buffer pool (#810)
- (driver) read multi on pipe (#760)
- remove "authors" field in metadata (#711)
- (driver) fix doc for Dispatchable (#693)
0.11.1 - 2026-01-28
- (driver) [breaking] full iour fallback (#656)
- (runtime) future combinator (#639)
- (fs) splice (#635)
- (driver) fake splice test (#638)
- (driver,iour) support personality (#630)
- (driver,quic) use synchrony (#628)
- (driver) use nix instead of rustix (#627)
- (driver,poll) multi fd (#623)
- (driver) ensure that all supported statx fields are filled (#625)
- (driver) add splice (#609)
- (driver, fs) truncate file (#611)
- (driver,unix) use stat64 if possible (#597)
- [breaking] fs & net feature (#564)
- (driver) distinguish Read/Write & Recv/Send (#567)
- (driver) stablize aliases of OpCode (#566)
- (driver) [breaking] make opcode unsafe (#650)
- (runtime) [breaking] submit future (#632)
- (driver) extra (#624)
- (driver,poll) with_events (#622)
- (driver) use
thin-cellforKey(#620) - (driver) limit usage of Key::new_unchecked (#618)
- (driver) make Key less unsafe (#616)
- (buf) rename as_slice to as_init (#594)
- set_buf_init (#579)
- (driver,iocp) [breaking] make
OpCode::cancelsafe (#575) - (driver) use pin_project_lite for Ops (#570)
- (driver,runtime) merge overlapped and flags into unified
Extra(#559) - (buf) better IoBuf (#555)
- (driver,iour) cancel leaks the key (#652)
- (driver) user_data does not exist (#643)
- (driver) multi fd (#636)
- (driver, IOCP) cap buf, sys_slice length to u32 (#613)
- (driver,stub) compile (#612)
- (iour) cap buf len to u32::MAX (#600) (#601)
- (buf,driver) safety around
set_len(#585) - (driver,iocp) send* & recv* might receive dangling ptrs (#572)
- (driver) stub driver is broken (#560)