This commit implements the `uffd` feature which turns on support for utilizing the `userfaultfd` system call on Linux for the pooling instance allocator. By handling page faults in userland, we are able to detect guard page accesses without having to constantly change memory page protections. This should help reduce the number of syscalls as well as kernel lock contentions when many threads are allocating and deallocating instances. Additionally, the user fault handler can lazy initialize linear memories of an instance (implementation to come).
79 lines
2.5 KiB
TOML
79 lines
2.5 KiB
TOML
[package]
|
|
name = "wasmtime"
|
|
version = "0.24.0"
|
|
authors = ["The Wasmtime Project Developers"]
|
|
description = "High-level API to expose the Wasmtime runtime"
|
|
documentation = "https://docs.rs/wasmtime"
|
|
license = "Apache-2.0 WITH LLVM-exception"
|
|
repository = "https://github.com/bytecodealliance/wasmtime"
|
|
readme = "README.md"
|
|
edition = "2018"
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["--cfg", "nightlydoc"]
|
|
|
|
[dependencies]
|
|
wasmtime-runtime = { path = "../runtime", version = "0.24.0" }
|
|
wasmtime-environ = { path = "../environ", version = "0.24.0" }
|
|
wasmtime-jit = { path = "../jit", version = "0.24.0" }
|
|
wasmtime-cache = { path = "../cache", version = "0.24.0", optional = true }
|
|
wasmtime-profiling = { path = "../profiling", version = "0.24.0" }
|
|
wasmtime-fiber = { path = "../fiber", version = "0.24.0", optional = true }
|
|
target-lexicon = { version = "0.11.0", default-features = false }
|
|
wasmparser = "0.76"
|
|
anyhow = "1.0.19"
|
|
region = "2.2.0"
|
|
libc = "0.2"
|
|
cfg-if = "1.0"
|
|
backtrace = "0.3.42"
|
|
rustc-demangle = "0.1.16"
|
|
cpp_demangle = "0.3.2"
|
|
log = "0.4.8"
|
|
wat = { version = "1.0.36", optional = true }
|
|
smallvec = "1.6.1"
|
|
serde = { version = "1.0.94", features = ["derive"] }
|
|
bincode = "1.2.1"
|
|
indexmap = "1.6"
|
|
paste = "1.0.3"
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
winapi = "0.3.7"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.0"
|
|
wasmtime-wasi = { path = "../wasi" }
|
|
wasi-cap-std-sync = { path = "../wasi-common/cap-std-sync" }
|
|
|
|
[badges]
|
|
maintenance = { status = "actively-developed" }
|
|
|
|
[features]
|
|
default = ['async', 'cache', 'wat', 'jitdump', 'parallel-compilation']
|
|
|
|
# Enables experimental support for the lightbeam codegen backend, an alternative
|
|
# to cranelift. Requires Nightly Rust currently, and this is not enabled by
|
|
# default.
|
|
lightbeam = ["wasmtime-jit/lightbeam"]
|
|
|
|
# Enables support for the `perf` jitdump profiler
|
|
jitdump = ["wasmtime-jit/jitdump"]
|
|
|
|
# Enables support for the `VTune` profiler
|
|
vtune = ["wasmtime-jit/vtune"]
|
|
|
|
# Enables parallel compilation of WebAssembly code
|
|
parallel-compilation = ["wasmtime-jit/parallel-compilation"]
|
|
|
|
# Enables support for automatic cache configuration to be enabled in `Config`.
|
|
cache = ["wasmtime-cache"]
|
|
|
|
# Enables support for new x64 backend.
|
|
experimental_x64 = ["wasmtime-jit/experimental_x64"]
|
|
|
|
# Enables support for "async stores" as well as defining host functions as
|
|
# `async fn` and calling functions asynchronously.
|
|
async = ["wasmtime-fiber"]
|
|
|
|
# Enables userfaultfd support in the runtime's pooling allocator when building on Linux
|
|
uffd = ["wasmtime-runtime/uffd"]
|