WebAssembly / WASI

WebAssembly System Interface
Other
4.72k stars 240 forks source link

Proposing a framework for Preview3 and WASI 1.0 #515

Open sunfishcode opened 1 year ago

sunfishcode commented 1 year ago

To provide a little more background on my roadmap agenda item, I'd like to propose a rough framework for a future Preview3, and beyond that, a WASI 1.0.

Preview2 is rebasing WASI on the wit IDL, which fixes a lot of long-standing open problems that WASI has. However, there is a major feature planned to be included in wit that isn't ready yet: integrated async. Specifically, this is the stream and future types.

For Preview2 we're developing temporary stream APIs that we can use in place of the stream keyword. However, a built in stream type would have many advantages, including idiomatic and efficient source language buildings for async streaming, and composition of async work across components.

So I propose we think of the big theme of Preview3 to be adding APIs that use the stream and future type. We can also add features and incorporate implementation feedback, but async would be the big story.

After that, I expect we'll have enough of a foundation in place that it makes sense for WASI to move out of "preview" mode and start conversations with the Wasm CG about producing a WASI 1.0 standard. Again, we could add new features and incorporate implementation feedback, but here, the big story would just be standardization.

How does this overall framework sound?

[edit: updated the wasi-io.wit.md link, thanks @ricochet for pointing that out!]

SamuraiCrow commented 1 year ago

Everything I've read here seems well thought out. I also appreciate that documentation has started to commence. Many thanks!

ricochet commented 1 year ago

For anyone following the stream API's link, it's under the wit folder https://github.com/WebAssembly/wasi-io/blob/main/wit/wasi-io.wit.md

64BitAsura commented 1 month ago

When we can expect wasi-http support websocket?