[package]
name = "cairo-vm"
description = "Blazing fast Cairo interpreter"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
readme.workspace = true
keywords.workspace = true
[features]
default = ["std"]
std = [
"serde_json/std",
"bincode/std",
"anyhow/std",
"starknet-types-core/std",
"starknet-crypto/std",
"dep:num-prime",
"thiserror-no-std/std",
"dep:zip",
]
cairo-1-hints = [
"dep:cairo-lang-starknet",
"dep:cairo-lang-casm",
"dep:cairo-lang-starknet-classes",
"dep:ark-ff",
"dep:ark-std",
]
tracer = []
mod_builtin = []
test_utils = ["std", "dep:arbitrary", "starknet-types-core/arbitrary", "starknet-types-core/std"]
extensive_hints = []
[dependencies]
zip = {version = "0.6.6", optional = true }
num-bigint = { workspace = true }
rand = { workspace = true }
num-traits = { workspace = true }
num-integer = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
hex = { workspace = true }
bincode = { workspace = true }
starknet-crypto = { workspace = true }
sha3 = { workspace = true }
lazy_static = { workspace = true }
nom = { workspace = true }
sha2 = { workspace = true }
generic-array = { workspace = true }
keccak = { workspace = true }
hashbrown = { workspace = true }
anyhow = { workspace = true }
thiserror-no-std = { workspace = true }
starknet-types-core = { version = "0.1.2", default-features = false, features = ["serde", "curve", "num-traits", "hash"] }
rust_decimal = { version = "1.35.0", default-features = false }
num-prime = { version = "0.4.3", features = ["big-int"], optional = true }
bitvec = { workspace = true }
cairo-lang-starknet = { workspace = true, optional = true }
cairo-lang-starknet-classes = { workspace = true, optional = true }
cairo-lang-casm = { workspace = true, optional = true }
ark-ff = { workspace = true, optional = true }
ark-std = { workspace = true, optional = true }
arbitrary = { workspace = true, features = ["derive"], optional = true }
clap = { version = "4.3.10", features = ["derive"], optional = true}
[dev-dependencies]
assert_matches = "1.5.0"
rstest = { version = "0.17.0", default-features = false }
num-prime = { version = "0.4.3", features = ["big-int"] }
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
wasm-bindgen-test = "0.3.34"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
iai-callgrind = "0.3.1"
criterion = { version = "0.5.1", features = ["html_reports"] }
proptest = "1.0.0"
mimalloc.workspace = true
[[bench]]
path = "../bench/iai_benchmark.rs"
name = "iai_benchmark"
harness = false
[[bench]]
path = "../bench/criterion_benchmark.rs"
name = "criterion_benchmark"
harness = false
[[example]]
name = "custom_hint"
path = "../examples/custom_hint/src/main.rs"
required-features = ["std"]