[package] name = "wasmer" description = "High-performance WebAssembly runtime" categories = ["wasm"] keywords = ["wasm", "webassembly", "runtime", "vm"] readme = "README.md" authors.workspace = true edition.workspace = true homepage.workspace = true license.workspace = true repository.workspace = true rust-version.workspace = true version.workspace = true ##### # This crate comes in 3 major flavors: # # - `sys`, where `wasmer` will be compiled to a native executable # which provides compilers, engines, a full VM etc. # - `wamr`, where `wasmer` will be compiled to a native executable # which provides an interpreter using WAMR as a backend. # - `wasmi`, where `wasmer` will be compiled to a native executable # which provides an interpreter using `wasmi` as a backend. # - `v8`, where `wasmer` will be compiled to a native executable # using `v8` as a backend. # - `js`, where `wasmer` will be compiled to WebAssembly to run in a # JavaScript host. ##### # Shared dependencies. [dependencies] # - Mandatory shared dependencies. indexmap = { version = "1.6" } cfg-if = "1.0" thiserror = "1.0" more-asserts = "0.2" derivative = { version = "^2" } bytes = "1" tracing = { version = "0.1" } # - Optional shared dependencies. wat = { version = "=1.216.0", optional = true } rustc-demangle = "0.1" shared-buffer = { workspace = true } wasmi_c_api = { version = "0.38.0", package = "wasmi_c_api_impl", optional = true } seq-macro = { version = "0.3.5", optional = true } loupe = { version = "0.1.3", optional = true, features = [ "indexmap", "enable-indexmap", ] } # Dependencies and Development Dependencies for `sys`. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] # - Mandatory dependencies for `sys`. wasmer-vm = { path = "../vm", version = "=5.0.1" } wasmer-compiler = { path = "../compiler", version = "=5.0.1" } wasmer-derive = { path = "../derive", version = "=5.0.1" } wasmer-types = { path = "../types", version = "=5.0.1" } target-lexicon = { version = "0.12.2", default-features = false } # - Optional dependencies for `sys`. wasmer-compiler-singlepass = { path = "../compiler-singlepass", version = "=5.0.1", optional = true } wasmer-compiler-cranelift = { path = "../compiler-cranelift", version = "=5.0.1", optional = true } wasmer-compiler-llvm = { path = "../compiler-llvm", version = "=5.0.1", optional = true } wasm-bindgen = { version = "0.2.74", optional = true } js-sys = { version = "0.3.51", optional = true } rusty_jsc = { version = "0.1.0", optional = true } wasmparser = { workspace = true, default-features = false, optional = true } # - Mandatory dependencies for `sys` on Windows. [target.'cfg(all(not(target_arch = "wasm32"), target_os = "windows"))'.dependencies] windows-sys = "0.59" # - Development Dependencies for `sys`. [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] wat = "1.0" tempfile = "3.6.0" anyhow = "1.0" macro-wasmer-universal-test = { version = "5.0.1", path = "./macro-wasmer-universal-test" } # Dependencies and Develoment Dependencies for `js`. [target.'cfg(target_arch = "wasm32")'.dependencies] # - Mandatory dependencies for `js`. wasmer-types = { path = "../types", version = "=5.0.1", default-features = false, features = [ "std", ] } wasm-bindgen = "0.2.74" js-sys = "0.3.51" wasmer-derive = { path = "../derive", version = "=5.0.1" } # - Optional dependencies for `js`. wasmparser = { workspace = true, default-features = false, optional = true } hashbrown = { version = "0.11", optional = true } serde-wasm-bindgen = { version = "0.4.5" } serde = { version = "1.0", features = ["derive"] } # - Development Dependencies for `js`. [target.'cfg(target_arch = "wasm32")'.dev-dependencies] wat = "1.0" anyhow = "1.0" wasm-bindgen-test = "0.3.0" macro-wasmer-universal-test = { version = "5.0.1", path = "./macro-wasmer-universal-test" } # Specific to `js`. # # `wasm-opt` is on by default in for the release profile, but it can be # disabled by setting it to `false` [package.metadata.wasm-pack.profile.release] wasm-opt = false [badges] maintenance = { status = "actively-developed" } [features] default = ["sys-default"] std = [] core = ["hashbrown"] artifact-size = [ "dep:loupe", "wasmer-vm/artifact-size", "wasmer-compiler/artifact-size", ] # Features for `sys`. sys = ["wasmer-compiler/translator", "wasmer-compiler/compiler", "std"] sys-default = ["sys", "wat", "cranelift"] # - Compilers. compiler = ["sys"] singlepass = ["compiler", "wasmer-compiler-singlepass"] cranelift = ["compiler", "wasmer-compiler-cranelift"] llvm = ["compiler", "wasmer-compiler-llvm"] # - Engines. engine = ["sys"] wamr = ["wasm-c-api", "std", "wat"] wasmi = ["wasm-c-api", "std", "wat", "dep:wasmi_c_api"] v8 = ["wasm-c-api", "std", "wat", "dep:seq-macro"] wasm-c-api = ["wasm-types-polyfill"] # - Deprecated features. jit = ["engine"] # Features for `js`. js = ["wasm-bindgen", "js-sys"] js-default = ["js", "std", "wasm-types-polyfill"] wasm-types-polyfill = ["wasmparser"] jsc = ["rusty_jsc", "wasm-types-polyfill", "wasmparser"] js-serializable-module = [] # Optional enable-serde = [ "wasmer-vm/enable-serde", "wasmer-compiler/enable-serde", "wasmer-types/enable-serde", ] wasmer-artifact-load = ["wasmer-compiler/wasmer-artifact-load"] wasmer-artifact-create = ["wasmer-compiler/wasmer-artifact-create"] static-artifact-load = ["wasmer-compiler/static-artifact-load"] static-artifact-create = ["wasmer-compiler/static-artifact-create"] [build-dependencies] cmake = "0.1.50" tar = "0.4.42" ureq = "2.10.1" xz = "0.1.0" zip = "2.2.0" [target.'cfg(target_env = "musl")'.build-dependencies] bindgen = { version = "0.70.1", default-features = false, features = ["static", "logging", "prettyplease"] } [target.'cfg(not(target_env = "musl"))'.build-dependencies] bindgen = { version = "0.70.1" } [package.metadata.docs.rs] features = [ "compiler", "core", "cranelift", "engine", "jit", "singlepass", "static-artifact-create", "static-artifact-load", "sys", "sys-default", "wasmer-artifact-create", "wasmer-artifact-load", ] rustc-args = ["--cfg", "docsrs"]