Skip to content

Commit

Permalink
Use Cargo's "namespace features" feature (#4293)
Browse files Browse the repository at this point in the history
Cargo recently added the ability to have an optional dependency without
implicitly introducing a new named feature on a crate. This is triggered
with some new directives in the `[features]` section, specifically:

* The `dep:foo` syntax means that `foo` is activated but no implicit
  feature should be added named `foo`.

* Additionally `foo?/bar` means that the `bar` feature of `foo` is only
  activated if `foo` is otherwise activated elsewhere, for example a
  conditional activation.

These two features can help avoid extra feature names showing up that we
don't want (e.g. currently the `wasmtime` crate has a `rayon` feature)
and additionally can help avoid runtime dependencies in niche cases for
us (e.g. activating `all-arch` but disabling `cranelift` would
previously pull-in cranelift but no longer will).
  • Loading branch information
alexcrichton authored Jun 21, 2022
1 parent b2e03ae commit 2f9d96c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ default = [
]
jitdump = ["wasmtime/jitdump"]
vtune = ["wasmtime/vtune"]
wasi-crypto = ["wasmtime-wasi-crypto"]
wasi-nn = ["wasmtime-wasi-nn"]
wasi-crypto = ["dep:wasmtime-wasi-crypto"]
wasi-nn = ["dep:wasmtime-wasi-nn"]
memory-init-cow = ["wasmtime/memory-init-cow", "wasmtime-cli-flags/memory-init-cow"]
pooling-allocator = ["wasmtime/pooling-allocator", "wasmtime-cli-flags/pooling-allocator"]
all-arch = ["wasmtime/all-arch"]
Expand Down
10 changes: 5 additions & 5 deletions crates/wasmtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ default = [
# with the Cranelift compiler. Cranelift is the default compilation backend of
# Wasmtime. If disabled then WebAssembly modules can only be created from
# precompiled WebAssembly modules.
cranelift = ["wasmtime-cranelift"]
cranelift = ["dep:wasmtime-cranelift"]

# Enables support for the `perf` jitdump profiler
jitdump = ["wasmtime-jit/jitdump"]
Expand All @@ -76,22 +76,22 @@ jitdump = ["wasmtime-jit/jitdump"]
vtune = ["wasmtime-jit/vtune"]

# Enables parallel compilation of WebAssembly code.
parallel-compilation = ["rayon"]
parallel-compilation = ["dep:rayon"]

# Enables support for automatic cache configuration to be enabled in `Config`.
cache = ["wasmtime-cache"]
cache = ["dep:wasmtime-cache"]

# Enables support for "async stores" as well as defining host functions as
# `async fn` and calling functions asynchronously.
async = ["wasmtime-fiber", "wasmtime-runtime/async", "async-trait"]
async = ["dep:wasmtime-fiber", "wasmtime-runtime/async", "dep:async-trait"]

# Enables support for the pooling instance allocation strategy
pooling-allocator = ["wasmtime-runtime/pooling-allocator"]

# Enables support for all architectures in Cranelift, allowing
# cross-compilation using the `wasmtime` crate's API, notably the
# `Engine::precompile_module` function.
all-arch = ["wasmtime-cranelift/all-arch"]
all-arch = ["wasmtime-cranelift?/all-arch"]

# Enables trap handling using POSIX signals instead of Mach exceptions on MacOS.
# It is useful for applications that do not bind their own exception ports and
Expand Down

0 comments on commit 2f9d96c

Please sign in to comment.