Transpiling WebAssembly modules into .NET assemblies

EN / День 1 / 17:30 / Зал 2

Wasm2cil can convert a WebAssembly module 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. The dependency on the WASI "system calls" is provided with a C# implementation of those calls in a supporting assembly.

This talk would include

  • an overview of WebAssembly and WASI;
  • deep dive into some contrasts between the Wasm instruction set and CIL;
  • discussion of implementing WASI with .NET;
  • wasm2cil architecture and how it works.

Technologies covered or mentioned will include WebAssembly (Wasm), WASI, Wasmtime, Mono.Cecil, CIL, .NET Core, Rust. In addition, wasm2cil itself is implemented with a mixture of F# and C#, but I do not plan to speak about F# issues.

The subject matter of this talk is rather advanced, so the target audience is experienced .NET developers, ideally with some previous understanding of CIL and the CLR.

Комментарий программного комитета:

Эрик Синк — один из ветеранов программирования. Среди его разработок — Spyglass, предтеча браузера Microsoft Exporer, а также система контроля версий SourceVault, появившаяся еще до гегемонии Git. В то время как многие программисты работают над трансляцией кода в Web Assembly, Эрик взялся за противоположную задачу — перевод модулей Web Assembly на платформу .NET. Как этого достичь и как использовать результаты достигнутого? Обо всем этом вы узнаете на докладе.