From the WebAssembly website:
WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.
A good overview of the project: Sander Spies - Down the WebAssembly rabbit hole | ReasonConf 2018
Walkthrough articles:
What's left:
- Garbage Collector
- Tail calls
- Exceptions handling
Here are some documentations about WebAssembly.
A video to help you quickly understand WebAssembly: WebAssembly demystified by Jay Phelps
Resources:
If you want to deep dive here are some concepts you'll need to understand:
Semantics:
A small understanding of the OCaml compiler might be required.
Here are some good resources from Real World OCaml:
- Memory Representation of Values
- Understanding the Garbage Collector
- The Compiler Frontend: Parsing and Type Checking
- The Compiler Backend: Bytecode and Native code
You can find the resources from Sander Spies here.
This branch is the most up-to-date and starts implementing a garbage collector and is WIP.
If you want to start without GC implementation, here is the branch.
And to help you out getting started, there is a Docker repo.
There is a channel dedicated to wasm on the OCaml discord.
Special thanks to Sander Spies for his work on this project and for helping people onboarding and understanding it.