Commit graph

34167 commits

Author SHA1 Message Date
Andrew Kelley
8bcc91c15e add std.testing.io 2025-07-20 10:40:26 -07:00
Andrew Kelley
b70f12fc40 std.Io: delete asyncParallel 2025-07-20 10:38:39 -07:00
Andrew Kelley
363d7deb8a std.Io: fix error handling and asyncParallel docs 2025-07-20 10:38:39 -07:00
Andrew Kelley
33b10abaf6 std.Io: add asyncConcurrent and asyncParallel 2025-07-20 10:38:39 -07:00
Andrew Kelley
384545acbc std.Io.EventLoop: add aarch64 support 2025-07-20 10:38:39 -07:00
Andrew Kelley
2db92a98e8 std.Io.ThreadPool: fix asyncDetached 2025-07-20 10:38:39 -07:00
Andrew Kelley
e95b26f1c6 std.Io: rename go to asyncDetached
it's a better name because it's more descriptive, not a reference, and
hints that it is less common than async
2025-07-20 10:38:39 -07:00
Andrew Kelley
38152c2d1c revert std.Thread.Pool for now
and move the Io impl to a separate file
2025-07-20 10:38:39 -07:00
Andrew Kelley
80d4655bb1 update to sync with master 2025-07-20 10:38:39 -07:00
Andrew Kelley
3f524ac5dc Io: update for new linked list API 2025-07-20 10:38:39 -07:00
Andrew Kelley
3178cf07f2 std.Io: remove @ptrCast workarounds
thanks to d53cc5e5b2
2025-07-20 10:38:39 -07:00
Andrew Kelley
13e30c4fd2 std.Io.EventLoop: implement select 2025-07-20 10:38:39 -07:00
Andrew Kelley
071607877d Io.EventLoop: select stub 2025-07-20 10:38:39 -07:00
Andrew Kelley
0f67ea4fa4 introduce Io.select and implement it in thread pool 2025-07-20 10:38:39 -07:00
Jacob Young
7b5886118d Io.Condition: implement full API 2025-07-20 10:38:39 -07:00
Jacob Young
fdf15fae97 EventLoop: implement detached fibers 2025-07-20 10:38:39 -07:00
Andrew Kelley
f2b24479ee EventLoop: let the allocator do its job
to bucket and free fiber allocations
2025-07-20 10:38:39 -07:00
Jacob Young
9a652cc42a EventLoop: fix std.Io.Condition implementation
1. a fiber can't put itself on a queue that allows it to be rescheduled
 2. allow the idle fiber to unlock a mutex held by another fiber by
    ignoring reschedule requests originating from the idle fiber
2025-07-20 10:38:39 -07:00
Jacob Young
f0919a4cea EventLoop: revert incorrect optimization 2025-07-20 10:38:39 -07:00
Andrew Kelley
fa937d686d EventLoop: remove broken mechanism for making deinit block on detached 2025-07-20 10:38:39 -07:00
Andrew Kelley
74969d1c40 std.Io.Condition: change primitive to support only one
and no timer
2025-07-20 10:38:39 -07:00
Andrew Kelley
59270425aa EventLoop: take DetachedClosure into account when allocating 2025-07-20 10:38:39 -07:00
Andrew Kelley
5aa3d1425e EventLoop: implement detached async
data races on deinit tho
2025-07-20 10:38:39 -07:00
Jacob Young
f3553049cb Io: implement faster mutex 2025-07-20 10:38:39 -07:00
Andrew Kelley
ebf92042e3 std.Io: add detached async 2025-07-20 10:38:39 -07:00
Andrew Kelley
a7790bd32e implement Mutex, Condition, and Queue 2025-07-20 10:38:38 -07:00
Jacob Young
012ef81b8b Io: implement sleep and fix cancel bugs 2025-07-20 10:38:38 -07:00
Jacob Young
1fbc251ccd EventLoop: implement thread-local queues and cancellation 2025-07-20 10:38:38 -07:00
Andrew Kelley
988f58341b std.Io: introduce cancellation 2025-07-20 10:38:38 -07:00
Andrew Kelley
dab5dd286f better API for Io.async 2025-07-20 10:38:38 -07:00
Jacob Young
90cc7f4adf EventLoop: fix futex usage
How silly of me to forget that the kernel doesn't implement its own API.
The scheduling is not great, but at least doesn't deadlock or hammer.
2025-07-20 10:38:38 -07:00
Jacob Young
4f214b97ec EventLoop: get file operations working
Something is horribly wrong with scheduling, as can be seen in the
debug output, but at least it somehow manages to exit cleanly...
2025-07-20 10:38:38 -07:00
Andrew Kelley
50724cf1c3 WIP 2025-07-20 10:38:38 -07:00
Andrew Kelley
d4ff3745d5 start adding fs functions to std.Io 2025-07-20 10:38:38 -07:00
Andrew Kelley
db499b82b5 free freeing wrong amount in thread pool impl 2025-07-20 10:38:38 -07:00
Jacob Young
1216e807ac EventLoop: move context after the async closure
This avoids needing to store more sizes and alignments.  Only the result
alignment needs to be stored, because `Fiber` is at a fixed zero offset.
2025-07-20 10:38:38 -07:00
Jacob Young
048a40dac7 EventLoop: fix incorrect alignment panic
When the previous fiber did not request to be registered as an awaiter,
it may not have actually been a full blown `Fiber`, so only create the
`Fiber` pointer when needed.
2025-07-20 10:38:38 -07:00
Andrew Kelley
1d7a69cb7d update threaded fibers impl to actually storing args
sorry, something still not working correctly
2025-07-20 10:38:38 -07:00
Andrew Kelley
ad3c5f0292 fix context passing in threaded Io impl 2025-07-20 10:38:38 -07:00
Jacob Young
0c1f5dbd64 EventLoop: implement main idle fiber 2025-07-20 10:38:38 -07:00
Jacob Young
c7b406f2ad EventLoop: add threads 2025-07-20 10:38:38 -07:00
Jacob Young
03bb08d337 EventLoop: rewrite context switching 2025-07-20 10:38:38 -07:00
Jacob Young
93054125fe EventLoop: prepare for threading 2025-07-20 10:38:38 -07:00
Andrew Kelley
07ee4977da demo: single-threaded green threads implementation 2025-07-20 10:38:38 -07:00
Andrew Kelley
6ae18714b7 make thread pool satisfy async/await interface 2025-07-20 10:38:38 -07:00
Andrew Kelley
5b2f54fc80 introduce std.Io interface
which is planned to have all I/O operations in the interface, but for
now has only async and await.
2025-07-20 10:38:38 -07:00
Kendall Condon
f657767b60 langref: upgrade grammar.y for asm clobber change 2025-07-20 19:37:41 +02:00
antlilja
14bb533203 use stdout_buffer instead of stdio_buffer in main.zig 2025-07-20 18:27:01 +02:00
Andrew Kelley
8373788c4c
Merge pull request #24488 from ziglang/more
std.zig: finish updating to new I/O API
2025-07-20 11:24:41 +02:00
Marc Tiehuis
4780cc50cf std.Io.Writer: support alignment for {t} specifier 2025-07-20 10:30:17 +02:00