good in the browser is what we want on the server › POSIX-like API to expose host environment › Host has full control how this access is implemented Portable Fast Language agnostic Secure
WASM outside of browser context (yet) › dotnet-wasi-sdk › Generate C entrypoint › Compile to WASI via clang › Limited functionality › Can’t import/export functions in C# › Write C code that does this
Still a single binary › Main goals: › Interact with WASM in a way that’s native to the host language › Cross-language composition of multiple components › Stage 1 proposal › Looks like the future direction of WASM
} interface guest { count-lines: func(x: string) -> s32 } default world line-counter { import imports: self.host export exports: self.guest } Implemented by host, imported by the component Exported by the component Definition of the component
Imagine we’re a platform for serverless function execution › Platform provided bindings › Update without impacting users › User only has to care about their business logic component
› Fire-and-forget logic › Very quickly spin up new environments › WASI is not going to kill containers (yet) › Docker probably better for longer-living services › New docker features allow running them side by side
the corner › Component model! › WASI implemented as components › Standardizing a set of cloud interfaces › Key-value › messaging › Blob store… › Microsoft has made no official commitment, but is watching closely
is built in it › Lots of fun stuff to build › .NET equivalents for existing tooling › Component implementations for Azure services › Experiments with WASI in real-world scenarios