Skip to content

Document stream<T>, future<T>, and async func in WIT Reference#355

Open
ericgregory wants to merge 7 commits into
bytecodealliance:mainfrom
ericgregory:p3-wit-reference
Open

Document stream<T>, future<T>, and async func in WIT Reference#355
ericgregory wants to merge 7 commits into
bytecodealliance:mainfrom
ericgregory:p3-wit-reference

Conversation

@ericgregory

@ericgregory ericgregory commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Adds reference entries for the three WIT primitives that the Component Model added for WASI 0.3. Stacked on PR #352

Add a new design/async.md introducing the Canonical ABI primitives
(`async func`, `stream<T>`, `future<T>`) that the Component Model added
for the WASI P3 release. The page covers the sandwich problem (why
native async matters for composition), each primitive with a worked WIT
example, the stream-plus-future and write-direction-flip patterns, and a
tooling-support pointer.

Hook the page into Component Model Concepts as a new subsection after
Packages, and add the SUMMARY.md entry under that umbrella.

Signed-off-by: Eric Gregory <eric@cosmonic.com>
Add a new design/migrating-to-p3.md covering the conceptual P2 -> P3
mapping for component authors: a "Do you need to migrate?" framing, the
wasi:io-to-Canonical-ABI concept mapping table, three before/after WIT
patterns (stream-plus-future, write-direction flip, two-step calls
collapsed), short per-interface notes for wasi:io/http/sockets/
filesystem/cli/clocks/random, a tooling requirements table, and a
version-pinning callout for the current RC-to-0.3.0 transition. Hook
the page into the Understanding section after WIT Reference.

Signed-off-by: Eric Gregory <eric@cosmonic.com>
Refine language for clarity and consistency in the migration guide.
Apply content-ownership guidance by reframing design/async.md to
describe the Component Model primitives in P3 terms throughout, rather
than as a P2-to-P3 contrast that overlaps with wasi.dev's WASI P3 page.

- Drop the A→B→Host diagram and surrounding A/B/Host references.
- Drop P2 comparisons from the primitive descriptions and from the
  write-pattern code example.
- Rename 'Common patterns' → 'How the primitives work in WASI P3'.
- Replace 'Tooling support' (which duplicated wasmtime.md) with a
  brief 'Where to go next' pointer block.

In migrating-to-p3.md:

- Replace 'Interface notes' (40 lines of per-package detail) with
  'Interface highlights' (3 load-bearing changes + link to wasi.dev).
- Rewrite the WIT pattern openings with phrasing distinct from both
  the reframed async.md and wasi.dev/wasi-p3.
- Fix a broken intra-document anchor and a wasi:http resource count
  inconsistency (eight vs nine).

Signed-off-by: Eric Gregory <eric@cosmonic.com>
Per WASI maintainer guidance, refer to the WASI specifications as
"WASI 0.2" and "WASI 0.3" in prose, including page titles, section
headings, the migration guide's mapping table, and the new
component-model-concepts and SUMMARY entries. Filename and URL slugs
(migrating-to-p3.md, wasi-p3 in wasi.dev URLs) are unchanged.

Signed-off-by: Eric Gregory <eric@cosmonic.com>
The earlier WASI P2/P3 -> WASI 0.2/0.3 rename left several sentences
starting with or hinging on a bare "0.2" or "0.3", which reads
awkwardly. Prefix those with "WASI" so the version reads as a noun
phrase. The tooling-requirements table cells stay terse.

Signed-off-by: Eric Gregory <eric@cosmonic.com>
Extend the WIT Reference with the three primitives that the Component
Model added for WASI 0.3: stream<T> and future<T> as new built-in
types after Tuples, and async func as a new subsection of Functions.
Each entry covers the WIT syntax with worked examples, notes the
value-not-resource property of the new types, and cross-links to
design/async.md for the underlying motivation.

Signed-off-by: Eric Gregory <eric@cosmonic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant