HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
lalinsky
zio
Zig2025–2025
lalinsky / zio

zio

Async I/O framework for Zig

3Distinct people
6Mentions
0Explicit recommenders
701GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Async I/O framework for Zig

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day6 dated mentions

Observed mentions: 2025-10-12 14:41:09 UTC to 2025-11-01 16:58:35 UTC.

0122025-10-12 00:00:00 UTC to 2025-10-13 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsOct 122025-10-13 00:00:00 UTC to 2025-10-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-14 00:00:00 UTC to 2025-10-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-15 00:00:00 UTC to 2025-10-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-16 00:00:00 UTC to 2025-10-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-17 00:00:00 UTC to 2025-10-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-18 00:00:00 UTC to 2025-10-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-19 00:00:00 UTC to 2025-10-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-20 00:00:00 UTC to 2025-10-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-21 00:00:00 UTC to 2025-10-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-22 00:00:00 UTC to 2025-10-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsOct 222025-10-23 00:00:00 UTC to 2025-10-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-24 00:00:00 UTC to 2025-10-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-25 00:00:00 UTC to 2025-10-26 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-10-26 00:00:00 UTC to 2025-10-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-27 00:00:00 UTC to 2025-10-28 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-10-28 00:00:00 UTC to 2025-10-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-29 00:00:00 UTC to 2025-10-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-30 00:00:00 UTC to 2025-10-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-10-31 00:00:00 UTC to 2025-11-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-11-01 00:00:00 UTC to 2025-11-02 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 1

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 122025-10-12 00:00:00 UTC2025-10-13 00:00:00 UTC202
Oct 132025-10-13 00:00:00 UTC2025-10-14 00:00:00 UTC000
Oct 142025-10-14 00:00:00 UTC2025-10-15 00:00:00 UTC000
Oct 152025-10-15 00:00:00 UTC2025-10-16 00:00:00 UTC000
Oct 162025-10-16 00:00:00 UTC2025-10-17 00:00:00 UTC000
Oct 172025-10-17 00:00:00 UTC2025-10-18 00:00:00 UTC000
Oct 182025-10-18 00:00:00 UTC2025-10-19 00:00:00 UTC000
Oct 192025-10-19 00:00:00 UTC2025-10-20 00:00:00 UTC000
Oct 202025-10-20 00:00:00 UTC2025-10-21 00:00:00 UTC000
Oct 212025-10-21 00:00:00 UTC2025-10-22 00:00:00 UTC000
Oct 222025-10-22 00:00:00 UTC2025-10-23 00:00:00 UTC000
Oct 232025-10-23 00:00:00 UTC2025-10-24 00:00:00 UTC000
Oct 242025-10-24 00:00:00 UTC2025-10-25 00:00:00 UTC000
Oct 252025-10-25 00:00:00 UTC2025-10-26 00:00:00 UTC101
Oct 262025-10-26 00:00:00 UTC2025-10-27 00:00:00 UTC000
Oct 272025-10-27 00:00:00 UTC2025-10-28 00:00:00 UTC101
Oct 282025-10-28 00:00:00 UTC2025-10-29 00:00:00 UTC000
Oct 292025-10-29 00:00:00 UTC2025-10-30 00:00:00 UTC000
Oct 302025-10-30 00:00:00 UTC2025-10-31 00:00:00 UTC000
Oct 312025-10-31 00:00:00 UTC2025-11-01 00:00:00 UTC101
Nov 12025-11-01 00:00:00 UTC2025-11-02 00:00:00 UTC101

What Hacker News says

6 sources
> The Rust folks adopted async with callbacks Rust's async is not based on callbacks, it's based on polling. So really there are three ways to implement async: - The callback approach used by e.g. Node.js and Swift, where a function that may suspend accepts a callback as an argument, and invokes the callback once it is ready to make progress. The compiler transforms async/await code into continuation-passing style. - The stackful approach used by e.g. Go, libtask, and this; where a runtime switches between green threads when a task is ready to make progress. Simple and easy to implement, but introduces complexity around stack size. - Rust's polling approach: an async task is statically transformed into a state machine object that is polled by a runtime when it's ready to make progress. Each approach has its advantages and disadvantages. C
Read the rest
ontinuation-passing style doesn't require a runtime to manage tasks, but each call site must capture local variables into a closure, which tends to require a lot of heap allocation and copying (you could also use Rust's generic closures, but that would massively bloat code size and compile times because every suspending function must be specialized for each call site). So it's not really acceptable for applications looking for maximum performance and control over allocations. Stackful coroutines require managing stacks. Allocating large stacks is very expensive in terms of performance and memory usage; it won't scale to thousands or millions of tasks and largely negates the benefits of green threading. Allocating small stacks means you need the ability to dynamically resize stacks at runtime, which requires dynamic allocation and adds significant performance and complexity overhead if you want to make an FFI call from an asynchronous task (in Go, every function begins with a prologue to check if there is enough stack space and allocate more if needed; since foreign functions do not have this prologue, an FFI call requires switching to a sufficiently large stack). This project uses fixed-sized task stacks, customizable per-task but defaulting to 256K [1]. This default is several orders of mangitude larger than a typical task size in other green-threading runtimes, so to achieve large scale the programmer must manually manage the stack size on a per-task basis, and face stack overflows if they guess wrong (potentially only in rare/edge cases). Rust's "stackless" polling-based approach means the compiler knows statically exactly how much persistent storage a suspended task needs, so the application or runtime can allocate this storage up-front and never need to resize it; while a running task has a full OS thread stack available as scratch space and for FFI. It doesn't require dynamic memory allocation, but it imposes limits on things like recursion. Rust initially had stackful coroutines, but this was dropped in order to not require dynamic allocation and remove the FFI overhead. The async support in Zig's standard library, once it's complete, is supposed to let the application developer choose between stackful and stackless coroutines depending on the needs of the application. [1]: https://github.com/lalinsky/zio/blob/9e2153eed99a772225de9b2...
In How I turned Zig into my favorite language to write network programs in

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.