This is the first release candidate for version 0.3.0 of Tardy. This will ideally be a good place for development to stabilize around Frames and is intended to be a bug-fixing point before the official 0.3.0 release.
This changes a lot in general about the runtime that will be detailed below.
Callbacks removed in favor of Coroutines (called Frames internally), allowing for much nicer composition across the board.
New Filesystem API (including the new File and Dir struct that have pretty good inter-op with the standard library equivalents)
New Socket API (including the new Socket struct). This officially supports TCP, UDP and Unix. It also properly supports getting address information about sockets now.
Switch from the busy_loop to poll on POSIX-compliant systems, providing better cross-platform support.
Support for unlimited max tasks for workloads with an unknown number of maximum tasks. This is supported through changes to the underlying Pool implementation.
Switched AsyncIO struct to utilize a VTable approach, better standardizing the implementation.
Async I/O implementations now provide the runtime with a list of Async capabilities. If an action is queued that is not supported by the Async I/O backend, it is handled through a non-blocking yielding loop.
Stream abstraction for I/O.
EXPERIMENTAL: Added triggers, allowing for tasks to suspend until they are woken up by a different task in the future.
EXPERIMENTAL: Added a SPSC Channel, allowing for crosstask and crossthread communication.
What's Changed
Async Overhaul (Frames + Poll) by @mookums in https://github.com/mookums/tardy/pull/7
library only compiles when the zig compiler versions match by @Torbatti in https://github.com/mookums/tardy/pull/8
New Contributors
@Torbatti made their first contribution in https://github.com/mookums/tardy/pull/8
Full Changelog: https://github.com/mookums/tardy/compare/v0.2.1...v0.3.0-rc1