Description
This follows the footstep of #509 and a few discussions in WASI subgroup meetings, we want to create a World for all the wasi-cloud proposals and name it as wasi-cloud-core
. This includes
- wasi-keyvalue
- wasi-messaging
- wasi-http
- wasi-runtime-config
- wasi-distributed-lock-service
- wasi-sql
- wasi-blob-store
Currently, progress on the above proposals varies in terms of completeness. The proposal specifications for wasi-keyvalue
, wasi-messaging
, wasi-http
, wasi-sql
, and wasi-blob-store
are more fully formed. In these proposals, some of them are not updated with the WASI preview 2 syntax. By the end of Spring, we plan to add basic proposal specifications for the remaining wasi-cloud proposals and make sure all of the proposal specifications are aligned with the WASI preview 2 syntax. In addition, we want to validate all the WIT files using automated CIs and wasm-tools
, and document any breaks and changes to the specifciation in a change log.
To elaborate on aligning the syntax of WIT with that of WASI preview 2, we want to use pseudo-stream/future/resource types, and to continue to align with future versions of WASI, as described in #515.
Each of these proposals have its own proposed WIT interfaces and worlds, but we raise this issue to propose a wasi-cloud-core
World that has a similar structure to the following:
default world wasi-cloud-core {
import wasi-keyvalue: wasi-keyvalue
import wasi-blob-store: wasi-blob-store
import wasi-sql: wasi-sql
import wasi-messaging: wasi-messaging
import wasi-runtime-config: wasi-runtime-config
import wasi-distributed-locking: wasi-distributed-lock-service
import default-upstream-HTTP: wasi-http.outgoing-handler
export HTTP: wasi-http.incoming-handler
}
This is just a sketch of the proposed world, and much remains unknown to what it means to import a wasi-keyvalue
world inside of another world, as imports and exports of a World only allow WIT interfaces. We will also explore the uses of WIT templates in each proposal to help us move runtime implementation to static time implementations.
A note on wasi-cloud-core
overall scope
It is not meant to cover 100% of the features that distribtued application expecs, but it focuses on the 80% of the problem space with the assumption that most apps will fall into this scope. The API designs for these wasi-cloud proposals aggregate the common features across multiple providers. An example would be that wasi-keyvalue provides readwrite
APIs which is the lowerest common dominator in all systems and is designed for rapid development expeirence.