You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stripped down to the bare minimum. Every line of code has a purpose.
This repo is Mac only for now.
This builds on a minimal C++/C + libc to WASM template that I recommend to look at if you want to learn how the bare WASM stack works without the additional the complexity. Additional considerations to build llama2.c:
mmap is not part of the WASI standard but there's an emulation available on the wasi-sdk by passing the D_WASI_EMULATED_MMAN flag to the compiler and linking against wasi-emulated-mman library. For this we also need to link against clang_rt.builtins-wasm32 that the wasi-sdk distributes separatetly.
Setup
The command below downloads a wasi-sdk release bundle that contains the WASI headers, libraries, compiler (clang) and linker (wasm-ld)
./setup.sh
Usage
Compiles and links C++ code to WASM
./build.sh
Starts a local Web server so you can run the code. Open in your browser https://localhost:8080
/vendor/wasi.js is built from the runno wasi js runtime by running mpm run build. There are two small modifications on 9b9dc1f3142c that I might submit upstream:
The ability to pass a WebAssembly.Memory object to the runtime.
The ability to pass an object with JS-defined functions that can be invoked from native code.
I included a wasi.js.original file as a references for the differences (git diff wasi.js wasi.js.original)