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
Channel.asyncSend(),Channel.asyncReceive()andBroadcastChannel.asyncReceive()methods for using channels inselect() - Added support for
Signalto be used inselect()
Changed
- Updated to Zig 0.15.2 (minimum required version)
select()andwait()now require futures to be passed as pointers (use&futureinstead offuture)- Channel methods
isEmpty(),isFull(),tryReceive(),trySend(), andclose()no longer require a*Runtimeparameter JoinHandle.deinit()is nowJoinHandle.detach()JoinHandle.cancel()now waits for the task to complete, after requesting cancelationJoinHandlemethodsjoin(),cancel(), anddetach()now all requires a*Runtimeparameter- Replaced
Socket.setOption()with specific methods:setReuseAddress(),setReusePort(),setKeepAlive(), andsetNoDelay()
Fixed
- Fixed EOF handling in socket read that got broken after refactoring in 0.4.0
0.4.0 - 2025-10-25
Added
- Extended runtime to support multiple threads/executors (not full work-stealing yet)
- Added
Signalfor listening to OS signals - Added
NotifyandFuture(T)synchronization primitives - Added
select()for waiting on multiple tasks
Changed
- Added
zio.net.IpAddressandzio.net.UnixAddress, matching the futurestd.netAPI - Renamed
zio.TcpListenertozio.net.Server - Renamed
zio.TcpStreamtozio.net.Stream - Renamed
zio.UdpSockettozio.net.Socket(Socketcan be also as a low-level primitive) join()is now uncancelable, it will cancel the task if the parent task is cancelledsleep()now correctly propagateserror.Canceled- Internal refactoring to allow more objects (e.g.
ResetEvent) to participate inselect()
Fixed
- IPv6 address truncatation in network operations
0.3.0 - 2025-10-16
Added
Runtime.now()for getting the current monotonic time in millisecondsJoinHandle.cast()for converting between compatible error sets- Exported
BarrierandRefCountersynchronization primitives
Changed
- BREAKING: Renamed
QueuetoChannelwith channel-style API - BREAKING:
JoinHandle(T)type parameterTnow represents the full error union type, not just the success payload - Updated to use
std.net.Addressdirectly - Internal refactoring to prepare for future multi-threaded runtime support (executor separation, unified waiter lists, improved cancellation-safety)
Fixed
- macOS crash in event loop (updated libxev with kqueue fixes)
0.2.0 - 2025-10-10
Added
- Cancellation support for all task types with proper cleanup and error handling
BarrierandBroadcastChannelsynchronization primitivesFuture(T)object for task-less async operations- Stack memory reuse and direct context switching for better performance
- Thread parking support for blocking operations
Changed
JoinHandle(T)type parameterTnow represents only the success payload, errors are stored separately- All async operations can now return
error.Canceled - Increased default stack size to 2MB on Windows due to inefficient filename handling in
std.os.windows
Fixed
- Windows TIB fields handling and shadow space allocation
- Socket I/O vectored operations and EOF translation
- Context switching clobber lists for x86_64 and aarch64
0.1.0 - 2025-10-05
Initial release.