mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-16 17:18:57 +00:00
2250: Use rkyv for JIT Engine r=syrusakbary a=syrusakbary Since we are going to switch serialization methods, the new one doesn’t have a slowdown if we read the data directly. Thus, we can always operate with processed frame infos rather than creating a lazy structure that will be deserialized when needed. Try it: ```shell git clone https://github.com/wasmerio/wasmer.git -b universal-compiled-info cd wasmer make build-wasmer ./target/release/wasmer run lib/c-api/tests/assets/qjs.wasm --disable-cache -- -h ``` Co-authored-by: Syrus Akbary <me@syrusakbary.com>
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:
How to create a compiler
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.
/// The compiler configuration options.
pub trait CompilerConfig {
/// Gets the custom compiler config
fn compiler(&self) -> Box<dyn Compiler>;
}
/// 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 compile_module<'data, 'module>(
&self,
target: &Target,
compile_info: &'module CompileModuleInfo,
module_translation: &ModuleTranslationState,
// The list of function bodies
function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>,
) -> Result<Compilation, CompileError>;
}
Acknowledgments
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.