wasmer-compiler
This crate is the base for Compiler implementations.
It performs the translation from a Wasm module into a basic
ModuleInfo
, but leaves the Wasm function bytecode translation to the
compiler implementor.
Here are some of the Compilers provided by Wasmer:
To create a compiler, one needs to implement two traits:
CompilerConfig
, that configures and creates a new compiler,Compiler
, the compiler itself that will compile a module.```rust
/// The compiler configuration options.
pub trait CompilerConfig {
/// Gets the custom compiler config
fn compiler(&self) -> Box
/// An implementation of a compiler from parsed WebAssembly module to compiled native code.
pub trait Compiler {
/// Compiles a parsed module.
///
/// It returns the [Compilation
] or a [CompileError
].
fn compilemodule<'data, 'module>(
&self,
target: &Target,
compileinfo: &'module mut CompileModuleInfo,
moduletranslation: &ModuleTranslationState,
// The list of function bodies
functionbody_inputs: PrimaryMap
This project borrowed some of the code strucutre from the
[cranelift-wasm
] crate, however it's been adapted to not depend on
any specific IR and be abstract of any compiler.
Please check [Wasmer ATTRIBUTIONS
] to further see licenses and other
attributions of the project.