From b4ec78906cdb2a13b08f94690fb270726bbdb819 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 21 Nov 2025 08:49:26 -0800 Subject: [PATCH] std.Io: update async documentation to reflect the guarantee --- lib/std/Io.zig | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/std/Io.zig b/lib/std/Io.zig index 40f213f3de..8c552ad8fe 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -580,6 +580,9 @@ pub const VTable = struct { /// If it returns `null` it means `result` has been already populated and /// `await` will be a no-op. /// + /// When this function returns non-null, the implementation guarantees that + /// a unit of concurrency has been assigned to the returned task. + /// /// Thread-safe. async: *const fn ( /// Corresponds to `Io.userdata`. @@ -1024,6 +1027,10 @@ pub const Group = struct { /// /// `function` *may* be called immediately, before `async` returns. /// + /// When this function returns, it is guaranteed that `function` has + /// already been called and completed, or it has successfully been assigned + /// a unit of concurrency. + /// /// After this is called, `wait` or `cancel` must be called before the /// group is deinitialized. /// @@ -1094,6 +1101,10 @@ pub fn Select(comptime U: type) type { /// /// `function` *may* be called immediately, before `async` returns. /// + /// When this function returns, it is guaranteed that `function` has + /// already been called and completed, or it has successfully been + /// assigned a unit of concurrency. + /// /// After this is called, `wait` or `cancel` must be called before the /// select is deinitialized. /// @@ -1524,8 +1535,11 @@ pub fn Queue(Elem: type) type { /// not guaranteed to be available until `await` is called. /// /// `function` *may* be called immediately, before `async` returns. This has -/// weaker guarantees than `concurrent`, making more portable and -/// reusable. +/// weaker guarantees than `concurrent`, making more portable and reusable. +/// +/// When this function returns, it is guaranteed that `function` has already +/// been called and completed, or it has successfully been assigned a unit of +/// concurrency. /// /// See also: /// * `Group`