69 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
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
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
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
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
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
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
Andrew Kelley
c40fb96ca3 std.Io.Writer: fix writeSliceSwap
tried to be too clever, wrote bad code
2025-07-19 22:12:37 -07:00
Andrew Kelley
8489bab1f4 std.Io.Writer: add missing writeSliceSwap 2025-07-19 19:57:37 -07:00
Andrew Kelley
a288266f33 std.Io.Reader: remove aggressive assert from fill
with `.fixed("")` you should still be able to do `fill(1)` and have it
return error.EndOfStream.
2025-07-19 16:05:01 -07:00
John Benediktsson
e62e42f0d9
std.io.Writer: remove requirement of a 2-byte buffer for extern unions (#24489)
closes #24486
2025-07-17 16:42:53 +00:00
Andrew Kelley
5784500572 std.Io.Reader: fix readSliceShort with smaller buffer than Reader
closes #24443
2025-07-17 09:26:31 -07:00
Andrew Kelley
86699acbb9 std.Io.Reader: update OneByteReader usage to std.testing.Reader 2025-07-17 09:26:31 -07:00
John Benediktsson
6e86910e19
std.Io: Fix GenericReader.adaptToNewApi; add DeprecatedReader.adaptToNewApi (#24484) 2025-07-17 11:29:22 +00:00
Andrew Kelley
70f514f1ba std.Io.Reader: fix appendRemaining harder
ensure that it issues a stream call that includes the buffer to detect
the end when needed, but otherwise does not offer Reader buffer to
append directly to the list.
2025-07-16 17:20:03 -07:00
Andrew Kelley
73cfba4d0d std.Io.Writer: fix writeStruct 2025-07-16 17:20:03 -07:00
Andrew Kelley
e7a639967e std.Io.Reader: fix appendRemaining
it calls readVec which is a higher level function than was expected in
the previous implementation
2025-07-16 17:20:03 -07:00