From c7d9414bf281c9d957ed728f9c6b95a87bff74e0 Mon Sep 17 00:00:00 2001 From: parazyd Date: Tue, 25 Feb 2025 16:22:56 +0100 Subject: [PATCH] runtime: Port to wasmer-6.0 --- Cargo.lock | 232 +++++++++++--------------------------- Cargo.toml | 6 +- src/runtime/vm_runtime.rs | 4 +- 3 files changed, 71 insertions(+), 171 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c02b69432df5..79a6b1394e69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,7 +102,7 @@ dependencies = [ "cfg-if 1.0.0", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -271,9 +271,6 @@ name = "arbitrary" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" -dependencies = [ - "derive_arbitrary", -] [[package]] name = "arg" @@ -1156,27 +1153,6 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.12+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ebc2f1a417f01e1da30ef264ee86ae31d2dcd2d603ea283d3c244a883ca2a9" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "camino" version = "1.1.9" @@ -1738,21 +1714,6 @@ version = "0.110.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56b08621c00321efcfa3eee6a3179adc009e21ea8d24ca7adc3c326184bc3f48" -[[package]] -name = "crc" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "crc32fast" version = "1.4.2" @@ -2495,12 +2456,6 @@ dependencies = [ "url", ] -[[package]] -name = "deflate64" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" - [[package]] name = "der" version = "0.7.9" @@ -2578,17 +2533,6 @@ dependencies = [ "void", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - [[package]] name = "derive_builder" version = "0.9.0" @@ -4576,6 +4520,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "libunwind" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6639b70a7ce854b79c70d7e83f16b5dc0137cc914f3d7d03803b513ecc67ac" + [[package]] name = "libz-sys" version = "1.1.21" @@ -4638,12 +4588,6 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "lockfree-object-pool" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" - [[package]] name = "log" version = "0.4.26" @@ -4654,16 +4598,6 @@ dependencies = [ "value-bag", ] -[[package]] -name = "lzma-rs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" -dependencies = [ - "byteorder", - "crc", -] - [[package]] name = "lzma-sys" version = "0.1.20" @@ -4684,6 +4618,17 @@ dependencies = [ "libc", ] +[[package]] +name = "macho-unwind-info" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4bdc8b0ce69932332cf76d24af69c3a155242af95c226b2ab6c2e371ed1149" +dependencies = [ + "thiserror 2.0.11", + "zerocopy 0.8.20", + "zerocopy-derive 0.8.20", +] + [[package]] name = "matchers" version = "0.1.0" @@ -5374,16 +5319,6 @@ dependencies = [ "rustc_version 0.4.1", ] -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac 0.12.1", -] - [[package]] name = "pem" version = "3.0.5" @@ -5677,7 +5612,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -9375,17 +9310,19 @@ dependencies = [ [[package]] name = "wasmer" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14e31f8a2e0568af0f661825a70f1762098d1c5b0552c4d7205a3e57badf3ae6" +checksum = "f1ae107044759408d9720bfa858590ec4c859dccfbd8746f11336cfe2c306786" dependencies = [ "bindgen 0.70.1", "bytes 1.10.0", "cfg-if 1.0.0", "cmake", - "indexmap 1.9.3", + "derive_more 1.0.0", + "indexmap 2.7.1", "js-sys", "more-asserts", + "paste", "rustc-demangle", "serde", "serde-wasm-bindgen", @@ -9398,29 +9335,29 @@ dependencies = [ "wasm-bindgen", "wasmer-compiler", "wasmer-compiler-cranelift", + "wasmer-compiler-singlepass", "wasmer-derive", "wasmer-types", "wasmer-vm", + "wasmparser 0.224.1", "wat", "windows-sys 0.59.0", - "xz", - "zip", ] [[package]] name = "wasmer-compiler" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a032262211c8323c9ddb8226e2ecfa410e1e1ba8149c905510111b981ffb5aa" +checksum = "532c1437cce4be2d170fca0b6af78d29b0755dcdeca966a19afcebbe32a1193d" dependencies = [ "backtrace", "bytes 1.10.0", "cfg-if 1.0.0", "enum-iterator", "enumset", - "lazy_static", "leb128", "libc", + "macho-unwind-info", "memmap2 0.6.2", "more-asserts", "object 0.32.2", @@ -9433,16 +9370,16 @@ dependencies = [ "thiserror 1.0.69", "wasmer-types", "wasmer-vm", - "wasmparser 0.216.1", + "wasmparser 0.224.1", "windows-sys 0.59.0", "xxhash-rust", ] [[package]] name = "wasmer-compiler-cranelift" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c919ade1140a342a778eeeb811231ce65c1735e309c0876154f8a4735da6452" +checksum = "2add307a17348c84ae28e82033843d96d712fd2285a22007ff6623fed9bfdd4c" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -9460,16 +9397,15 @@ dependencies = [ [[package]] name = "wasmer-compiler-singlepass" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5abfef88ceced02d034675f67f318d2ac6bf79c052a3367aa49b9c4c45de73e2" +checksum = "6d973d1866d96c39da89a15249d3edc5854a6dd2f9a20dd35102f836d52766c2" dependencies = [ "byteorder", "dynasm", "dynasmrt", "enumset", "gimli 0.28.1", - "lazy_static", "more-asserts", "rayon", "smallvec", @@ -9479,9 +9415,9 @@ dependencies = [ [[package]] name = "wasmer-derive" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd49fd1afd7c5dd0aa36d91f7e75f5b55331725a1038ca359c6c420d33844313" +checksum = "08ecee999807b8e3e0d1ac8c77efdce1744accc4d1d6af9bf4c8d1ae690892f5" dependencies = [ "proc-macro-error2", "proc-macro2", @@ -9491,9 +9427,9 @@ dependencies = [ [[package]] name = "wasmer-middlewares" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5842f2ec3addfb93f97aa476308aaf6c99e76c58bb64801a7bde3c8313d63586" +checksum = "4bfed325d425669ea5db1d319bbe891490ad662cfe2c7041cd09fe8ec5ed0c0e" dependencies = [ "wasmer", "wasmer-types", @@ -9502,9 +9438,9 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1acd6dc9529b216159b66b082c574e5dbaf1c188e75b007f947d6d06c64a82" +checksum = "cbb525cd386f099bbe506c785469096e06b3d22ea815d51524236dac90b90fa9" dependencies = [ "bytecheck 0.6.12", "enum-iterator", @@ -9522,9 +9458,9 @@ dependencies = [ [[package]] name = "wasmer-vm" -version = "5.0.5-rc1" +version = "6.0.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabeac4f84113353e7e1711dd095d4b47020fd705905c4b084b07f4be1413eb7" +checksum = "2d9f13c58deb54b2b340a7dd7d4b354335424e5ac7885b6ae82c0d0d637c115a" dependencies = [ "backtrace", "cc", @@ -9535,8 +9471,8 @@ dependencies = [ "enum-iterator", "fnv", "indexmap 2.7.1", - "lazy_static", "libc", + "libunwind", "mach2", "memoffset", "more-asserts", @@ -9549,15 +9485,11 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.216.1" +version = "0.224.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc7c63191ae61c70befbe6045b9be65ef2082fa89421a386ae172cb1e08e92d" +checksum = "04f17a5917c2ddd3819e84c661fae0d6ba29d7b9c1f0e96c708c65a9c4188e11" dependencies = [ - "ahash", "bitflags 2.8.0", - "hashbrown 0.14.5", - "indexmap 2.7.1", - "semver 1.0.25", ] [[package]] @@ -10014,15 +9946,6 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" -[[package]] -name = "xz" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c887690ff2a2e233e8e49633461521f98ec57fbff9d59a884c9a4f04ec1da34" -dependencies = [ - "xz2", -] - [[package]] name = "xz2" version = "0.1.7" @@ -10083,7 +10006,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde3bb8c68a8f3f1ed4ac9221aad6b10cece3e60a8e2ea54a6a2dec806d0084c" +dependencies = [ + "zerocopy-derive 0.8.20", ] [[package]] @@ -10097,6 +10029,17 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "zerofrom" version = "0.1.5" @@ -10160,35 +10103,6 @@ dependencies = [ "syn 2.0.98", ] -[[package]] -name = "zip" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" -dependencies = [ - "aes 0.8.4", - "arbitrary", - "bzip2", - "constant_time_eq 0.3.1", - "crc32fast", - "crossbeam-utils", - "deflate64", - "displaydoc", - "flate2", - "hmac 0.12.1", - "indexmap 2.7.1", - "lzma-rs", - "memchr", - "pbkdf2", - "rand 0.8.5", - "sha1 0.10.6", - "thiserror 2.0.11", - "time 0.3.37", - "zeroize", - "zopfli", - "zstd", -] - [[package]] name = "zkas" version = "0.4.1" @@ -10197,20 +10111,6 @@ dependencies = [ "darkfi", ] -[[package]] -name = "zopfli" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" -dependencies = [ - "bumpalo", - "crc32fast", - "lockfree-object-pool", - "log", - "once_cell", - "simd-adler32", -] - [[package]] name = "zstd" version = "0.13.3" diff --git a/Cargo.toml b/Cargo.toml index 7af5f4bf5505..eaebd2447a84 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -118,9 +118,9 @@ halo2_gadgets = {version = "0.3.1", features = ["circuit-params"], optional = tr # Smart contract runtime darkfi-sdk = {path = "src/sdk", optional = true} -wasmer = {version = "5.0.5-rc1", optional = true} -wasmer-compiler-singlepass = {version = "5.0.5-rc1", optional = true} -wasmer-middlewares = {version = "5.0.5-rc1", optional = true} +wasmer = {version = "6.0.0-alpha.1", features = ["singlepass"], optional = true} +wasmer-compiler-singlepass = {version = "6.0.0-alpha.1", optional = true} +wasmer-middlewares = {version = "6.0.0-alpha.1", optional = true} # Blockchain store sled-overlay = {version = "0.1.6", optional = true} diff --git a/src/runtime/vm_runtime.rs b/src/runtime/vm_runtime.rs index 883096c6ee69..7971e468356c 100644 --- a/src/runtime/vm_runtime.rs +++ b/src/runtime/vm_runtime.rs @@ -25,8 +25,8 @@ use darkfi_sdk::{crypto::ContractId, tx::TransactionHash, wasm, AsHex}; use darkfi_serial::serialize; use log::{debug, error, info}; use wasmer::{ - imports, wasmparser::Operator, AsStoreMut, AsStoreRef, CompilerConfig, Function, FunctionEnv, - Instance, Memory, MemoryView, Module, Pages, Store, Value, WASM_PAGE_SIZE, + imports, sys::CompilerConfig, wasmparser::Operator, AsStoreMut, AsStoreRef, Function, + FunctionEnv, Instance, Memory, MemoryView, Module, Pages, Store, Value, WASM_PAGE_SIZE, }; use wasmer_compiler_singlepass::Singlepass; use wasmer_middlewares::{