diff --git a/README.md b/README.md index 31a642ccc..fdb8d3825 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,23 @@ curl https://get.wasmer.io -sSfL | sh `wasmer` can execute both the standard binary format (`.wasm`) and the text format defined by the WebAssembly reference interpreter (`.wat`). -Once installed, you will be able to run any wasm module (_including Nginx!_): +Once installed, you will be able to run any WebAssembly files (_including Nginx, and Lua!_): ```sh +# Run Lua +wasmer run examples/lua.wasm + +# Run Nginx wasmer run examples/nginx/nginx.wasm -- -p examples/nginx -c nginx.conf ``` +## Code Structure + +Wasmer is structured into different directories: + +- [`src`](./src): code related to the wasmer excutable binary itself +- [`lib`](./lib): modularized libraries that Wasmer uses under the hood + ## Building & Running To build this project you will need Rust and Cargo. @@ -63,7 +74,6 @@ You can also run integration tests with: make integration-tests ``` - ## Roadmap Wasmer is an open project guided by strong principles, aiming to be modular, flexible and fast. It is open to the community to help set its direction. @@ -72,9 +82,9 @@ Below are some of the goals (written with order) of this project: - [x] It should be 100% compatible with the [WebAssembly Spectest](https://github.com/wasmerio/wasmer/tree/master/spectests) - [x] It should be fast _(partially achieved)_ -- [ ] Support Emscripten calls _(on the works)_ +- [x] Support Emscripten calls _(on the works)_ - [ ] Support Rust ABI calls - +- [ ] Support GO ABI calls ## Architecture diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 000000000..86879ca3d --- /dev/null +++ b/lib/README.md @@ -0,0 +1,32 @@ +# Wasmer Libraries + +Wasmer is modularized into different libraries, separated into three main sections: +* [Runtime](#Runtime) +* [Integrations](#Integrations) +* [Backends](#Backends) + +## Runtime + +The core of Wasmer is the runtime. +It provides the necessary abstractions on top of the WebAssembly specification. + +We separated the runtime into two main libraries: +* [runtime-core](./runtime-core/): The main implementation of the runtime +* [runtime](./runtime/): Easy-to-use wrappers on top of runtime-core + +## Integrations + +The integrations are separated implementations in top of our runtime, that let Wasmer run more WebAssembly files. + +Wasmer intends to support different integrations: +* [emscripten](./emscripten): it let us run emscripten-generated WebAssembly files, such as lua or Nginx. +* Go ABI: _we will work on this soon! Would you like to help us? 💪_ +* Blazor: _researching period, see [tracking issue](https://github.com/wasmerio/wasmer/issues/97)_ + + +## Backends + +The backends let Wasmer generate code from WebAssembly files, in a way that is abstracted from the +IR library itself. + +* [clif-backend](./clif-backend/): The integration of Wasmer with Cranelift