[package] name = "cosmwasm-vm" version.workspace = true authors = ["Ethan Frey "] edition = "2021" description = "VM bindings to run cosmwams contracts" repository = "https://github.com/CosmWasm/cosmwasm/tree/main/packages/vm" license = "Apache-2.0" [package.metadata.release] pre-release-hook = ["../../devtools/release_checks.sh"] pre-release-replacements = [ { file = "../../CHANGELOG.md", search = "## \\[Unreleased\\]", replace = "## [{{version}}] - {{date}}", exactly = 1 }, { file = "../../CHANGELOG.md", search = "(U|u)nreleased", replace = "{{version}}" }, { file = "../../CHANGELOG.md", search = "", replace = "\n\n## [Unreleased]", exactly = 1 }, { file = "../../CHANGELOG.md", search = "\n", replace = "\n\n[unreleased]: https://github.com/CosmWasm/cosmwasm/compare/{{tag_name}}...HEAD", exactly = 1 }, { file = "../../CHANGELOG.md", search = "\\.\\.\\.HEAD", replace = "...{{tag_name}}", exactly = 1 }, ] [features] default = ["iterator", "staking"] # iterator allows us to iterate over all DB items in a given range # this must be enabled to support cosmwasm contracts compiled with the 'iterator' feature # optional as some merkle stores (like tries) don't support this # given Ethereum 1.0, 2.0, Substrate, and other major projects use Tries # we keep this optional, to allow possible future integration (or different Cosmos Backends) iterator = ["cosmwasm-std/iterator"] staking = ["cosmwasm-std/staking"] # this enables all stargate-related functionality, including the ibc entry points stargate = ["cosmwasm-std/stargate"] # For heap profiling. Only used in the "heap_profiling" example. dhat-heap = ["dep:dhat"] # Legacy no-op feature. This is kept for compatibility with older contracts. # Delete this with the next major release. cranelift = [] [lib] # See https://bheisler.github.io/criterion.rs/book/faq.html#cargo-bench-gives-unrecognized-option-errors-for-valid-command-line-options bench = false [dependencies] bytes = "1.4.0" # need a higher version than the one required by Wasmer for the Bytes -> Vec implementation clru = "0.6.1" crc32fast = "1.3.2" bech32 = "0.11.0" blake2 = "0.10.6" # Uses the path when built locally; uses the given version from crates.io when published cosmwasm-core = { version = "2.2.0-rc.3", path = "../core" } cosmwasm-std = { version = "2.2.0-rc.3", path = "../std", default-features = false, features = [ "std", ] } cosmwasm-crypto = { version = "2.2.0-rc.3", path = "../crypto" } cosmwasm-vm-derive = { version = "2.2.0-rc.3", path = "../vm-derive" } derivative = "2" hex = "0.4" rand_core = { version = "0.6", features = ["getrandom"] } schemars = { workspace = true } serde = { workspace = true } serde_json = "1.0.40" sha2 = "0.10.3" thiserror = "1.0.26" wasmer = { version = "=4.3.7", default-features = false, features = [ "singlepass", ] } wasmer-middlewares = "=4.3.7" wasmer-types = "=4.3.7" strum = { version = "0.26.2", default-features = false, features = ["derive"] } # For heap profiling. Only used in the "heap_profiling" example. This has to be a non-dev dependency # because cargo currently does not support optional dev-dependencies. dhat = { version = "0.3.3", optional = true } # Dependencies that we do not use ourself. We add those entries # to bump the min version of them. tracing = "0.1.32" # Wasmer git/local (used for quick local debugging or patching) # wasmer = { git = "https://github.com/wasmerio/wasmer", rev = "877ce1f7c44fad853c", default-features = false, features = ["cranelift", "singlepass"] } # wasmer-middlewares = { git = "https://github.com/wasmerio/wasmer", rev = "877ce1f7c44fad853c" } # wasmer = { path = "../../../wasmer/lib/api", default-features = false, features = ["cranelift", "singlepass"] } # wasmer-middlewares = { path = "../../../wasmer/lib/middlewares" } [dev-dependencies] criterion = { version = "0.5.1", features = ["html_reports"] } glob = "0.3.1" hex-literal = "0.4.1" rand = "0.8" tempfile = "3.1.0" wat = "1.0" wasm-encoder = "0.205.0" clap = "4" leb128 = "0.2" target-lexicon = "0.12" time = { version = "0.3.28", features = ["formatting"] } [[bench]] name = "main" harness = false [[example]] name = "heap_profiling" path = "examples/heap_profiling.rs" [profile.release] debug = 1