Skip to content

Releases: tardy-org/tardy

v0.3.0-rc2

20 Feb 02:55
034d194
Compare
Choose a tag to compare
v0.3.0-rc2 Pre-release
Pre-release

This is the second release candidate for version 0.3.0 of Tardy. This will be the last release before Zig 0.14. v0.3.0 will be delayed until Zig 0.14 comes.

Changes with v0.3.0-rc2:

  • Socket now provides an init_with_address fn, allowing creating with just a std.net.Address and a Kind.
  • io_uring backend now properly handles INTR signals by just re-queuing job,
  • Reader and Writer interfaces provided for the Socket and File type, allowing for better integration with other libraries that aren't natively built for Tardy.
  • EXPERIMENTAL: improved performance on SPSC channel.
  • EXPERIMENTAL: SPSC minimum channel size is now 2.

Below are the changes that v0.3.0-rc1 introduced:

  • 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

  • Add Reader/Writer Interfaces to File and Socket by @mookums in #11

Full Changelog: v0.3.0-rc1...v0.3.0-rc2

v0.3.0-rc1

02 Feb 23:01
a12b12f
Compare
Choose a tag to compare
v0.3.0-rc1 Pre-release
Pre-release

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 #7
  • library only compiles when the zig compiler versions match by @Torbatti in #8

New Contributors

Full Changelog: v0.2.1...v0.3.0-rc1

v0.2.1

21 Dec 09:05
e133b42
Compare
Choose a tag to compare

This is a hotfix that ensures that tardy works using all Async I/O backends. Namely, this fixes the busy_loop implementation.

Full Changelog: v0.2.0...v0.2.1

v0.2.0

18 Dec 04:10
543e6b0
Compare
Choose a tag to compare

This update focused on cleaning up a variety of sharp edges as well as various features.

  • Added queue_connect for connecting to different sockets. (42e61e3)
  • Added an abstracted wrap and unwrap allowing for more complex types to be converted to an integer representation. (e54daae)
  • Added entry_in_new_thread allowing for the runtime to be started and managed in a different thread, making embedding of Tardy in applications easier. (9207187)
  • Added proper error handling with callbacks being handed a result type, allowing for errors to be standardized and captured directly without having to determine from integer types. (9d0b398)
  • Fixed a race condition that would sometimes occur within the aio.append during startup. (32b89f2)
  • Made io_uring flags conditional on kernel version. (a4144a3)

Full Changelog: v0.1.0...v0.2.0

v0.1.0

10 Nov 09:25
ae0970d
Compare
Choose a tag to compare

This is an initial release of Tardy. Supported OSes include Mac, Linux and Windows.

This provides:

  • Support for io_uring
  • Support for epoll
  • Support for kqueue
  • Support for POSIX Fallback busy_loop
  • Filesystem Operations (through runtime.fs)
  • Network Operations (through runtime.net)

Full Changelog: https://github.com/mookums/tardy/commits/v0.1.0