Remove wasmer_engine_universal{,_artifact} and merge into wasmer_compiler

This commit is contained in:
Manos Pitsidianakis
2022-06-13 23:59:43 +03:00
parent 9ebe1c2e3a
commit 086205bfcc
74 changed files with 171 additions and 370 deletions

42
Cargo.lock generated
View File

@ -2794,7 +2794,6 @@ dependencies = [
"wasmer-compiler-llvm", "wasmer-compiler-llvm",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-derive", "wasmer-derive",
"wasmer-engine-universal",
"wasmer-types", "wasmer-types",
"wasmer-vm", "wasmer-vm",
"wasmparser 0.83.0", "wasmparser 0.83.0",
@ -2810,10 +2809,10 @@ dependencies = [
"libfuzzer-sys", "libfuzzer-sys",
"wasm-smith", "wasm-smith",
"wasmer", "wasmer",
"wasmer-compiler",
"wasmer-compiler-cranelift", "wasmer-compiler-cranelift",
"wasmer-compiler-llvm", "wasmer-compiler-llvm",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-engine-universal",
"wasmer-middlewares", "wasmer-middlewares",
"wasmprinter", "wasmprinter",
] ]
@ -2839,7 +2838,6 @@ dependencies = [
"wasmer-compiler-llvm", "wasmer-compiler-llvm",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-emscripten", "wasmer-emscripten",
"wasmer-engine-universal",
"wasmer-middlewares", "wasmer-middlewares",
"wasmer-types", "wasmer-types",
"wasmer-wasi", "wasmer-wasi",
@ -2856,8 +2854,8 @@ dependencies = [
"tempfile", "tempfile",
"thiserror", "thiserror",
"wasmer", "wasmer",
"wasmer-compiler",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-engine-universal",
] ]
[[package]] [[package]]
@ -2882,7 +2880,6 @@ dependencies = [
"wasmer-compiler-llvm", "wasmer-compiler-llvm",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-emscripten", "wasmer-emscripten",
"wasmer-engine-universal",
"wasmer-types", "wasmer-types",
"wasmer-vfs", "wasmer-vfs",
"wasmer-vm", "wasmer-vm",
@ -2896,11 +2893,15 @@ name = "wasmer-compiler"
version = "2.3.0" version = "2.3.0"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"cfg-if 1.0.0",
"enum-iterator",
"enumset", "enumset",
"hashbrown 0.11.2", "hashbrown 0.11.2",
"lazy_static", "lazy_static",
"leb128",
"memmap2", "memmap2",
"more-asserts", "more-asserts",
"region",
"rkyv", "rkyv",
"rustc-demangle", "rustc-demangle",
"serde", "serde",
@ -2911,6 +2912,7 @@ dependencies = [
"wasmer-types", "wasmer-types",
"wasmer-vm", "wasmer-vm",
"wasmparser 0.83.0", "wasmparser 0.83.0",
"winapi",
] ]
[[package]] [[package]]
@ -2931,7 +2933,6 @@ dependencies = [
"wasmer-compiler", "wasmer-compiler",
"wasmer-compiler-cranelift", "wasmer-compiler-cranelift",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-engine-universal-artifact",
"wasmer-types", "wasmer-types",
] ]
@ -3019,34 +3020,6 @@ dependencies = [
"wasmer", "wasmer",
] ]
[[package]]
name = "wasmer-engine-universal"
version = "2.3.0"
dependencies = [
"cfg-if 1.0.0",
"enumset",
"leb128",
"region",
"rkyv",
"wasmer-compiler",
"wasmer-engine-universal-artifact",
"wasmer-types",
"wasmer-vm",
"winapi",
]
[[package]]
name = "wasmer-engine-universal-artifact"
version = "2.3.0"
dependencies = [
"enum-iterator",
"enumset",
"rkyv",
"thiserror",
"wasmer-compiler",
"wasmer-types",
]
[[package]] [[package]]
name = "wasmer-integration-tests-cli" name = "wasmer-integration-tests-cli"
version = "2.3.0" version = "2.3.0"
@ -3256,7 +3229,6 @@ dependencies = [
"wasmer-compiler-llvm", "wasmer-compiler-llvm",
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
"wasmer-emscripten", "wasmer-emscripten",
"wasmer-engine-universal",
"wasmer-middlewares", "wasmer-middlewares",
"wasmer-types", "wasmer-types",
"wasmer-wasi", "wasmer-wasi",

View File

@ -11,12 +11,11 @@ autoexamples = false
[dependencies] [dependencies]
wasmer = { version = "=2.3.0", path = "lib/api", default-features = false } wasmer = { version = "=2.3.0", path = "lib/api", default-features = false }
wasmer-compiler = { version = "=2.3.0", path = "lib/compiler" } wasmer-compiler = { version = "=2.3.0", path = "lib/compiler", features = ["universal_engine"] }
wasmer-compiler-cranelift = { version = "=2.3.0", path = "lib/compiler-cranelift", optional = true } wasmer-compiler-cranelift = { version = "=2.3.0", path = "lib/compiler-cranelift", optional = true }
wasmer-compiler-singlepass = { version = "=2.3.0", path = "lib/compiler-singlepass", optional = true } wasmer-compiler-singlepass = { version = "=2.3.0", path = "lib/compiler-singlepass", optional = true }
wasmer-compiler-llvm = { version = "=2.3.0", path = "lib/compiler-llvm", optional = true } wasmer-compiler-llvm = { version = "=2.3.0", path = "lib/compiler-llvm", optional = true }
wasmer-emscripten = { version = "=2.3.0", path = "lib/emscripten", optional = true } wasmer-emscripten = { version = "=2.3.0", path = "lib/emscripten", optional = true }
wasmer-engine-universal = { version = "=2.3.0", path = "lib/engine-universal", optional = true }
wasmer-wasi = { version = "=2.3.0", path = "lib/wasi", optional = true } wasmer-wasi = { version = "=2.3.0", path = "lib/wasi", optional = true }
wasmer-wast = { version = "=2.3.0", path = "tests/lib/wast", optional = true } wasmer-wast = { version = "=2.3.0", path = "tests/lib/wast", optional = true }
wasi-test-generator = { version = "=2.3.0", path = "tests/wasi-wast", optional = true } wasi-test-generator = { version = "=2.3.0", path = "tests/wasi-wast", optional = true }
@ -38,7 +37,6 @@ members = [
"lib/compiler-llvm", "lib/compiler-llvm",
"lib/derive", "lib/derive",
"lib/emscripten", "lib/emscripten",
"lib/engine-universal",
"lib/object", "lib/object",
"lib/vfs", "lib/vfs",
"lib/vnet", "lib/vnet",
@ -83,16 +81,14 @@ tracing-subscriber = { version = "0.3", default-features = false, features = ["e
default = [ default = [
"wat", "wat",
"wast", "wast",
"universal",
"cache", "cache",
"wasi", "wasi",
"engine",
"emscripten", "emscripten",
"middlewares", "middlewares",
] ]
engine = [] engine = ["universal"]
universal = [ universal = []
"wasmer-engine-universal",
]
cache = ["wasmer-cache"] cache = ["wasmer-cache"]
wast = ["wasmer-wast"] wast = ["wasmer-wast"]
wasi = ["wasmer-wasi"] wasi = ["wasmer-wasi"]
@ -101,7 +97,6 @@ wat = ["wasmer/wat"]
compiler = [ compiler = [
"wasmer/compiler", "wasmer/compiler",
"wasmer-compiler/translator", "wasmer-compiler/translator",
"wasmer-engine-universal/compiler",
] ]
singlepass = [ singlepass = [
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",
@ -129,7 +124,6 @@ test-llvm = [
] ]
test-universal = [ test-universal = [
"universal",
"test-generator/test-universal", "test-generator/test-universal",
] ]

View File

@ -11,8 +11,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -11,8 +11,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_llvm::LLVM; use wasmer_compiler_llvm::LLVM;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -11,8 +11,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_singlepass::Singlepass; use wasmer_compiler_singlepass::Singlepass;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -17,8 +17,8 @@
use anyhow::bail; use anyhow::bail;
use std::fmt; use std::fmt;
use wasmer::{imports, wat2wasm, Function, Instance, Module, Store, TypedFunction}; use wasmer::{imports, wat2wasm, Function, Instance, Module, Store, TypedFunction};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
// First we need to create an error type that we'll use to signal the end of execution. // First we need to create an error type that we'll use to signal the end of execution.
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]

View File

@ -20,9 +20,9 @@
use std::str::FromStr; use std::str::FromStr;
use wasmer::{wat2wasm, Module, RuntimeError, Store}; use wasmer::{wat2wasm, Module, RuntimeError, Store};
use wasmer_compiler::Universal;
use wasmer_compiler::{CpuFeature, Target, Triple}; use wasmer_compiler::{CpuFeature, Target, Triple};
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -51,8 +51,8 @@ use wasmer::Instance;
use wasmer::Module; use wasmer::Module;
use wasmer::Store; use wasmer::Store;
use wasmer::Value; use wasmer::Value;
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// First step, let's compile the Wasm module and serialize it. // First step, let's compile the Wasm module and serialize it.

View File

@ -1,6 +1,6 @@
//! Defining an engine in Wasmer is one of the fundamental steps. //! Defining an engine in Wasmer is one of the fundamental steps.
//! //!
//! This example illustrates how to use the `wasmer_engine_universal`, //! This example illustrates how to use the `wasmer_compiler`,
//! aka the Universal engine. An engine applies roughly 2 steps: //! aka the Universal engine. An engine applies roughly 2 steps:
//! //!
//! 1. It compiles the Wasm module bytes to executable code, through //! 1. It compiles the Wasm module bytes to executable code, through
@ -19,8 +19,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.
@ -47,7 +47,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Creating Universal engine..."); println!("Creating Universal engine...");
// Define the engine that will drive everything. // Define the engine that will drive everything.
// //
// In this case, the engine is `wasmer_engine_universal` which roughly // In this case, the engine is `wasmer_compiler` which roughly
// means that the executable code will live in memory. // means that the executable code will live in memory.
let engine = Universal::new(compiler_config).engine(); let engine = Universal::new(compiler_config).engine();

View File

@ -14,8 +14,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store}; use wasmer::{imports, wat2wasm, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -18,8 +18,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -16,8 +16,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Mutability, Store, Type, Value}; use wasmer::{imports, wat2wasm, Instance, Module, Mutability, Store, Type, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -12,8 +12,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store, WasmPtr}; use wasmer::{imports, wat2wasm, Instance, Module, Store, WasmPtr};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -11,8 +11,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Features, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Features, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> anyhow::Result<()> { fn main() -> anyhow::Result<()> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -7,8 +7,8 @@
//! ``` //! ```
use wasmer::{imports, wat2wasm, Function, Instance, Module, Store, TypedFunction}; use wasmer::{imports, wat2wasm, Function, Instance, Module, Store, TypedFunction};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> anyhow::Result<()> { fn main() -> anyhow::Result<()> {
// First we create a simple Wasm program to use with Wasmer. // First we create a simple Wasm program to use with Wasmer.

View File

@ -19,8 +19,8 @@ use wasmer::{
imports, wat2wasm, Function, FunctionType, Global, Instance, Memory, Module, Store, Table, imports, wat2wasm, Function, FunctionType, Global, Instance, Memory, Module, Store, Table,
Type, Value, Type, Value,
}; };
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module. // Let's declare the Wasm module.

View File

@ -18,8 +18,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Function, FunctionType, Instance, Module, Store, Type, Value}; use wasmer::{imports, wat2wasm, Function, FunctionType, Instance, Module, Store, Type, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -21,8 +21,8 @@
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use wasmer::{imports, wat2wasm, Function, Instance, Module, Store, WasmerEnv}; use wasmer::{imports, wat2wasm, Function, Instance, Module, Store, WasmerEnv};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -16,8 +16,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Global, Instance, Module, Store, Value}; use wasmer::{imports, wat2wasm, Global, Instance, Module, Store, Value};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module with the text representation. // Let's declare the Wasm module with the text representation.

View File

@ -15,8 +15,8 @@
//! Ready? //! Ready?
use wasmer::{imports, wat2wasm, Instance, Module, Store}; use wasmer::{imports, wat2wasm, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// Let's declare the Wasm module. // Let's declare the Wasm module.

View File

@ -16,8 +16,8 @@
use std::mem; use std::mem;
use wasmer::{imports, wat2wasm, Bytes, Instance, Module, Pages, Store, TypedFunction}; use wasmer::{imports, wat2wasm, Bytes, Instance, Module, Pages, Store, TypedFunction};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
// this example is a work in progress: // this example is a work in progress:
// TODO: clean it up and comment it https://github.com/wasmerio/wasmer/issues/1749 // TODO: clean it up and comment it https://github.com/wasmerio/wasmer/issues/1749

View File

@ -19,8 +19,8 @@ use std::sync::Arc;
use wasmer::wasmparser::Operator; use wasmer::wasmparser::Operator;
use wasmer::CompilerConfig; use wasmer::CompilerConfig;
use wasmer::{imports, wat2wasm, Instance, Module, Store}; use wasmer::{imports, wat2wasm, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
use wasmer_middlewares::{ use wasmer_middlewares::{
metering::{get_remaining_points, set_remaining_points, MeteringPoints}, metering::{get_remaining_points, set_remaining_points, MeteringPoints},
Metering, Metering,

View File

@ -1,8 +1,8 @@
use wasmer::{ use wasmer::{
imports, wat2wasm, Function, Instance, Module, Store, TableType, Type, TypedFunction, Value, imports, wat2wasm, Function, Instance, Module, Store, TableType, Type, TypedFunction, Value,
}; };
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
/// A function we'll call through a table. /// A function we'll call through a table.
fn host_callback(arg1: i32, arg2: i32) -> i32 { fn host_callback(arg1: i32, arg2: i32) -> i32 {

View File

@ -7,8 +7,8 @@ use wasmer::{
wat2wasm, BaseTunables, Instance, Memory, MemoryType, Module, Pages, Store, TableType, Target, wat2wasm, BaseTunables, Instance, Memory, MemoryType, Module, Pages, Store, TableType, Target,
Tunables, Tunables,
}; };
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
/// A custom tunables that allows you to set a memory limit. /// A custom tunables that allows you to set a memory limit.
/// ///

View File

@ -16,8 +16,8 @@
//! Ready? //! Ready?
use wasmer::{Instance, Module, Store}; use wasmer::{Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
use wasmer_wasi::WasiState; use wasmer_wasi::WasiState;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {

View File

@ -13,8 +13,8 @@
use std::io::{Read, Write}; use std::io::{Read, Write};
use wasmer::{Instance, Module, Store}; use wasmer::{Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
use wasmer_wasi::{Pipe, WasiState}; use wasmer_wasi::{Pipe, WasiState};
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {

View File

@ -16,7 +16,7 @@ wasmer = { path = "../lib/api" }
wasmer-compiler-cranelift = { path = "../lib/compiler-cranelift", optional = true } wasmer-compiler-cranelift = { path = "../lib/compiler-cranelift", optional = true }
wasmer-compiler-llvm = { path = "../lib/compiler-llvm", optional = true } wasmer-compiler-llvm = { path = "../lib/compiler-llvm", optional = true }
wasmer-compiler-singlepass = { path = "../lib/compiler-singlepass", optional = true } wasmer-compiler-singlepass = { path = "../lib/compiler-singlepass", optional = true }
wasmer-engine-universal = { path = "../lib/engine-universal", optional = true } wasmer-compiler = { path = "../lib/compiler", optional = true }
wasmer-middlewares = { path = "../lib/middlewares" } wasmer-middlewares = { path = "../lib/middlewares" }
wasmprinter = "0.2" wasmprinter = "0.2"
@ -24,7 +24,7 @@ wasmprinter = "0.2"
cranelift = [ "wasmer-compiler-cranelift" ] cranelift = [ "wasmer-compiler-cranelift" ]
llvm = [ "wasmer-compiler-llvm" ] llvm = [ "wasmer-compiler-llvm" ]
singlepass = [ "wasmer-compiler-singlepass" ] singlepass = [ "wasmer-compiler-singlepass" ]
universal = [ "wasmer-engine-universal" ] universal = [ "wasmer-compiler" ]
[[bin]] [[bin]]
name = "equivalence_universal" name = "equivalence_universal"

View File

@ -3,10 +3,10 @@
use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target}; use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target};
use wasm_smith::{Config, ConfiguredModule}; use wasm_smith::{Config, ConfiguredModule};
use wasmer::{CompilerConfig, Engine, Module, Store}; use wasmer::{CompilerConfig, Engine, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_compiler_llvm::LLVM; use wasmer_compiler_llvm::LLVM;
use wasmer_compiler_singlepass::Singlepass; use wasmer_compiler_singlepass::Singlepass;
use wasmer_engine_universal::Universal;
#[derive(Arbitrary, Debug, Default, Copy, Clone)] #[derive(Arbitrary, Debug, Default, Copy, Clone)]
struct NoImportsConfig; struct NoImportsConfig;

View File

@ -5,13 +5,13 @@ use anyhow::Result;
use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target}; use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target};
use wasm_smith::{Config, ConfiguredModule}; use wasm_smith::{Config, ConfiguredModule};
use wasmer::{imports, CompilerConfig, Instance, Module, Store, Val}; use wasmer::{imports, CompilerConfig, Instance, Module, Store, Val};
use wasmer_compiler::Universal;
#[cfg(feature = "cranelift")] #[cfg(feature = "cranelift")]
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
#[cfg(feature = "llvm")] #[cfg(feature = "llvm")]
use wasmer_compiler_llvm::LLVM; use wasmer_compiler_llvm::LLVM;
#[cfg(feature = "singlepass")] #[cfg(feature = "singlepass")]
use wasmer_compiler_singlepass::Singlepass; use wasmer_compiler_singlepass::Singlepass;
use wasmer_engine_universal::Universal;
#[derive(Arbitrary, Debug, Default, Copy, Clone)] #[derive(Arbitrary, Debug, Default, Copy, Clone)]
struct ExportedFunctionConfig; struct ExportedFunctionConfig;

View File

@ -5,8 +5,8 @@ use std::sync::Arc;
use wasm_smith::{Config, ConfiguredModule}; use wasm_smith::{Config, ConfiguredModule};
use wasmer::wasmparser::Operator; use wasmer::wasmparser::Operator;
use wasmer::{imports, CompilerConfig, Instance, Module, Store}; use wasmer::{imports, CompilerConfig, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
use wasmer_middlewares::Metering; use wasmer_middlewares::Metering;
#[derive(Arbitrary, Debug, Default, Copy, Clone)] #[derive(Arbitrary, Debug, Default, Copy, Clone)]

View File

@ -3,8 +3,8 @@
use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target}; use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target};
use wasm_smith::{Config, ConfiguredModule}; use wasm_smith::{Config, ConfiguredModule};
use wasmer::{imports, CompilerConfig, Instance, Module, Store}; use wasmer::{imports, CompilerConfig, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_cranelift::Cranelift; use wasmer_compiler_cranelift::Cranelift;
use wasmer_engine_universal::Universal;
#[derive(Arbitrary, Debug, Default, Copy, Clone)] #[derive(Arbitrary, Debug, Default, Copy, Clone)]
struct NoImportsConfig; struct NoImportsConfig;

View File

@ -3,8 +3,8 @@
use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target}; use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target};
use wasm_smith::{Config, ConfiguredModule}; use wasm_smith::{Config, ConfiguredModule};
use wasmer::{imports, CompilerConfig, Instance, Module, Store}; use wasmer::{imports, CompilerConfig, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_llvm::LLVM; use wasmer_compiler_llvm::LLVM;
use wasmer_engine_universal::Universal;
#[derive(Arbitrary, Debug, Default, Copy, Clone)] #[derive(Arbitrary, Debug, Default, Copy, Clone)]
struct NoImportsConfig; struct NoImportsConfig;

View File

@ -3,8 +3,8 @@
use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target}; use libfuzzer_sys::{arbitrary, arbitrary::Arbitrary, fuzz_target};
use wasm_smith::{Config, ConfiguredModule}; use wasm_smith::{Config, ConfiguredModule};
use wasmer::{imports, Instance, Module, Store}; use wasmer::{imports, Instance, Module, Store};
use wasmer_compiler::Universal;
use wasmer_compiler_singlepass::Singlepass; use wasmer_compiler_singlepass::Singlepass;
use wasmer_engine_universal::Universal;
#[derive(Arbitrary, Debug, Default, Copy, Clone)] #[derive(Arbitrary, Debug, Default, Copy, Clone)]
struct NoImportsConfig; struct NoImportsConfig;

View File

@ -41,7 +41,6 @@ target-lexicon = { version = "0.12.2", default-features = false }
wasmer-compiler-singlepass = { path = "../compiler-singlepass", version = "=2.3.0", optional = true } wasmer-compiler-singlepass = { path = "../compiler-singlepass", version = "=2.3.0", optional = true }
wasmer-compiler-cranelift = { path = "../compiler-cranelift", version = "=2.3.0", optional = true } wasmer-compiler-cranelift = { path = "../compiler-cranelift", version = "=2.3.0", optional = true }
wasmer-compiler-llvm = { path = "../compiler-llvm", version = "=2.3.0", optional = true } wasmer-compiler-llvm = { path = "../compiler-llvm", version = "=2.3.0", optional = true }
wasmer-engine-universal = { path = "../engine-universal", version = "=2.3.0", optional = true }
# - Mandatory dependencies for `sys` on Windows. # - Mandatory dependencies for `sys` on Windows.
[target.'cfg(all(not(target_arch = "wasm32"), target_os = "windows"))'.dependencies] [target.'cfg(all(not(target_arch = "wasm32"), target_os = "windows"))'.dependencies]
winapi = "0.3" winapi = "0.3"
@ -89,7 +88,6 @@ sys-default = ["sys", "wat", "default-cranelift", "default-universal"]
compiler = [ compiler = [
"sys", "sys",
"wasmer-compiler/translator", "wasmer-compiler/translator",
"wasmer-engine-universal/compiler",
] ]
singlepass = [ singlepass = [
"compiler", "compiler",
@ -120,7 +118,6 @@ default-compiler = []
engine = ["sys"] engine = ["sys"]
universal = [ universal = [
"engine", "engine",
"wasmer-engine-universal",
] ]
default-engine = [] default-engine = []
default-universal = [ default-universal = [

View File

@ -107,7 +107,7 @@ pub use wasmer_compiler_cranelift::{Cranelift, CraneliftOptLevel};
pub use wasmer_compiler_llvm::{LLVMOptLevel, LLVM}; pub use wasmer_compiler_llvm::{LLVMOptLevel, LLVM};
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
pub use wasmer_engine_universal::{Universal, UniversalArtifact, UniversalEngine}; pub use wasmer_compiler::{Universal, UniversalArtifact, UniversalEngine};
/// Version number of this crate. /// Version number of this crate.
pub const VERSION: &str = env!("CARGO_PKG_VERSION"); pub const VERSION: &str = env!("CARGO_PKG_VERSION");

View File

@ -119,7 +119,7 @@ impl Default for Store {
fn get_engine(mut config: impl CompilerConfig + 'static) -> impl Engine + Send + Sync { fn get_engine(mut config: impl CompilerConfig + 'static) -> impl Engine + Send + Sync {
cfg_if::cfg_if! { cfg_if::cfg_if! {
if #[cfg(feature = "default-universal")] { if #[cfg(feature = "default-universal")] {
wasmer_engine_universal::Universal::new(config) wasmer_compiler::Universal::new(config)
.engine() .engine()
} else { } else {
compile_error!("No default engine chosen") compile_error!("No default engine chosen")

View File

@ -28,7 +28,6 @@ wasmer-compiler-singlepass = { version = "=2.3.0", path = "../compiler-singlepas
wasmer-compiler-llvm = { version = "=2.3.0", path = "../compiler-llvm", optional = true } wasmer-compiler-llvm = { version = "=2.3.0", path = "../compiler-llvm", optional = true }
wasmer-emscripten = { version = "=2.3.0", path = "../emscripten", optional = true } wasmer-emscripten = { version = "=2.3.0", path = "../emscripten", optional = true }
wasmer-compiler = { version = "=2.3.0", path = "../compiler" } wasmer-compiler = { version = "=2.3.0", path = "../compiler" }
wasmer-engine-universal = { version = "=2.3.0", path = "../engine-universal", optional = true }
wasmer-middlewares = { version = "=2.3.0", path = "../middlewares", optional = true } wasmer-middlewares = { version = "=2.3.0", path = "../middlewares", optional = true }
wasmer-wasi = { version = "=2.3.0", path = "../wasi", default-features = false, features = ["host-fs", "sys"], optional = true } wasmer-wasi = { version = "=2.3.0", path = "../wasi", default-features = false, features = ["host-fs", "sys"], optional = true }
wasmer-types = { version = "=2.3.0", path = "../types" } wasmer-types = { version = "=2.3.0", path = "../types" }
@ -60,11 +59,11 @@ middlewares = [
"wasmer-middlewares", "wasmer-middlewares",
] ]
universal = [ universal = [
"wasmer-engine-universal", "wasmer-compiler/universal_engine",
"compiler",
] ]
compiler = [ compiler = [
"wasmer-api/compiler", "wasmer-api/compiler",
"wasmer-engine-universal/compiler",
] ]
singlepass = [ singlepass = [
"wasmer-compiler-singlepass", "wasmer-compiler-singlepass",

View File

@ -14,7 +14,7 @@ use cfg_if::cfg_if;
use std::sync::Arc; use std::sync::Arc;
use wasmer_api::Engine; use wasmer_api::Engine;
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
use wasmer_engine_universal::Universal; use wasmer_compiler::Universal;
/// Kind of compilers that can be used by the engines. /// Kind of compilers that can be used by the engines.
/// ///

View File

@ -21,7 +21,7 @@ criterion = "0.3"
tempfile = "3" tempfile = "3"
rand = "0.8.3" rand = "0.8.3"
wasmer-compiler-singlepass = { path = "../compiler-singlepass", version = "=2.3.0" } wasmer-compiler-singlepass = { path = "../compiler-singlepass", version = "=2.3.0" }
wasmer-engine-universal = { path = "../engine-universal", version = "=2.3.0" } wasmer-compiler = { path = "../compiler", version = "=2.3.0" }
[features] [features]
default = ["wasmer/js-serializable-module", "filesystem"] default = ["wasmer/js-serializable-module", "filesystem"]

View File

@ -6,8 +6,8 @@ use tempfile::TempDir;
use wasmer::{Module, Store}; use wasmer::{Module, Store};
use wasmer_cache::Cache; use wasmer_cache::Cache;
use wasmer_cache::{FileSystemCache, Hash}; use wasmer_cache::{FileSystemCache, Hash};
use wasmer_compiler::Universal;
use wasmer_compiler_singlepass::Singlepass; use wasmer_compiler_singlepass::Singlepass;
use wasmer_engine_universal::Universal;
fn random_key() -> Hash { fn random_key() -> Hash {
Hash::new(rand::thread_rng().gen::<[u8; 32]>()) Hash::new(rand::thread_rng().gen::<[u8; 32]>())

View File

@ -18,8 +18,7 @@ path = "src/bin/wasmer_compiler.rs"
doc = false doc = false
[dependencies] [dependencies]
wasmer-engine-universal-artifact = { version = "=2.3.0", path = "../universal-artifact", features = ["compiler"] } wasmer-compiler = { version = "=2.3.0", path = "../compiler", features = ["universal_engine"] }
wasmer-compiler = { version = "=2.3.0", path = "../compiler" }
wasmer-types = { version = "=2.3.0", path = "../types" } wasmer-types = { version = "=2.3.0", path = "../types" }
atty = "0.2" atty = "0.2"
colored = "2.0" colored = "2.0"

View File

@ -3,8 +3,8 @@ use crate::warning;
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use structopt::StructOpt; use structopt::StructOpt;
use wasmer_compiler::{ArtifactCreate, UniversalArtifactBuild};
use wasmer_compiler::{CpuFeature, ModuleEnvironment, Target, Triple}; use wasmer_compiler::{CpuFeature, ModuleEnvironment, Target, Triple};
use wasmer_engine_universal_artifact::{ArtifactCreate, UniversalArtifactBuild};
use wasmer_types::entity::PrimaryMap; use wasmer_types::entity::PrimaryMap;
use wasmer_types::{CompileError, MemoryIndex, MemoryStyle, TableIndex, TableStyle}; use wasmer_types::{CompileError, MemoryIndex, MemoryStyle, TableIndex, TableStyle};
@ -43,9 +43,7 @@ impl Compile {
) -> Result<&'static str> { ) -> Result<&'static str> {
Ok(match engine_type { Ok(match engine_type {
EngineType::Universal => { EngineType::Universal => {
wasmer_engine_universal_artifact::UniversalArtifactBuild::get_default_extension( wasmer_compiler::UniversalArtifactBuild::get_default_extension(target_triple)
target_triple,
)
} }
}) })
} }

View File

@ -7,8 +7,8 @@ use std::string::ToString;
#[allow(unused_imports)] #[allow(unused_imports)]
use std::sync::Arc; use std::sync::Arc;
use structopt::StructOpt; use structopt::StructOpt;
use wasmer_compiler::UniversalEngineBuilder;
use wasmer_compiler::{CompilerConfig, Features, PointerWidth, Target}; use wasmer_compiler::{CompilerConfig, Features, PointerWidth, Target};
use wasmer_engine_universal_artifact::UniversalEngineBuilder;
use wasmer_types::{MemoryStyle, MemoryType, Pages, TableStyle, TableType}; use wasmer_types::{MemoryStyle, MemoryType, Pages, TableStyle, TableType};
/// Minimul Subset of Tunable parameters for WebAssembly compilation. /// Minimul Subset of Tunable parameters for WebAssembly compilation.

View File

@ -31,7 +31,6 @@ wasmer-compiler-cranelift = { version = "=2.3.0", path = "../compiler-cranelift"
wasmer-compiler-singlepass = { version = "=2.3.0", path = "../compiler-singlepass", optional = true } wasmer-compiler-singlepass = { version = "=2.3.0", path = "../compiler-singlepass", optional = true }
wasmer-compiler-llvm = { version = "=2.3.0", path = "../compiler-llvm", optional = true } wasmer-compiler-llvm = { version = "=2.3.0", path = "../compiler-llvm", optional = true }
wasmer-emscripten = { version = "=2.3.0", path = "../emscripten", optional = true } wasmer-emscripten = { version = "=2.3.0", path = "../emscripten", optional = true }
wasmer-engine-universal = { version = "=2.3.0", path = "../engine-universal", optional = true }
wasmer-vm = { version = "=2.3.0", path = "../vm" } wasmer-vm = { version = "=2.3.0", path = "../vm" }
wasmer-wasi = { version = "=2.3.0", path = "../wasi", optional = true } wasmer-wasi = { version = "=2.3.0", path = "../wasi", optional = true }
wasmer-wasi-experimental-io-devices = { version = "=2.3.0", path = "../wasi-experimental-io-devices", optional = true } wasmer-wasi-experimental-io-devices = { version = "=2.3.0", path = "../wasi-experimental-io-devices", optional = true }
@ -69,7 +68,6 @@ default = [
] ]
engine = [] engine = []
universal = [ universal = [
"wasmer-engine-universal",
"engine", "engine",
] ]
cache = ["wasmer-cache"] cache = ["wasmer-cache"]
@ -80,7 +78,6 @@ emscripten = ["wasmer-emscripten"]
wat = ["wasmer/wat"] wat = ["wasmer/wat"]
compiler = [ compiler = [
"wasmer-compiler/translator", "wasmer-compiler/translator",
"wasmer-engine-universal/compiler",
] ]
experimental-io-devices = [ experimental-io-devices = [
"wasmer-wasi-experimental-io-devices", "wasmer-wasi-experimental-io-devices",

View File

@ -41,7 +41,7 @@ impl Compile {
Ok(match engine_type { Ok(match engine_type {
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
EngineType::Universal => { EngineType::Universal => {
wasmer_engine_universal::UniversalArtifact::get_default_extension(target_triple) wasmer_compiler::UniversalArtifact::get_default_extension(target_triple)
} }
#[cfg(not(all(feature = "universal")))] #[cfg(not(all(feature = "universal")))]
_ => bail!("selected engine type is not compiled in"), _ => bail!("selected engine type is not compiled in"),

View File

@ -225,8 +225,8 @@ impl Run {
let contents = std::fs::read(self.path.clone())?; let contents = std::fs::read(self.path.clone())?;
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
{ {
if wasmer_engine_universal::UniversalArtifact::is_deserializable(&contents) { if wasmer_compiler::UniversalArtifact::is_deserializable(&contents) {
let engine = wasmer_engine_universal::Universal::headless().engine(); let engine = wasmer_compiler::Universal::headless().engine();
let store = Store::new(&engine); let store = Store::new(&engine);
let module = unsafe { Module::deserialize_from_file(&store, &self.path)? }; let module = unsafe { Module::deserialize_from_file(&store, &self.path)? };
return Ok(module); return Ok(module);
@ -309,7 +309,7 @@ impl Run {
let extension = match *engine_type { let extension = match *engine_type {
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
EngineType::Universal => { EngineType::Universal => {
wasmer_engine_universal::UniversalArtifact::get_default_extension(&Triple::host()) wasmer_compiler::UniversalArtifact::get_default_extension(&Triple::host())
.to_string() .to_string()
} }
// We use the compiler type as the default extension // We use the compiler type as the default extension

View File

@ -129,7 +129,7 @@ impl CompilerOptions {
let engine: Box<dyn Engine + Send + Sync> = match engine_type { let engine: Box<dyn Engine + Send + Sync> = match engine_type {
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
EngineType::Universal => Box::new( EngineType::Universal => Box::new(
wasmer_engine_universal::Universal::new(compiler_config) wasmer_compiler::Universal::new(compiler_config)
.features(features) .features(features)
.target(target) .target(target)
.engine(), .engine(),
@ -392,9 +392,7 @@ impl StoreOptions {
let engine_type = self.get_engine()?; let engine_type = self.get_engine()?;
let engine: Arc<dyn Engine + Send + Sync> = match engine_type { let engine: Arc<dyn Engine + Send + Sync> = match engine_type {
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
EngineType::Universal => { EngineType::Universal => Arc::new(wasmer_compiler::Universal::headless().engine()),
Arc::new(wasmer_engine_universal::Universal::headless().engine())
}
#[cfg(not(all(feature = "universal")))] #[cfg(not(all(feature = "universal")))]
engine => bail!( engine => bail!(
"The `{}` engine is not included in this binary.", "The `{}` engine is not included in this binary.",

View File

@ -28,8 +28,16 @@ memmap2 = "0.5"
more-asserts = "0.2" more-asserts = "0.2"
lazy_static = "1.4" lazy_static = "1.4"
cfg-if = "1.0"
leb128 = "0.2"
enum-iterator = "0.7.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies] [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
wasmer-vm = { path = "../vm", version = "=2.3.0" } wasmer-vm = { path = "../vm", version = "=2.3.0" }
region = { version = "3.0" }
[target.'cfg(target_os = "windows")'.dependencies]
winapi = { version = "0.3", features = ["winnt", "impl-default"] }
[features] [features]
default = ["std", "enable-serde" ] default = ["std", "enable-serde" ]
@ -37,6 +45,7 @@ default = ["std", "enable-serde" ]
# `CompilerConfig`, as well as the included wasmparser. # `CompilerConfig`, as well as the included wasmparser.
# Disable this feature if you just want a headless engine. # Disable this feature if you just want a headless engine.
translator = ["wasmparser"] translator = ["wasmparser"]
universal_engine = []
std = ["wasmer-types/std"] std = ["wasmer-types/std"]
core = ["hashbrown", "wasmer-types/core"] core = ["hashbrown", "wasmer-types/core"]
enable-serde = ["serde", "serde_bytes", "wasmer-types/enable-serde"] enable-serde = ["serde", "serde_bytes", "wasmer-types/enable-serde"]

View File

@ -8,6 +8,9 @@ mod resolver;
mod trap; mod trap;
mod tunables; mod tunables;
#[cfg(feature = "translator")]
mod universal;
pub use self::artifact::Artifact; pub use self::artifact::Artifact;
pub use self::error::{InstantiationError, LinkError}; pub use self::error::{InstantiationError, LinkError};
pub use self::export::{Export, ExportFunction, ExportFunctionMetadata}; pub use self::export::{Export, ExportFunction, ExportFunctionMetadata};
@ -15,3 +18,6 @@ pub use self::inner::{Engine, EngineId};
pub use self::resolver::resolve_imports; pub use self::resolver::resolve_imports;
pub use self::trap::*; pub use self::trap::*;
pub use self::tunables::Tunables; pub use self::tunables::Tunables;
#[cfg(feature = "translator")]
pub use self::universal::*;

View File

@ -50,7 +50,7 @@ impl RuntimeError {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// let trap = wasmer_engine::RuntimeError::new("unexpected error"); /// let trap = wasmer_compiler::RuntimeError::new("unexpected error");
/// assert_eq!("unexpected error", trap.message()); /// assert_eq!("unexpected error", trap.message());
/// ``` /// ```
pub fn new<I: Into<String>>(message: I) -> Self { pub fn new<I: Into<String>>(message: I) -> Self {

View File

@ -1,20 +1,18 @@
//! Define `UniversalArtifact`, based on `UniversalArtifactBuild` //! Define `UniversalArtifact`, based on `UniversalArtifactBuild`
//! to allow compiling and instantiating to be done as separate steps. //! to allow compiling and instantiating to be done as separate steps.
use crate::engine::{UniversalEngine, UniversalEngineInner}; use super::engine::{UniversalEngine, UniversalEngineInner};
use crate::link::link_module; use crate::engine::universal::link::link_module;
use enumset::EnumSet; use crate::ArtifactCreate;
use std::sync::{Arc, Mutex}; use crate::{
#[cfg(feature = "compiler")]
use wasmer_compiler::ModuleEnvironment;
use wasmer_compiler::{
register_frame_info, Artifact, FunctionExtent, GlobalFrameInfoRegistration, MetadataHeader, register_frame_info, Artifact, FunctionExtent, GlobalFrameInfoRegistration, MetadataHeader,
}; };
use wasmer_compiler::{CpuFeature, Features, Triple}; use crate::{CpuFeature, Features, Triple};
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
use wasmer_compiler::{Engine, Tunables}; use crate::{Engine, ModuleEnvironment, Tunables};
use wasmer_engine_universal_artifact::ArtifactCreate; use crate::{SerializableModule, UniversalArtifactBuild};
use wasmer_engine_universal_artifact::{SerializableModule, UniversalArtifactBuild}; use enumset::EnumSet;
use std::sync::{Arc, Mutex};
use wasmer_types::entity::{BoxedSlice, PrimaryMap}; use wasmer_types::entity::{BoxedSlice, PrimaryMap};
use wasmer_types::{ use wasmer_types::{
CompileError, DeserializeError, FunctionIndex, LocalFunctionIndex, MemoryIndex, ModuleInfo, CompileError, DeserializeError, FunctionIndex, LocalFunctionIndex, MemoryIndex, ModuleInfo,
@ -39,7 +37,7 @@ pub struct UniversalArtifact {
impl UniversalArtifact { impl UniversalArtifact {
/// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated. /// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated.
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
pub fn new( pub fn new(
engine: &UniversalEngine, engine: &UniversalEngine,
data: &[u8], data: &[u8],
@ -72,7 +70,7 @@ impl UniversalArtifact {
} }
/// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated. /// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated.
#[cfg(not(feature = "compiler"))] #[cfg(not(feature = "universal_engine"))]
pub fn new(_engine: &UniversalEngine, _data: &[u8]) -> Result<Self, CompileError> { pub fn new(_engine: &UniversalEngine, _data: &[u8]) -> Result<Self, CompileError> {
Err(CompileError::Codegen( Err(CompileError::Codegen(
"Compilation is not enabled in the engine".to_string(), "Compilation is not enabled in the engine".to_string(),

View File

@ -1,5 +1,5 @@
use crate::UniversalEngine; use super::UniversalEngine;
use wasmer_compiler::{CompilerConfig, Features, Target}; use crate::{CompilerConfig, Features, Target};
/// The Universal builder /// The Universal builder
pub struct Universal { pub struct Universal {
@ -44,7 +44,7 @@ impl Universal {
} }
/// Build the `UniversalEngine` for this configuration /// Build the `UniversalEngine` for this configuration
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
pub fn engine(self) -> UniversalEngine { pub fn engine(self) -> UniversalEngine {
let target = self.target.unwrap_or_default(); let target = self.target.unwrap_or_default();
if let Some(compiler_config) = self.compiler_config { if let Some(compiler_config) = self.compiler_config {
@ -59,7 +59,7 @@ impl Universal {
} }
/// Build the `UniversalEngine` for this configuration /// Build the `UniversalEngine` for this configuration
#[cfg(not(feature = "compiler"))] #[cfg(not(feature = "universal_engine"))]
pub fn engine(self) -> UniversalEngine { pub fn engine(self) -> UniversalEngine {
UniversalEngine::headless() UniversalEngine::headless()
} }

View File

@ -2,7 +2,7 @@
// Attributions: https://github.com/wasmerio/wasmer/blob/master/ATTRIBUTIONS.md // Attributions: https://github.com/wasmerio/wasmer/blob/master/ATTRIBUTIONS.md
//! Memory management for executable code. //! Memory management for executable code.
use crate::unwind::UnwindRegistry; use super::unwind::UnwindRegistry;
use wasmer_types::{CompiledFunctionUnwindInfo, CustomSection, FunctionBody}; use wasmer_types::{CompiledFunctionUnwindInfo, CustomSection, FunctionBody};
use wasmer_vm::{Mmap, VMFunctionBody}; use wasmer_vm::{Mmap, VMFunctionBody};

View File

@ -1,12 +1,12 @@
//! Universal compilation. //! Universal compilation.
#[cfg(feature = "universal_engine")]
use crate::Compiler;
use crate::Target;
use crate::UniversalEngineBuilder;
use crate::{Artifact, Engine, EngineId, FunctionExtent, Tunables};
use crate::{CodeMemory, UniversalArtifact}; use crate::{CodeMemory, UniversalArtifact};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
#[cfg(feature = "compiler")]
use wasmer_compiler::Compiler;
use wasmer_compiler::Target;
use wasmer_compiler::{Artifact, Engine, EngineId, FunctionExtent, Tunables};
use wasmer_engine_universal_artifact::UniversalEngineBuilder;
use wasmer_types::entity::PrimaryMap; use wasmer_types::entity::PrimaryMap;
use wasmer_types::FunctionBody; use wasmer_types::FunctionBody;
use wasmer_types::{ use wasmer_types::{
@ -30,7 +30,7 @@ pub struct UniversalEngine {
impl UniversalEngine { impl UniversalEngine {
/// Create a new `UniversalEngine` with the given config /// Create a new `UniversalEngine` with the given config
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
pub fn new(compiler: Box<dyn Compiler>, target: Target, features: Features) -> Self { pub fn new(compiler: Box<dyn Compiler>, target: Target, features: Features) -> Self {
Self { Self {
inner: Arc::new(Mutex::new(UniversalEngineInner { inner: Arc::new(Mutex::new(UniversalEngineInner {
@ -108,7 +108,7 @@ impl Engine for UniversalEngine {
} }
/// Compile a WebAssembly binary /// Compile a WebAssembly binary
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
fn compile( fn compile(
&self, &self,
binary: &[u8], binary: &[u8],
@ -118,7 +118,7 @@ impl Engine for UniversalEngine {
} }
/// Compile a WebAssembly binary /// Compile a WebAssembly binary
#[cfg(not(feature = "compiler"))] #[cfg(not(feature = "universal_engine"))]
fn compile( fn compile(
&self, &self,
_binary: &[u8], _binary: &[u8],
@ -162,7 +162,7 @@ pub struct UniversalEngineInner {
impl UniversalEngineInner { impl UniversalEngineInner {
/// Gets the compiler associated to this engine. /// Gets the compiler associated to this engine.
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
pub fn compiler(&self) -> Result<&dyn Compiler, CompileError> { pub fn compiler(&self) -> Result<&dyn Compiler, CompileError> {
self.builder.compiler() self.builder.compiler()
} }

View File

@ -1,8 +1,8 @@
//! Linking for Universal-compiled code. //! Linking for Universal-compiled code.
use crate::get_libcall_trampoline;
use crate::FunctionExtent;
use std::ptr::{read_unaligned, write_unaligned}; use std::ptr::{read_unaligned, write_unaligned};
use wasmer_compiler::FunctionExtent;
use wasmer_engine_universal_artifact::get_libcall_trampoline;
use wasmer_types::entity::PrimaryMap; use wasmer_types::entity::PrimaryMap;
use wasmer_types::{LocalFunctionIndex, ModuleInfo}; use wasmer_types::{LocalFunctionIndex, ModuleInfo};
use wasmer_types::{Relocation, RelocationKind, RelocationTarget, Relocations, SectionIndex}; use wasmer_types::{Relocation, RelocationKind, RelocationTarget, Relocations, SectionIndex};

View File

@ -0,0 +1,18 @@
//! Universal backend for Wasmer compilers.
//!
//! Given a compiler (such as `CraneliftCompiler` or `LLVMCompiler`)
//! it generates the compiled machine code, and publishes it into
//! memory so it can be used externally.
mod artifact;
mod builder;
mod code_memory;
mod engine;
mod link;
mod unwind;
pub use self::artifact::UniversalArtifact;
pub use self::builder::Universal;
pub use self::code_memory::CodeMemory;
pub use self::engine::UniversalEngine;
pub use self::link::link_module;

View File

@ -1,13 +1,13 @@
use crate::{
CompileModuleInfo, CompiledFunctionFrameInfo, CustomSection, Dwarf, FunctionBody, Relocation,
SectionIndex,
};
use crate::{DeserializeError, SerializeError};
use rkyv::{ use rkyv::{
archived_value, de::deserializers::SharedDeserializeMap, ser::serializers::AllocSerializer, archived_value, de::deserializers::SharedDeserializeMap, ser::serializers::AllocSerializer,
ser::Serializer as RkyvSerializer, Archive, Deserialize as RkyvDeserialize, ser::Serializer as RkyvSerializer, Archive, Deserialize as RkyvDeserialize,
Serialize as RkyvSerialize, Serialize as RkyvSerialize,
}; };
use wasmer_compiler::{
CompileModuleInfo, CompiledFunctionFrameInfo, CustomSection, Dwarf, FunctionBody, Relocation,
SectionIndex,
};
use wasmer_engine::{DeserializeError, SerializeError};
use wasmer_types::entity::PrimaryMap; use wasmer_types::entity::PrimaryMap;
use wasmer_types::{FunctionIndex, LocalFunctionIndex, OwnedDataInitializer, SignatureIndex}; use wasmer_types::{FunctionIndex, LocalFunctionIndex, OwnedDataInitializer, SignatureIndex};

View File

@ -59,6 +59,12 @@ pub use crate::artifact::*;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
pub use crate::engine::*; pub use crate::engine::*;
#[cfg(feature = "translator")]
mod universal_artifact;
#[cfg(feature = "translator")]
pub use self::universal_artifact::*;
#[cfg(feature = "translator")] #[cfg(feature = "translator")]
mod compiler; mod compiler;
mod target; mod target;

View File

@ -1,26 +1,29 @@
//! Define `UniversalArtifactBuild` to allow compiling and instantiating to be //! Define `UniversalArtifactBuild` to allow compiling and instantiating to be
//! done as separate steps. //! done as separate steps.
use crate::serialize::SerializableCompilation; #[cfg(feature = "universal_engine")]
use crate::serialize::SerializableModule; use super::serialize::SerializableCompilation;
#[cfg(feature = "compiler")] use super::serialize::SerializableModule;
use crate::trampoline::{libcall_trampoline_len, make_libcall_trampolines}; #[cfg(feature = "universal_engine")]
use super::trampoline::{libcall_trampoline_len, make_libcall_trampolines};
use crate::MetadataHeader;
use crate::{ArtifactCreate, UniversalEngineBuilder}; use crate::{ArtifactCreate, UniversalEngineBuilder};
use crate::{CpuFeature, Features, Triple};
#[cfg(feature = "universal_engine")]
use crate::{ModuleEnvironment, ModuleMiddlewareChain, Target};
use enumset::EnumSet; use enumset::EnumSet;
use std::mem; use std::mem;
use std::sync::Arc; use std::sync::Arc;
use wasmer_compiler::MetadataHeader;
use wasmer_compiler::{
CpuFeature, Features, ModuleEnvironment, ModuleMiddlewareChain, Target, Triple,
};
use wasmer_types::entity::PrimaryMap; use wasmer_types::entity::PrimaryMap;
#[cfg(feature = "universal_engine")]
use wasmer_types::CompileModuleInfo;
use wasmer_types::SerializeError; use wasmer_types::SerializeError;
use wasmer_types::{ use wasmer_types::{
CompileError, CustomSection, Dwarf, FunctionIndex, LocalFunctionIndex, MemoryIndex, CompileError, CustomSection, Dwarf, FunctionIndex, LocalFunctionIndex, MemoryIndex,
MemoryStyle, ModuleInfo, OwnedDataInitializer, Relocation, SectionIndex, SignatureIndex, MemoryStyle, ModuleInfo, OwnedDataInitializer, Relocation, SectionIndex, SignatureIndex,
TableIndex, TableStyle, TableIndex, TableStyle,
}; };
use wasmer_types::{CompileModuleInfo, CompiledFunctionFrameInfo, FunctionBody}; use wasmer_types::{CompiledFunctionFrameInfo, FunctionBody};
/// A compiled wasm module, ready to be instantiated. /// A compiled wasm module, ready to be instantiated.
pub struct UniversalArtifactBuild { pub struct UniversalArtifactBuild {
@ -37,7 +40,7 @@ impl UniversalArtifactBuild {
} }
/// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated. /// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated.
#[cfg(feature = "compiler")] #[cfg(feature = "universal_engine")]
pub fn new( pub fn new(
inner_engine: &mut UniversalEngineBuilder, inner_engine: &mut UniversalEngineBuilder,
data: &[u8], data: &[u8],
@ -116,7 +119,7 @@ impl UniversalArtifactBuild {
} }
/// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated. /// Compile a data buffer into a `UniversalArtifactBuild`, which may then be instantiated.
#[cfg(not(feature = "compiler"))] #[cfg(not(feature = "universal_engine"))]
pub fn new(_engine: &UniversalEngineBuilder, _data: &[u8]) -> Result<Self, CompileError> { pub fn new(_engine: &UniversalEngineBuilder, _data: &[u8]) -> Result<Self, CompileError> {
Err(CompileError::Codegen( Err(CompileError::Codegen(
"Compilation is not enabled in the engine".to_string(), "Compilation is not enabled in the engine".to_string(),

View File

@ -1,13 +1,11 @@
//! Universal compilation. //! Universal compilation.
#[cfg(feature = "compiler")] use crate::Compiler;
use wasmer_compiler::Compiler;
use wasmer_types::{CompileError, Features}; use wasmer_types::{CompileError, Features};
/// The Builder contents of `UniversalEngine` /// The Builder contents of `UniversalEngine`
pub struct UniversalEngineBuilder { pub struct UniversalEngineBuilder {
/// The compiler /// The compiler
#[cfg(feature = "compiler")]
compiler: Option<Box<dyn Compiler>>, compiler: Option<Box<dyn Compiler>>,
/// The features to compile the Wasm module with /// The features to compile the Wasm module with
features: Features, features: Features,
@ -15,13 +13,11 @@ pub struct UniversalEngineBuilder {
impl UniversalEngineBuilder { impl UniversalEngineBuilder {
/// Create a new builder with pre-made components /// Create a new builder with pre-made components
#[cfg(feature = "compiler")]
pub fn new(compiler: Option<Box<dyn Compiler>>, features: Features) -> Self { pub fn new(compiler: Option<Box<dyn Compiler>>, features: Features) -> Self {
Self { compiler, features } Self { compiler, features }
} }
/// Gets the compiler associated to this engine. /// Gets the compiler associated to this engine.
#[cfg(feature = "compiler")]
pub fn compiler(&self) -> Result<&dyn Compiler, CompileError> { pub fn compiler(&self) -> Result<&dyn Compiler, CompileError> {
if self.compiler.is_none() { if self.compiler.is_none() {
return Err(CompileError::Codegen( return Err(CompileError::Codegen(
@ -31,29 +27,11 @@ impl UniversalEngineBuilder {
Ok(&**self.compiler.as_ref().unwrap()) Ok(&**self.compiler.as_ref().unwrap())
} }
/// Gets the compiler associated to this engine.
#[cfg(not(feature = "compiler"))]
pub fn compiler(&self) -> Result<&dyn Compiler, CompileError> {
return Err(CompileError::Codegen(
"The UniversalEngine is not compiled in.".to_string(),
));
}
/// Validate the module /// Validate the module
#[cfg(feature = "compiler")]
pub fn validate(&self, data: &[u8]) -> Result<(), CompileError> { pub fn validate(&self, data: &[u8]) -> Result<(), CompileError> {
self.compiler()?.validate_module(self.features(), data) self.compiler()?.validate_module(self.features(), data)
} }
/// Validate the module
#[cfg(not(feature = "compiler"))]
pub fn validate<'data>(&self, _data: &'data [u8]) -> Result<(), CompileError> {
Err(CompileError::Validate(
"The UniversalEngine is not compiled with compiler support, which is required for validating"
.to_string(),
))
}
/// The Wasm features /// The Wasm features
pub fn features(&self) -> &Features { pub fn features(&self) -> &Features {
&self.features &self.features

View File

@ -0,0 +1,11 @@
//! Generic Artifact abstraction for Wasmer Engines.
mod artifact;
mod engine;
mod serialize;
mod trampoline;
pub use self::artifact::UniversalArtifactBuild;
pub use self::engine::UniversalEngineBuilder;
pub use self::serialize::SerializableModule;
pub use self::trampoline::*;

View File

@ -3,8 +3,8 @@
//! This is needed because the target of libcall relocations are not reachable //! This is needed because the target of libcall relocations are not reachable
//! through normal branch instructions. //! through normal branch instructions.
use crate::{Architecture, Target};
use enum_iterator::IntoEnumIterator; use enum_iterator::IntoEnumIterator;
use wasmer_compiler::{Architecture, Target};
use wasmer_types::{ use wasmer_types::{
CustomSection, CustomSectionProtection, LibCall, Relocation, RelocationKind, RelocationTarget, CustomSection, CustomSectionProtection, LibCall, Relocation, RelocationKind, RelocationTarget,
SectionBody, SectionBody,

View File

@ -1,40 +0,0 @@
[package]
name = "wasmer-engine-universal"
version = "2.3.0"
description = "Wasmer Universal Engine"
categories = ["wasm"]
keywords = ["wasm", "webassembly", "engine", "universal"]
authors = ["Wasmer Engineering Team <engineering@wasmer.io>"]
repository = "https://github.com/wasmerio/wasmer"
license = "MIT OR Apache-2.0 WITH LLVM-exception "
readme = "README.md"
edition = "2018"
[dependencies]
wasmer-engine-universal-artifact = { path = "../universal-artifact", version = "=2.3.0", features = [
"compiler",
] }
wasmer-types = { path = "../types", version = "=2.3.0" }
wasmer-compiler = { path = "../compiler", version = "=2.3.0", features = [
"translator",
] }
wasmer-vm = { path = "../vm", version = "=2.3.0" }
# flexbuffers = { path = "../../../flatbuffers/rust/flexbuffers", version = "0.1.0" }
cfg-if = "1.0"
leb128 = "0.2"
rkyv = { version = "0.7.38", features = ["indexmap"] }
enumset = "1.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
region = { version = "3.0" }
[target.'cfg(target_os = "windows")'.dependencies]
winapi = { version = "0.3", features = ["winnt", "impl-default"] }
[features]
# Enable the `compiler` feature if you want the engine to compile
# and not be only on headless mode.
compiler = ["wasmer-compiler/translator"]
[badges]
maintenance = { status = "actively-developed" }

View File

@ -1,25 +0,0 @@
# `wasmer-engine-universal` [![Build Status](https://github.com/wasmerio/wasmer/workflows/build/badge.svg?style=flat-square)](https://github.com/wasmerio/wasmer/actions?query=workflow%3Abuild) [![Join Wasmer Slack](https://img.shields.io/static/v1?label=Slack&message=join%20chat&color=brighgreen&style=flat-square)](https://slack.wasmer.io) [![MIT License](https://img.shields.io/github/license/wasmerio/wasmer.svg?style=flat-square)](https://github.com/wasmerio/wasmer/blob/master/LICENSE)
The Wasmer Universal engine is usable with any compiler implementation based
on [`wasmer-compiler`]. After the compiler process the result, the Universal
pushes it into memory and links its contents so it can be usable by
the [`wasmer`] API.
*Note: you can find a [full working example using the Universal engine
here][example].*
### Acknowledgments
This project borrowed some of the code of the code memory and unwind
tables from the [`wasmtime-jit`], the code since then has evolved
significantly.
Please check [Wasmer `ATTRIBUTIONS`] to further see licenses and other
attributions of the project.
[`wasmer-compiler`]: https://github.com/wasmerio/wasmer/tree/master/lib/compiler
[`wasmer`]: https://github.com/wasmerio/wasmer/tree/master/lib/api
[example]: https://github.com/wasmerio/wasmer/blob/master/examples/engine_universal.rs
[`wasmtime-jit`]: https://crates.io/crates/wasmtime-jit
[Wasmer `ATTRIBUTIONS`]: https://github.com/wasmerio/wasmer/blob/master/ATTRIBUTIONS.md

View File

@ -1,40 +0,0 @@
//! Universal backend for Wasmer compilers.
//!
//! Given a compiler (such as `CraneliftCompiler` or `LLVMCompiler`)
//! it generates the compiled machine code, and publishes it into
//! memory so it can be used externally.
#![deny(missing_docs, trivial_numeric_casts, unused_extern_crates)]
#![warn(unused_import_braces)]
#![cfg_attr(
feature = "cargo-clippy",
allow(clippy::new_without_default, clippy::new_without_default)
)]
#![cfg_attr(
feature = "cargo-clippy",
warn(
clippy::float_arithmetic,
clippy::mut_mut,
clippy::nonminimal_bool,
clippy::map_unwrap_or,
clippy::print_stdout,
clippy::unicode_not_nfc,
clippy::use_self
)
)]
mod artifact;
mod builder;
mod code_memory;
mod engine;
mod link;
mod unwind;
pub use crate::artifact::UniversalArtifact;
pub use crate::builder::Universal;
pub use crate::code_memory::CodeMemory;
pub use crate::engine::UniversalEngine;
pub use crate::link::link_module;
/// Version number of this crate.
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

View File

@ -1,25 +0,0 @@
[package]
name = "wasmer-engine-universal-artifact"
version = "2.3.0"
description = "Wasmer Engine Universal Artifact abstraction"
categories = ["wasm"]
keywords = ["wasm", "webassembly", "engine"]
authors = ["Wasmer Engineering Team <engineering@wasmer.io>"]
repository = "https://github.com/wasmerio/wasmer"
license = "MIT OR Apache-2.0 WITH LLVM-exception "
readme = "README.md"
edition = "2018"
[dependencies]
wasmer-types = { path = "../types", version = "=2.3.0" }
wasmer-compiler = { path = "../compiler", version = "=2.3.0", features = ["translator", ] }
thiserror = "1.0"
enumset = "1.0"
rkyv = "0.7.20"
enum-iterator = "0.7.0"
[features]
compiler = []
[badges]
maintenance = { status = "actively-developed" }

View File

@ -1,18 +0,0 @@
# `wasmer-engine-universal-artifact` [![Build Status](https://github.com/wasmerio/wasmer/workflows/build/badge.svg?style=flat-square)](https://github.com/wasmerio/wasmer/actions?query=workflow%3Abuild) [![Join Wasmer Slack](https://img.shields.io/static/v1?label=Slack&message=join%20chat&color=brighgreen&style=flat-square)](https://slack.wasmer.io) [![MIT License](https://img.shields.io/github/license/wasmerio/wasmer.svg?style=flat-square)](https://github.com/wasmerio/wasmer/blob/master/LICENSE)
This crate is the general abstraction for generating Artifacts in Wasmer.
### Acknowledgments
This project borrowed some of the code of the trap implementation from
the [`wasmtime-api`], the code since then has evolved significantly.
Please check [Wasmer `ATTRIBUTIONS`] to further see licenses and other
attributions of the project.
[`wasmer-engine-universal`]: https://github.com/wasmerio/wasmer/tree/master/lib/engine-universal
[`wasmer-engine-dummy`]: https://github.com/wasmerio/wasmer/tree/master/tests/lib/engine-dummy
[`wasmtime-api`]: https://crates.io/crates/wasmtime
[Wasmer `ATTRIBUTIONS`]: https://github.com/wasmerio/wasmer/blob/master/ATTRIBUTIONS.md

View File

@ -1,34 +0,0 @@
//! Generic Artifact abstraction for Wasmer Engines.
#![deny(missing_docs, trivial_numeric_casts, unused_extern_crates)]
#![warn(unused_import_braces)]
#![cfg_attr(
feature = "cargo-clippy",
allow(clippy::new_without_default, clippy::new_without_default)
)]
#![cfg_attr(
feature = "cargo-clippy",
warn(
clippy::float_arithmetic,
clippy::mut_mut,
clippy::nonminimal_bool,
clippy::map_unwrap_or,
clippy::print_stdout,
clippy::unicode_not_nfc,
clippy::use_self
)
)]
mod artifact;
mod engine;
mod serialize;
mod trampoline;
pub use crate::artifact::UniversalArtifactBuild;
pub use crate::engine::UniversalEngineBuilder;
pub use crate::serialize::SerializableModule;
pub use crate::trampoline::*;
pub use wasmer_compiler::{ArtifactCreate, MetadataHeader, Upcastable};
/// Version number of this crate.
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

View File

@ -60,7 +60,7 @@ impl Config {
match &self.engine { match &self.engine {
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
Engine::Universal => { Engine::Universal => {
let mut engine = wasmer_engine_universal::Universal::new(compiler_config); let mut engine = wasmer_compiler::Universal::new(compiler_config);
if let Some(ref features) = self.features { if let Some(ref features) = self.features {
engine = engine.features(features.clone()) engine = engine.features(features.clone())
} }
@ -77,7 +77,7 @@ impl Config {
pub fn engine_headless(&self) -> Box<dyn WasmerEngine> { pub fn engine_headless(&self) -> Box<dyn WasmerEngine> {
match &self.engine { match &self.engine {
#[cfg(feature = "universal")] #[cfg(feature = "universal")]
Engine::Universal => Box::new(wasmer_engine_universal::Universal::headless().engine()), Engine::Universal => Box::new(wasmer_compiler::Universal::headless().engine()),
#[allow(unreachable_patterns)] #[allow(unreachable_patterns)]
engine => panic!( engine => panic!(
"The {:?} Engine is not enabled. Please enable it using the features", "The {:?} Engine is not enabled. Please enable it using the features",