ericsink / wasm2cil

A "compiler" that can take a WebAssembly/WASI module and convert it to a .NET assembly

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wasm2cil

This is a .NET compiler for WebAssembly modules, including support for WASI.

Specifically, it can take a WebAssembly module and translate it into a .NET assembly on disk.

The resulting DLL is not interpreted -- it contains the same functions as the WebAssembly module, translated from Wasm instructions to CIL instructions.

This is designed to be used with Clang 8 and wasi-sysroot. In that sense, this provides a way to compile C/C++ for .NET, using Wasm as a halfway point. Like an alternative to pinvoke.

(Rust should hopefully work too, but I haven't tried that yet.)

All of this is very much a work in progress.

But the current status is that some basic things do work. Working test apps in this repo include a small ray tracer and a basic port of SQLite. The latter can read and write SQLite database files that seem to be fully interoperable with "regular" SQLite builds.

Still, I suggest you not try using this for anything serious yet.

The subdirectories of this repo have README files with a bit more info.

See my blog entry for more information.

About

A "compiler" that can take a WebAssembly/WASI module and convert it to a .NET assembly

License:Apache License 2.0


Languages

Language:C 96.2%Language:F# 3.4%Language:C# 0.4%Language:Shell 0.0%Language:Rust 0.0%