[package]
name = "linera-execution"
description = "Persistent data and the corresponding logics used by the Linera protocol for runtime and execution of smart contracts / applications."
readme = "README.md"
documentation = "https://docs.rs/linera-execution/latest/linera_execution/"
authors.workspace = true
edition.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
version.workspace = true
[lints]
workspace = true
[features]
test = ["tokio/macros", "linera-base/test", "linera-views/test", "proptest"]
revm = [
"dep:revm",
"dep:revm-context",
"dep:revm-context-interface",
"dep:revm-database",
"dep:revm-handler",
"dep:revm-interpreter",
"dep:revm-primitives",
"dep:revm-state",
"dep:alloy-primitives",
"dep:alloy-sol-types",
"dep:hex",
"dep:tempfile",
"linera-base/revm",
]
fs = ["tokio/fs"]
metrics = ["prometheus", "linera-views/metrics"]
wasmer = ["dep:wasmer", "wasmer/enable-serde", "linera-witty/wasmer"]
wasmtime = ["dep:wasmtime", "linera-witty/wasmtime"]
web = ["linera-base/web", "linera-views/web", "js-sys", "web-thread-select/web"]
[dependencies]
allocative.workspace = true
alloy-primitives = { workspace = true, optional = true }
alloy-sol-types = { workspace = true, optional = true }
anyhow.workspace = true
async-graphql.workspace = true
async-trait.workspace = true
bcs.workspace = true
cfg-if.workspace = true
clap.workspace = true
custom_debug_derive.workspace = true
derive_more = { workspace = true, features = ["display"] }
dyn-clone.workspace = true
futures.workspace = true
hex = { workspace = true, optional = true }
js-sys = { workspace = true, optional = true }
linera-base = { workspace = true, features = ["reqwest"] }
linera-views.workspace = true
linera-witty = { workspace = true, features = ["log", "macros"] }
lru.workspace = true
oneshot.workspace = true
papaya.workspace = true
prometheus = { workspace = true, optional = true }
proptest = { workspace = true, optional = true }
reqwest = { workspace = true, features = ["blocking", "json", "stream"] }
revm = { workspace = true, optional = true, default-features = false, features = [
"std",
"kzg-rs",
"secp256k1",
"portable",
"serde",
] }
revm-context = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
revm-context-interface = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
revm-database = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
revm-handler = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
revm-interpreter = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
revm-primitives = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
revm-state = { workspace = true, optional = true, default-features = false, features = [
"serde",
] }
serde.workspace = true
serde_bytes.workspace = true
serde_json.workspace = true
strum.workspace = true
tempfile = { workspace = true, optional = true }
thiserror.workspace = true
tracing = { workspace = true, features = ["log"] }
url.workspace = true
wasm-instrument = { workspace = true, features = ["sign_ext"] }
wasmtime = { workspace = true, optional = true }
web-thread-pool.workspace = true
web-thread-select.workspace = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { workspace = true, features = ["rt-multi-thread"] }
wasmer = { workspace = true, optional = true, features = [
"cranelift",
"singlepass",
] }
wasmer-compiler-singlepass.workspace = true
[target.'cfg(target_arch = "wasm32")'.dependencies]
tokio = { workspace = true, features = ["rt"] }
wasmer = { workspace = true, optional = true, features = ["js-default"] }
[dev-dependencies]
anyhow.workspace = true
assert_matches.workspace = true
bcs.workspace = true
linera-base = { workspace = true, features = ["test"] }
linera-execution = { path = ".", default-features = false, features = [
"fs",
"test",
] }
linera-witty = { workspace = true, features = ["log", "macros", "test"] }
proptest.workspace = true
test-case.workspace = true
test-log = { workspace = true, features = ["trace"] }
test-strategy.workspace = true
tokio = { workspace = true, features = ["rt", "test-util"] }
tracing-subscriber = { workspace = true, features = ["fmt"] }
wasmer = { workspace = true, features = ["singlepass", "wat"] }
[build-dependencies]
cfg_aliases.workspace = true
[package.metadata.cargo-machete]
ignored = ["serde_bytes"]
[[bin]]
name = "wit-generator"
path = "src/bin/wit_generator.rs"
required-features = ["wasmer"]