2019-01-22 19:34:36 +00:00
# Wasmer Libraries
Wasmer is modularized into different libraries, separated into three main sections:
2019-01-22 20:23:53 +00:00
2019-02-20 00:01:44 +00:00
- [Runtime ](#runtime )
- [Integrations ](#integrations )
- [Backends ](#backends )
2019-01-22 19:34:36 +00:00
## Runtime
2019-01-22 20:23:53 +00:00
The core of Wasmer is the runtime, which provides the necessary
2019-02-20 00:01:44 +00:00
abstractions to create a good user experience when embedding.
2019-01-22 20:23:53 +00:00
The runtime is divided into two main libraries:
2019-01-22 19:34:36 +00:00
2019-01-22 20:23:53 +00:00
- [runtime-core ](./runtime-core/ ): The main implementation of the runtime.
2019-02-20 00:01:44 +00:00
- [runtime ](./runtime/ ): Easy-to-use API on top of `runtime-core` .
2019-01-22 19:34:36 +00:00
## Integrations
2019-02-20 00:01:44 +00:00
The integration builds on the Wasmer runtime and allow us to run WebAssembly files compiled for different environments.
2019-01-22 19:34:36 +00:00
Wasmer intends to support different integrations:
2019-04-11 06:14:29 +00:00
- [WASI ](./wasi ): run WebAssembly files with the [WASI ABI ](https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ ).
- [Emscripten ](./emscripten ): run Emscripten-generated WebAssembly files, such as [Lua ](../examples/lua.wasm ) or [nginx ](../examples/nginx/nginx.wasm ).
2020-02-16 20:48:20 +00:00
- **Your own ABI**: Do you want to create your own ABI? Here's a [repo showcasing how ](https://github.com/wasmerio/wasmer-rust-customabi-example )!
2019-01-22 20:23:53 +00:00
- Go ABI: _we will work on this soon! Want to give us a hand? ✋_
2019-02-20 00:01:44 +00:00
- Blazor: _research period, see [tracking issue](https://github.com/wasmerio/wasmer/issues/97)_
2019-01-22 19:34:36 +00:00
## Backends
2019-01-22 20:23:53 +00:00
The Wasmer [runtime ](./runtime ) is designed to support multiple compiler backends, allowing the user
2019-02-20 00:01:44 +00:00
to tune the codegen properties (compile speed, performance, etc) to best fit their use case.
2019-01-22 20:23:53 +00:00
2019-03-08 04:39:44 +00:00
Currently, we support multiple backends for compiling WebAssembly to machine code:
2019-01-22 19:34:36 +00:00
2019-04-11 19:44:03 +00:00
- [singlepass-backend ](./singlepass-backend/ ): Single pass backend - super fast compilation, slower runtime speed
2019-03-22 04:12:01 +00:00
- [clif-backend ](./clif-backend/ ): Cranelift backend - slower compilation, normal runtime speed
- [llvm-backend ](./llvm-backend/ ): LLVM backend - slow compilation, native runtime speed