Memory access due to code generation flaw in Cranelift module
Description
Cranelift is an open-source code generator maintained by Bytecode Alliance. It translates a target-independent intermediate representation into executable machine code. There is a bug in 0.73 of the Cranelift x64 backend that can create a scenario that could result in a potential sandbox escape in a Wasm program. This bug was introduced in the new backend on 2020-09-08 and first included in a release on 2020-09-30, but the new backend was not the default prior to 0.73. The recently-released version 0.73 with default settings, and prior versions with an explicit build flag to select the new backend, are vulnerable. The bug in question performs a sign-extend instead of a zero-extend on a value loaded from the stack, under a specific set of circumstances. If those circumstances occur, the bug could allow access to memory addresses upto 2GiB before the start of the Wasm program heap. If the heap bound is larger than 2GiB, then it would be possible to read memory from a computable range dependent on the size of the heaps bound. The impact of this bug is highly dependent on heap implementation, specifically: * if the heap has bounds checks, and * does not rely exclusively on guard pages, and * the heap bound is 2GiB or smaller * then this bug cannot be used to reach memory from another Wasm program heap. The impact of the vulnerability is mitigated if there is no memory mapped in the range accessible using this bug, for example, if there is a 2 GiB guard region before the Wasm program heap. The bug in question performs a sign-extend instead of a zero-extend on a value loaded from the stack, when the register allocator reloads a spilled integer value narrower than 64 bits. This interacts poorly with another optimization: the instruction selector elides a 32-to-64-bit zero-extend operator when we know that an instruction producing a 32-bit value actually zeros the upper 32 bits of its destination register. Hence, we rely on these zeroed bits, but the type of the value is still i32, and the spill/reload reconstitutes those bits as the sign extension of the i32’s MSB. The issue would thus occur when: * An i32 value in a Wasm program is greater than or equal to 0x8000_0000; * The value is spilled and reloaded by the register allocator due to high register pressure in the program between the value’s definition and its use; * The value is produced by an instruction that we know to be “special” in that it zeroes the upper 32 bits of its destination: add, sub, mul, and, or; * The value is then zero-extended to 64 bits in the Wasm program; * The resulting 64-bit value is used. Under these circumstances there is a potential sandbox escape when the i32 value is a pointer. The usual code emitted for heap accesses zero-extends the Wasm heap address, adds it to a 64-bit heap base, and accesses the resulting address. If the zero-extend becomes a sign-extend, the program could reach backward and access memory up to 2GiB before the start of its heap. In addition to assessing the nature of the code generation bug in Cranelift, we have also determined that under specific circumstances, both Lucet and Wasmtime using this version of Cranelift may be exploitable. See referenced GitHub Advisory for more details.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
cranelift-codegencrates.io | < 0.73.1 | 0.73.1 |
wasmtimePyPI | < 0.27.0 | 0.27.0 |
Affected products
1- Range: <= 0.73.0
Patches
195559c01aaa7Merge pull request from GHSA-hpqh-2wqx-7qp5
60 files changed · +372 −264
Cargo.lock+51 −51 modified@@ -541,22 +541,22 @@ checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" [[package]] name = "cranelift" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "cranelift-frontend", ] [[package]] name = "cranelift-bforest" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.73.0" +version = "0.74.0" dependencies = [ "bincode", "cranelift-bforest", @@ -580,22 +580,22 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", ] [[package]] name = "cranelift-codegen-shared" -version = "0.73.0" +version = "0.74.0" dependencies = [ "serde", ] [[package]] name = "cranelift-entity" -version = "0.73.0" +version = "0.74.0" dependencies = [ "serde", ] @@ -623,7 +623,7 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "hashbrown", @@ -634,7 +634,7 @@ dependencies = [ [[package]] name = "cranelift-interpreter" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -647,7 +647,7 @@ dependencies = [ [[package]] name = "cranelift-jit" -version = "0.73.0" +version = "0.74.0" dependencies = [ "anyhow", "cranelift", @@ -666,7 +666,7 @@ dependencies = [ [[package]] name = "cranelift-module" -version = "0.73.0" +version = "0.74.0" dependencies = [ "anyhow", "cranelift-codegen", @@ -677,15 +677,15 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "target-lexicon", ] [[package]] name = "cranelift-object" -version = "0.73.0" +version = "0.74.0" dependencies = [ "anyhow", "cranelift-codegen", @@ -699,15 +699,15 @@ dependencies = [ [[package]] name = "cranelift-preopt" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "cranelift-entity", ] [[package]] name = "cranelift-reader" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "smallvec", @@ -716,7 +716,7 @@ dependencies = [ [[package]] name = "cranelift-serde" -version = "0.73.0" +version = "0.74.0" dependencies = [ "clap", "cranelift-codegen", @@ -764,7 +764,7 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.73.0" +version = "0.74.0" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1572,7 +1572,7 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "lightbeam" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "arrayvec", @@ -1957,7 +1957,7 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "peepmatic" -version = "0.73.0" +version = "0.74.0" dependencies = [ "anyhow", "peepmatic-automata", @@ -1972,7 +1972,7 @@ dependencies = [ [[package]] name = "peepmatic-automata" -version = "0.73.0" +version = "0.74.0" dependencies = [ "serde", ] @@ -1999,7 +1999,7 @@ dependencies = [ [[package]] name = "peepmatic-macro" -version = "0.73.0" +version = "0.74.0" dependencies = [ "proc-macro2", "quote", @@ -2008,7 +2008,7 @@ dependencies = [ [[package]] name = "peepmatic-runtime" -version = "0.73.0" +version = "0.74.0" dependencies = [ "bincode", "bumpalo", @@ -2024,7 +2024,7 @@ dependencies = [ [[package]] name = "peepmatic-souper" -version = "0.73.0" +version = "0.74.0" dependencies = [ "anyhow", "log", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "peepmatic-test-operator" -version = "0.73.0" +version = "0.74.0" dependencies = [ "peepmatic-traits", "serde", @@ -2057,7 +2057,7 @@ dependencies = [ [[package]] name = "peepmatic-traits" -version = "0.73.0" +version = "0.74.0" [[package]] name = "pem" @@ -3269,7 +3269,7 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasi-cap-std-sync" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "async-trait", @@ -3291,7 +3291,7 @@ dependencies = [ [[package]] name = "wasi-common" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "bitflags", @@ -3335,7 +3335,7 @@ dependencies = [ [[package]] name = "wasi-tokio" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "bitflags", @@ -3475,7 +3475,7 @@ dependencies = [ [[package]] name = "wasmtime" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "backtrace", @@ -3548,7 +3548,7 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "base64", @@ -3572,7 +3572,7 @@ dependencies = [ [[package]] name = "wasmtime-cli" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "criterion", @@ -3613,7 +3613,7 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.26.0" +version = "0.27.0" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -3626,7 +3626,7 @@ dependencies = [ [[package]] name = "wasmtime-debug" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "gimli", @@ -3640,7 +3640,7 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.26.0" +version = "0.27.0" dependencies = [ "cfg-if 1.0.0", "cranelift-codegen", @@ -3657,7 +3657,7 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "0.26.0" +version = "0.27.0" dependencies = [ "backtrace", "cc", @@ -3701,7 +3701,7 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.26.0" +version = "0.27.0" dependencies = [ "addr2line", "anyhow", @@ -3733,7 +3733,7 @@ dependencies = [ [[package]] name = "wasmtime-lightbeam" -version = "0.26.0" +version = "0.27.0" dependencies = [ "cranelift-codegen", "lightbeam", @@ -3743,7 +3743,7 @@ dependencies = [ [[package]] name = "wasmtime-obj" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "more-asserts", @@ -3755,7 +3755,7 @@ dependencies = [ [[package]] name = "wasmtime-profiling" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "cfg-if 1.0.0", @@ -3773,7 +3773,7 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "backtrace", @@ -3797,7 +3797,7 @@ dependencies = [ [[package]] name = "wasmtime-rust" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "wasmtime", @@ -3807,7 +3807,7 @@ dependencies = [ [[package]] name = "wasmtime-rust-macro" -version = "0.26.0" +version = "0.27.0" dependencies = [ "proc-macro2", "quote", @@ -3816,7 +3816,7 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "wasi-cap-std-sync", @@ -3829,7 +3829,7 @@ dependencies = [ [[package]] name = "wasmtime-wasi-crypto" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "wasi-crypto", @@ -3840,7 +3840,7 @@ dependencies = [ [[package]] name = "wasmtime-wasi-nn" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "log", @@ -3856,7 +3856,7 @@ dependencies = [ [[package]] name = "wasmtime-wast" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "wasmtime", @@ -3865,7 +3865,7 @@ dependencies = [ [[package]] name = "wasmtime-wiggle" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "proptest", @@ -3878,7 +3878,7 @@ dependencies = [ [[package]] name = "wasmtime-wiggle-macro" -version = "0.26.0" +version = "0.27.0" dependencies = [ "proc-macro2", "quote", @@ -3926,7 +3926,7 @@ dependencies = [ [[package]] name = "wiggle" -version = "0.26.0" +version = "0.27.0" dependencies = [ "async-trait", "bitflags", @@ -3940,14 +3940,14 @@ dependencies = [ [[package]] name = "wiggle-borrow" -version = "0.26.0" +version = "0.27.0" dependencies = [ "wiggle", ] [[package]] name = "wiggle-generate" -version = "0.26.0" +version = "0.27.0" dependencies = [ "anyhow", "heck", @@ -3960,7 +3960,7 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "0.26.0" +version = "0.27.0" dependencies = [ "proc-macro2", "quote",
Cargo.toml+11 −11 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-cli" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Command-line interface for Wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -22,16 +22,16 @@ doc = false [dependencies] # Enable all supported architectures by default. -wasmtime = { path = "crates/wasmtime", version = "0.26.0", default-features = false, features = ['cache'] } -wasmtime-cache = { path = "crates/cache", version = "0.26.0" } -wasmtime-debug = { path = "crates/debug", version = "0.26.0" } -wasmtime-environ = { path = "crates/environ", version = "0.26.0" } -wasmtime-jit = { path = "crates/jit", version = "0.26.0" } -wasmtime-obj = { path = "crates/obj", version = "0.26.0" } -wasmtime-wast = { path = "crates/wast", version = "0.26.0" } -wasmtime-wasi = { path = "crates/wasi", version = "0.26.0" } -wasmtime-wasi-crypto = { path = "crates/wasi-crypto", version = "0.26.0", optional = true } -wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "0.26.0", optional = true } +wasmtime = { path = "crates/wasmtime", version = "0.27.0", default-features = false, features = ['cache'] } +wasmtime-cache = { path = "crates/cache", version = "0.27.0" } +wasmtime-debug = { path = "crates/debug", version = "0.27.0" } +wasmtime-environ = { path = "crates/environ", version = "0.27.0" } +wasmtime-jit = { path = "crates/jit", version = "0.27.0" } +wasmtime-obj = { path = "crates/obj", version = "0.27.0" } +wasmtime-wast = { path = "crates/wast", version = "0.27.0" } +wasmtime-wasi = { path = "crates/wasi", version = "0.27.0" } +wasmtime-wasi-crypto = { path = "crates/wasi-crypto", version = "0.27.0", optional = true } +wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "0.27.0", optional = true } structopt = { version = "0.3.5", features = ["color", "suggestions"] } object = { version = "0.24.0", default-features = false, features = ["write"] } anyhow = "1.0.19"
cranelift/bforest/Cargo.toml+2 −2 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-bforest" -version = "0.73.0" +version = "0.74.0" description = "A forest of B+-trees" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-bforest" @@ -12,7 +12,7 @@ keywords = ["btree", "forest", "set", "map"] edition = "2018" [dependencies] -cranelift-entity = { path = "../entity", version = "0.73.0", default-features = false } +cranelift-entity = { path = "../entity", version = "0.74.0", default-features = false } [badges] maintenance = { status = "experimental" }
cranelift/Cargo.toml+14 −14 modified@@ -15,27 +15,27 @@ path = "src/clif-util.rs" [dependencies] cfg-if = "1.0" -cranelift-codegen = { path = "codegen", version = "0.73.0" } -cranelift-entity = { path = "entity", version = "0.73.0" } -cranelift-interpreter = { path = "interpreter", version = "0.73.0" } -cranelift-reader = { path = "reader", version = "0.73.0" } -cranelift-frontend = { path = "frontend", version = "0.73.0" } -cranelift-serde = { path = "serde", version = "0.73.0", optional = true } -cranelift-wasm = { path = "wasm", version = "0.73.0", optional = true } -cranelift-native = { path = "native", version = "0.73.0" } +cranelift-codegen = { path = "codegen", version = "0.74.0" } +cranelift-entity = { path = "entity", version = "0.74.0" } +cranelift-interpreter = { path = "interpreter", version = "0.74.0" } +cranelift-reader = { path = "reader", version = "0.74.0" } +cranelift-frontend = { path = "frontend", version = "0.74.0" } +cranelift-serde = { path = "serde", version = "0.74.0", optional = true } +cranelift-wasm = { path = "wasm", version = "0.74.0", optional = true } +cranelift-native = { path = "native", version = "0.74.0" } cranelift-filetests = { path = "filetests", version = "0.73.0" } -cranelift-module = { path = "module", version = "0.73.0" } -cranelift-object = { path = "object", version = "0.73.0" } -cranelift-jit = { path = "jit", version = "0.73.0" } -cranelift-preopt = { path = "preopt", version = "0.73.0" } -cranelift = { path = "umbrella", version = "0.73.0" } +cranelift-module = { path = "module", version = "0.74.0" } +cranelift-object = { path = "object", version = "0.74.0" } +cranelift-jit = { path = "jit", version = "0.74.0" } +cranelift-preopt = { path = "preopt", version = "0.74.0" } +cranelift = { path = "umbrella", version = "0.74.0" } filecheck = "0.5.0" log = "0.4.8" termcolor = "1.1.2" capstone = { version = "0.7.0", optional = true } wat = { version = "1.0.36", optional = true } target-lexicon = { version = "0.12", features = ["std"] } -peepmatic-souper = { path = "./peepmatic/crates/souper", version = "0.73.0", optional = true } +peepmatic-souper = { path = "./peepmatic/crates/souper", version = "0.74.0", optional = true } pretty_env_logger = "0.4.0" rayon = { version = "1", optional = true } file-per-thread-logger = "0.1.2"
cranelift/codegen/Cargo.toml+8 −8 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-codegen" -version = "0.73.0" +version = "0.74.0" description = "Low-level code generator library" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-codegen" @@ -13,19 +13,19 @@ build = "build.rs" edition = "2018" [dependencies] -cranelift-codegen-shared = { path = "./shared", version = "0.73.0" } -cranelift-entity = { path = "../entity", version = "0.73.0" } -cranelift-bforest = { path = "../bforest", version = "0.73.0" } +cranelift-codegen-shared = { path = "./shared", version = "0.74.0" } +cranelift-entity = { path = "../entity", version = "0.74.0" } +cranelift-bforest = { path = "../bforest", version = "0.74.0" } hashbrown = { version = "0.9.1", optional = true } target-lexicon = "0.12" log = { version = "0.4.6", default-features = false } serde = { version = "1.0.94", features = ["derive"], optional = true } bincode = { version = "1.2.1", optional = true } gimli = { version = "0.24.0", default-features = false, features = ["write"], optional = true } smallvec = { version = "1.6.1" } -peepmatic = { path = "../peepmatic", optional = true, version = "0.73.0" } -peepmatic-traits = { path = "../peepmatic/crates/traits", optional = true, version = "0.73.0" } -peepmatic-runtime = { path = "../peepmatic/crates/runtime", optional = true, version = "0.73.0" } +peepmatic = { path = "../peepmatic", optional = true, version = "0.74.0" } +peepmatic-traits = { path = "../peepmatic/crates/traits", optional = true, version = "0.74.0" } +peepmatic-runtime = { path = "../peepmatic/crates/runtime", optional = true, version = "0.74.0" } regalloc = { version = "0.0.31" } souper-ir = { version = "2.1.0", optional = true } wast = { version = "35.0.0", optional = true } @@ -38,7 +38,7 @@ wast = { version = "35.0.0", optional = true } criterion = "0.3" [build-dependencies] -cranelift-codegen-meta = { path = "meta", version = "0.73.0" } +cranelift-codegen-meta = { path = "meta", version = "0.74.0" } [features] default = ["std", "unwind"]
cranelift/codegen/meta/Cargo.toml+3 −3 modified@@ -1,7 +1,7 @@ [package] name = "cranelift-codegen-meta" authors = ["The Cranelift Project Developers"] -version = "0.73.0" +version = "0.74.0" description = "Metaprogram for cranelift-codegen code generator library" license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wasmtime" @@ -13,8 +13,8 @@ edition = "2018" # rustdoc-args = [ "--document-private-items" ] [dependencies] -cranelift-codegen-shared = { path = "../shared", version = "0.73.0" } -cranelift-entity = { path = "../../entity", version = "0.73.0" } +cranelift-codegen-shared = { path = "../shared", version = "0.74.0" } +cranelift-entity = { path = "../../entity", version = "0.74.0" } [badges] maintenance = { status = "experimental" }
cranelift/codegen/shared/Cargo.toml+1 −1 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-codegen-shared" -version = "0.73.0" +version = "0.74.0" description = "For code shared between cranelift-codegen-meta and cranelift-codegen" license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wasmtime"
cranelift/codegen/src/isa/x64/abi.rs+6 −6 modified@@ -317,19 +317,19 @@ impl ABIMachineSpec for X64ABIMachineSpec { } fn gen_load_stack(mem: StackAMode, into_reg: Writable<Reg>, ty: Type) -> Self::I { - let ext_kind = match ty { + // For integer-typed values, we always load a full 64 bits (and we always spill a full 64 + // bits as well -- see `Inst::store()`). + let ty = match ty { types::B1 | types::B8 | types::I8 | types::B16 | types::I16 | types::B32 - | types::I32 => ExtKind::SignExtend, - types::B64 | types::I64 | types::R64 | types::F32 | types::F64 => ExtKind::None, - _ if ty.bytes() == 16 => ExtKind::None, - _ => panic!("load_stack({})", ty), + | types::I32 => types::I64, + _ => ty, }; - Inst::load(ty, mem, into_reg, ext_kind) + Inst::load(ty, mem, into_reg, ExtKind::None) } fn gen_store_stack(mem: StackAMode, from_reg: Reg, ty: Type) -> Self::I {
cranelift/codegen/src/isa/x64/inst/args.rs+1 −0 modified@@ -1038,6 +1038,7 @@ impl fmt::Display for Avx512Opcode { /// This defines the ways a value can be extended: either signed- or zero-extension, or none for /// types that are not extended. Contrast with [ExtMode], which defines the widths from and to which /// values can be extended. +#[allow(dead_code)] #[derive(Clone, PartialEq)] pub enum ExtKind { None,
cranelift/entity/Cargo.toml+1 −1 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-entity" -version = "0.73.0" +version = "0.74.0" description = "Data structures using entity references as mapping keys" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-entity"
cranelift/filetests/Cargo.toml+6 −6 modified@@ -10,12 +10,12 @@ publish = false edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", features = ["testing_hooks"] } -cranelift-frontend = { path = "../frontend", version = "0.73.0" } -cranelift-interpreter = { path = "../interpreter", version = "0.73.0" } -cranelift-native = { path = "../native", version = "0.73.0" } -cranelift-reader = { path = "../reader", version = "0.73.0" } -cranelift-preopt = { path = "../preopt", version = "0.73.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", features = ["testing_hooks"] } +cranelift-frontend = { path = "../frontend", version = "0.74.0" } +cranelift-interpreter = { path = "../interpreter", version = "0.74.0" } +cranelift-native = { path = "../native", version = "0.74.0" } +cranelift-reader = { path = "../reader", version = "0.74.0" } +cranelift-preopt = { path = "../preopt", version = "0.74.0" } file-per-thread-logger = "0.1.2" filecheck = "0.5.0" gimli = { version = "0.24.0", default-features = false, features = ["read"] }
cranelift/filetests/filetests/isa/x64/call-conv.clif+3 −3 modified@@ -102,7 +102,7 @@ block0( ; nextln: movq %r8, %r11 ; nextln: movq %r9, %r12 ; nextln: movq 16(%rbp), %r13 - ; nextln: movslq 24(%rbp), %r14 + ; nextln: movq 24(%rbp), %r14 ; nextln: movss 32(%rbp), %xmm8 ; nextln: movsd 40(%rbp), %xmm9 ; nextln: subq $$144, %rsp @@ -236,7 +236,7 @@ block0: ; nextln: virtual_sp_offset_adjust 16 ; nextln: lea 0(%rsp), %rdi ; nextln: call *%rsi - ; nextln: movslq 0(%rsp), %rsi + ; nextln: movq 0(%rsp), %rsi ; nextln: addq $$16, %rsp ; nextln: virtual_sp_offset_adjust -16 ; nextln: movq %rsi, %rdx @@ -282,7 +282,7 @@ block0: ; nextln: virtual_sp_offset_adjust 16 ; nextln: lea 0(%rsp), %rdi ; nextln: call *%rsi - ; nextln: movslq 0(%rsp), %rsi + ; nextln: movq 0(%rsp), %rsi ; nextln: addq $$16, %rsp ; nextln: virtual_sp_offset_adjust -16 ; nextln: movq %rdx, 0(%r12)
cranelift/filetests/filetests/isa/x64/spill-reload.clif+38 −0 added@@ -0,0 +1,38 @@ +test run +target x86_64 +feature "experimental_x64" + +function %f(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> i64 { +block0(v0: i32, v1: i32, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32, v7: i32, v8: i32, v9: i32, v10: i32, v11: i32, v12: i32, v13: i32, v14: i32, v15: i32, v16: i32, v17: i32, v18: i32, v19: i32): + v20 = iadd.i32 v0, v1 + v21 = iadd.i32 v2, v3 + v22 = iadd.i32 v4, v5 + v23 = iadd.i32 v6, v7 + v24 = iadd.i32 v8, v9 + v25 = iadd.i32 v10, v11 + v26 = iadd.i32 v12, v13 + v27 = iadd.i32 v14, v15 + v28 = iadd.i32 v16, v17 + v29 = iadd.i32 v18, v19 + + v30 = iadd.i32 v20, v21 + v31 = iadd.i32 v22, v23 + v32 = iadd.i32 v24, v25 + v33 = iadd.i32 v26, v27 + v34 = iadd.i32 v28, v29 + + v35 = iadd.i32 v30, v31 + v36 = iadd.i32 v32, v33 + v37 = iadd.i32 v35, v34 + v38 = iadd.i32 v36, v37 + ;; v38 should be zero (due to wrapping). + + v39 = iconst.i64 1 + v40 = uextend.i64 v0 ;; should be reloaded from a spillslot + v41 = uextend.i64 v38 + v42 = iadd.i64 v39, v40 + v43 = iadd.i64 v42, v41 + return v43 +} + +; run: %f(0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000) == 0x80000001
cranelift/frontend/Cargo.toml+2 −2 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-frontend" -version = "0.73.0" +version = "0.74.0" description = "Cranelift IR builder helper" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-frontend" @@ -11,7 +11,7 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false } target-lexicon = "0.12" log = { version = "0.4.6", default-features = false } hashbrown = { version = "0.9.1", optional = true }
cranelift/interpreter/Cargo.toml+5 −5 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-interpreter" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "Interpret Cranelift IR" repository = "https://github.com/bytecodealliance/wasmtime" @@ -11,15 +11,15 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", features = ["all-arch"] } -cranelift-entity = { path = "../entity", version = "0.73.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", features = ["all-arch"] } +cranelift-entity = { path = "../entity", version = "0.74.0" } log = { version = "0.4.8", default-features = false } smallvec = "1.6.1" thiserror = "1.0.15" [dev-dependencies] -cranelift-frontend = { path = "../frontend", version = "0.73.0" } -cranelift-reader = { path = "../reader", version = "0.73.0" } +cranelift-frontend = { path = "../frontend", version = "0.74.0" } +cranelift-reader = { path = "../reader", version = "0.74.0" } [badges] maintenance = { status = "experimental" }
cranelift/jit/Cargo.toml+8 −8 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-jit" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "A JIT library backed by Cranelift" repository = "https://github.com/bytecodealliance/wasmtime" @@ -10,10 +10,10 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-module = { path = "../module", version = "0.73.0" } -cranelift-native = { path = "../native", version = "0.73.0" } -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false, features = ["std"] } -cranelift-entity = { path = "../entity", version = "0.73.0" } +cranelift-module = { path = "../module", version = "0.74.0" } +cranelift-native = { path = "../native", version = "0.74.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false, features = ["std"] } +cranelift-entity = { path = "../entity", version = "0.74.0" } anyhow = "1.0" region = "2.2.0" libc = { version = "0.2.42" } @@ -29,9 +29,9 @@ selinux-fix = ['memmap2'] default = [] [dev-dependencies] -cranelift = { path = "../umbrella", version = "0.73.0" } -cranelift-frontend = { path = "../frontend", version = "0.73.0" } -cranelift-entity = { path = "../entity", version = "0.73.0" } +cranelift = { path = "../umbrella", version = "0.74.0" } +cranelift-frontend = { path = "../frontend", version = "0.74.0" } +cranelift-entity = { path = "../entity", version = "0.74.0" } [badges] maintenance = { status = "experimental" }
cranelift/module/Cargo.toml+3 −3 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-module" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "Support for linking functions and data with Cranelift" repository = "https://github.com/bytecodealliance/wasmtime" @@ -11,8 +11,8 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false } -cranelift-entity = { path = "../entity", version = "0.73.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false } +cranelift-entity = { path = "../entity", version = "0.74.0" } hashbrown = { version = "0.9.1", optional = true } log = { version = "0.4.6", default-features = false } anyhow = "1.0"
cranelift/native/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-native" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "Support for targeting the host with Cranelift" documentation = "https://docs.rs/cranelift-native" @@ -11,7 +11,7 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false } target-lexicon = "0.12" [features]
cranelift/object/Cargo.toml+5 −5 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-object" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "Emit Cranelift output to native object files with `object`" repository = "https://github.com/bytecodealliance/wasmtime" @@ -10,16 +10,16 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-module = { path = "../module", version = "0.73.0" } -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false, features = ["std"] } +cranelift-module = { path = "../module", version = "0.74.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false, features = ["std"] } object = { version = "0.24.0", default-features = false, features = ["write"] } target-lexicon = "0.12" anyhow = "1.0" log = { version = "0.4.6", default-features = false } [dev-dependencies] -cranelift-frontend = { path = "../frontend", version = "0.73.0" } -cranelift-entity = { path = "../entity", version = "0.73.0" } +cranelift-frontend = { path = "../frontend", version = "0.74.0" } +cranelift-entity = { path = "../entity", version = "0.74.0" } [badges] maintenance = { status = "experimental" }
cranelift/peepmatic/Cargo.toml+6 −6 modified@@ -1,6 +1,6 @@ [package] name = "peepmatic" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -10,13 +10,13 @@ description = "DSL and compiler for generating peephole optimizers" [dependencies] anyhow = "1.0.27" -peepmatic-automata = { version = "0.73.0", path = "crates/automata", features = ["dot"] } -peepmatic-macro = { version = "0.73.0", path = "crates/macro" } -peepmatic-runtime = { version = "0.73.0", path = "crates/runtime", features = ["construct"] } -peepmatic-traits = { version = "0.73.0", path = "crates/traits" } +peepmatic-automata = { version = "0.74.0", path = "crates/automata", features = ["dot"] } +peepmatic-macro = { version = "0.74.0", path = "crates/macro" } +peepmatic-runtime = { version = "0.74.0", path = "crates/runtime", features = ["construct"] } +peepmatic-traits = { version = "0.74.0", path = "crates/traits" } serde = { version = "1.0.105", features = ["derive"] } wast = "35.0.0" z3 = { version = "0.7.1", features = ["static-link-z3"] } [dev-dependencies] -peepmatic-test-operator = { version = "0.73.0", path = "crates/test-operator" } +peepmatic-test-operator = { version = "0.74.0", path = "crates/test-operator" }
cranelift/peepmatic/crates/automata/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "peepmatic-automata" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception"
cranelift/peepmatic/crates/macro/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "peepmatic-macro" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception"
cranelift/peepmatic/crates/runtime/Cargo.toml+4 −4 modified@@ -1,6 +1,6 @@ [package] name = "peepmatic-runtime" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -12,14 +12,14 @@ description = "Runtime support for peepmatic peephole optimizers" bincode = "1.2.1" bumpalo = "3.2.0" log = "0.4.8" -peepmatic-automata = { version = "0.73.0", path = "../automata", features = ["serde"] } -peepmatic-traits = { version = "0.73.0", path = "../traits" } +peepmatic-automata = { version = "0.74.0", path = "../automata", features = ["serde"] } +peepmatic-traits = { version = "0.74.0", path = "../traits" } serde = { version = "1.0.105", features = ["derive"] } thiserror = "1.0.15" wast = { version = "35.0.0", optional = true } [dev-dependencies] -peepmatic-test-operator = { version = "0.73.0", path = "../test-operator" } +peepmatic-test-operator = { version = "0.74.0", path = "../test-operator" } serde_test = "1.0.114" [features]
cranelift/peepmatic/crates/souper/Cargo.toml+3 −3 modified@@ -1,6 +1,6 @@ [package] name = "peepmatic-souper" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -14,6 +14,6 @@ souper-ir = { version = "2.1.0", features = ["parse"] } log = "0.4.8" [dev-dependencies] -peepmatic = { path = "../..", version = "0.73.0" } -peepmatic-test-operator = { version = "0.73.0", path = "../test-operator" } +peepmatic = { path = "../..", version = "0.74.0" } +peepmatic-test-operator = { version = "0.74.0", path = "../test-operator" } wast = "35.0.0"
cranelift/peepmatic/crates/test-operator/Cargo.toml+2 −2 modified@@ -2,13 +2,13 @@ name = "peepmatic-test-operator" description = "Operator for usage in peepmatic tests" license = "Apache-2.0 WITH LLVM-exception" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -peepmatic-traits = { version = "0.73.0", path = "../traits" } +peepmatic-traits = { version = "0.74.0", path = "../traits" } serde = { version = "1.0.105", features = ["derive"] } wast = "35.0.0"
cranelift/peepmatic/crates/traits/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "peepmatic-traits" -version = "0.73.0" +version = "0.74.0" authors = ["Nick Fitzgerald <fitzgen@gmail.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception"
cranelift/preopt/Cargo.toml+3 −3 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-preopt" -version = "0.73.0" +version = "0.74.0" description = "Support for optimizations in Cranelift" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-preopt" @@ -12,8 +12,8 @@ keywords = ["optimize", "compile", "compiler", "jit"] edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false } -cranelift-entity = { path = "../entity", version = "0.73.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false } +cranelift-entity = { path = "../entity", version = "0.74.0" } # This is commented out because it doesn't build on Rust 1.25.0, which # cranelift currently supports. # rustc_apfloat = { version = "0.1.2", default-features = false }
cranelift/reader/Cargo.toml+2 −2 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift-reader" -version = "0.73.0" +version = "0.74.0" description = "Cranelift textual IR reader" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-reader" @@ -10,7 +10,7 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0" } smallvec = "1.6.1" target-lexicon = "0.12"
cranelift/serde/Cargo.toml+3 −3 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-serde" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "Serializer/Deserializer for Cranelift IR" repository = "https://github.com/bytecodealliance/wasmtime" @@ -18,8 +18,8 @@ clap = "2.32.0" serde = "1.0.8" serde_derive = "1.0.75" serde_json = "1.0.26" -cranelift-codegen = { path = "../codegen", version = "0.73.0", features = ["enable-serde"] } -cranelift-reader = { path = "../reader", version = "0.73.0" } +cranelift-codegen = { path = "../codegen", version = "0.74.0", features = ["enable-serde"] } +cranelift-reader = { path = "../reader", version = "0.74.0" } [badges] maintenance = { status = "experimental" }
cranelift/umbrella/Cargo.toml+3 −3 modified@@ -1,7 +1,7 @@ [package] authors = ["The Cranelift Project Developers"] name = "cranelift" -version = "0.73.0" +version = "0.74.0" description = "Umbrella for commonly-used cranelift crates" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift" @@ -12,8 +12,8 @@ keywords = ["compile", "compiler", "jit"] edition = "2018" [dependencies] -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false } -cranelift-frontend = { path = "../frontend", version = "0.73.0", default-features = false } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false } +cranelift-frontend = { path = "../frontend", version = "0.74.0", default-features = false } [features] default = ["std"]
cranelift/wasm/Cargo.toml+5 −5 modified@@ -1,6 +1,6 @@ [package] name = "cranelift-wasm" -version = "0.73.0" +version = "0.74.0" authors = ["The Cranelift Project Developers"] description = "Translator from WebAssembly to Cranelift IR" documentation = "https://docs.rs/cranelift-wasm" @@ -13,9 +13,9 @@ edition = "2018" [dependencies] wasmparser = { version = "0.78", default-features = false } -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false } -cranelift-entity = { path = "../entity", version = "0.73.0" } -cranelift-frontend = { path = "../frontend", version = "0.73.0", default-features = false } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false } +cranelift-entity = { path = "../entity", version = "0.74.0" } +cranelift-frontend = { path = "../frontend", version = "0.74.0", default-features = false } hashbrown = { version = "0.9.1", optional = true } itertools = "0.10.0" log = { version = "0.4.6", default-features = false } @@ -27,7 +27,7 @@ thiserror = "1.0.4" wat = "1.0.37" target-lexicon = "0.12" # Enable the riscv feature for cranelift-codegen, as some tests require it -cranelift-codegen = { path = "../codegen", version = "0.73.0", default-features = false, features = ["riscv"] } +cranelift-codegen = { path = "../codegen", version = "0.74.0", default-features = false, features = ["riscv"] } [features] default = ["std"]
crates/cache/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-cache" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Support for automatic module caching with Wasmtime" license = "Apache-2.0 WITH LLVM-exception"
crates/cranelift/Cargo.toml+6 −6 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-cranelift" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Integration between Cranelift and Wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -12,10 +12,10 @@ readme = "README.md" edition = "2018" [dependencies] -wasmtime-environ = { path = "../environ", version = "0.26.0" } -cranelift-wasm = { path = "../../cranelift/wasm", version = "0.73.0" } -cranelift-codegen = { path = "../../cranelift/codegen", version = "0.73.0" } -cranelift-frontend = { path = "../../cranelift/frontend", version = "0.73.0" } -cranelift-entity = { path = "../../cranelift/entity", version = "0.73.0" } +wasmtime-environ = { path = "../environ", version = "0.27.0" } +cranelift-wasm = { path = "../../cranelift/wasm", version = "0.74.0" } +cranelift-codegen = { path = "../../cranelift/codegen", version = "0.74.0" } +cranelift-frontend = { path = "../../cranelift/frontend", version = "0.74.0" } +cranelift-entity = { path = "../../cranelift/entity", version = "0.74.0" } wasmparser = "0.78.0" target-lexicon = "0.12"
crates/debug/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-debug" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Debug utils for WebAsssembly code in Cranelift" license = "Apache-2.0 WITH LLVM-exception" @@ -15,7 +15,7 @@ edition = "2018" gimli = "0.24.0" wasmparser = "0.78" object = { version = "0.24.0", default-features = false, features = ["read_core", "elf", "write"] } -wasmtime-environ = { path = "../environ", version = "0.26.0" } +wasmtime-environ = { path = "../environ", version = "0.27.0" } target-lexicon = { version = "0.12.0", default-features = false } anyhow = "1.0" thiserror = "1.0.4"
crates/environ/Cargo.toml+4 −4 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-environ" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Standalone environment support for WebAsssembly code in Cranelift" license = "Apache-2.0 WITH LLVM-exception" @@ -12,9 +12,9 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../../cranelift/codegen", version = "0.73.0", features = ["enable-serde"] } -cranelift-entity = { path = "../../cranelift/entity", version = "0.73.0", features = ["enable-serde"] } -cranelift-wasm = { path = "../../cranelift/wasm", version = "0.73.0", features = ["enable-serde"] } +cranelift-codegen = { path = "../../cranelift/codegen", version = "0.74.0", features = ["enable-serde"] } +cranelift-entity = { path = "../../cranelift/entity", version = "0.74.0", features = ["enable-serde"] } +cranelift-wasm = { path = "../../cranelift/wasm", version = "0.74.0", features = ["enable-serde"] } wasmparser = "0.78" indexmap = { version = "1.0.2", features = ["serde-1"] } thiserror = "1.0.4"
crates/fiber/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-fiber" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Fiber support for Wasmtime" license = "Apache-2.0 WITH LLVM-exception"
crates/jit/Cargo.toml+13 −13 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-jit" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "JIT-style execution for WebAsssembly code in Cranelift" documentation = "https://docs.rs/wasmtime-jit" @@ -12,18 +12,18 @@ readme = "README.md" edition = "2018" [dependencies] -cranelift-codegen = { path = "../../cranelift/codegen", version = "0.73.0", features = ["enable-serde"] } -cranelift-entity = { path = "../../cranelift/entity", version = "0.73.0", features = ["enable-serde"] } -cranelift-wasm = { path = "../../cranelift/wasm", version = "0.73.0", features = ["enable-serde"] } -cranelift-native = { path = "../../cranelift/native", version = "0.73.0" } -cranelift-frontend = { path = "../../cranelift/frontend", version = "0.73.0" } -wasmtime-environ = { path = "../environ", version = "0.26.0" } -wasmtime-runtime = { path = "../runtime", version = "0.26.0" } -wasmtime-cranelift = { path = "../cranelift", version = "0.26.0" } -wasmtime-lightbeam = { path = "../lightbeam/wasmtime", version = "0.26.0", optional = true } -wasmtime-debug = { path = "../debug", version = "0.26.0" } -wasmtime-profiling = { path = "../profiling", version = "0.26.0" } -wasmtime-obj = { path = "../obj", version = "0.26.0" } +cranelift-codegen = { path = "../../cranelift/codegen", version = "0.74.0", features = ["enable-serde"] } +cranelift-entity = { path = "../../cranelift/entity", version = "0.74.0", features = ["enable-serde"] } +cranelift-wasm = { path = "../../cranelift/wasm", version = "0.74.0", features = ["enable-serde"] } +cranelift-native = { path = "../../cranelift/native", version = "0.74.0" } +cranelift-frontend = { path = "../../cranelift/frontend", version = "0.74.0" } +wasmtime-environ = { path = "../environ", version = "0.27.0" } +wasmtime-runtime = { path = "../runtime", version = "0.27.0" } +wasmtime-cranelift = { path = "../cranelift", version = "0.27.0" } +wasmtime-lightbeam = { path = "../lightbeam/wasmtime", version = "0.27.0", optional = true } +wasmtime-debug = { path = "../debug", version = "0.27.0" } +wasmtime-profiling = { path = "../profiling", version = "0.27.0" } +wasmtime-obj = { path = "../obj", version = "0.27.0" } rayon = { version = "1.0", optional = true } region = "2.2.0" thiserror = "1.0.4"
crates/lightbeam/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "lightbeam" -version = "0.26.0" +version = "0.27.0" authors = ["The Lightbeam Project Developers"] description = "An optimising one-pass streaming compiler for WebAssembly" license = "Apache-2.0 WITH LLVM-exception" @@ -13,7 +13,7 @@ edition = "2018" [dependencies] arrayvec = "0.5" capstone = "0.7.0" -cranelift-codegen = { path = "../../cranelift/codegen", version = "0.73.0" } +cranelift-codegen = { path = "../../cranelift/codegen", version = "0.74.0" } derive_more = "0.99" dynasm = "1.0.0" dynasmrt = "1.0.0"
crates/lightbeam/wasmtime/Cargo.toml+4 −4 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-lightbeam" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Integration between Lightbeam and Wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -12,7 +12,7 @@ readme = "README.md" edition = "2018" [dependencies] -lightbeam = { path = "..", version = "0.26.0" } +lightbeam = { path = "..", version = "0.27.0" } wasmparser = "0.78" -cranelift-codegen = { path = "../../../cranelift/codegen", version = "0.73.0" } -wasmtime-environ = { path = "../../environ", version = "0.26.0" } +cranelift-codegen = { path = "../../../cranelift/codegen", version = "0.74.0" } +wasmtime-environ = { path = "../../environ", version = "0.27.0" }
crates/misc/rust/Cargo.toml+4 −4 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-rust" -version = "0.26.0" +version = "0.27.0" authors = ["Alex Crichton <alex@alexcrichton.com>"] description = "Rust extension for Wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -15,9 +15,9 @@ test = false doctest = false [dependencies] -wasmtime-rust-macro = { path = "./macro", version = "0.26.0" } -wasmtime-wasi = { path = "../../wasi", version = "0.26.0" } -wasmtime = { path = "../../wasmtime", version = "0.26.0" } +wasmtime-rust-macro = { path = "./macro", version = "0.27.0" } +wasmtime-wasi = { path = "../../wasi", version = "0.27.0" } +wasmtime = { path = "../../wasmtime", version = "0.27.0" } anyhow = "1.0.19" [badges]
crates/misc/rust/macro/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-rust-macro" -version = "0.26.0" +version = "0.27.0" authors = ["Alex Crichton <alex@alexcrichton.com>"] description = "Macro support crate for wasmtime-rust" license = "Apache-2.0 WITH LLVM-exception"
crates/obj/Cargo.toml+3 −3 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-obj" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Native object file output for WebAsssembly code in Wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -12,11 +12,11 @@ edition = "2018" [dependencies] anyhow = "1.0" -wasmtime-environ = { path = "../environ", version = "0.26.0" } +wasmtime-environ = { path = "../environ", version = "0.27.0" } object = { version = "0.24.0", default-features = false, features = ["write"] } more-asserts = "0.2.1" target-lexicon = { version = "0.12.0", default-features = false } -wasmtime-debug = { path = "../debug", version = "0.26.0" } +wasmtime-debug = { path = "../debug", version = "0.27.0" } [badges] maintenance = { status = "experimental" }
crates/profiling/Cargo.toml+3 −3 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-profiling" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Runtime library support for Wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -19,8 +19,8 @@ libc = { version = "0.2.60", default-features = false } scroll = { version = "0.10.1", features = ["derive"], optional = true } serde = { version = "1.0.99", features = ["derive"] } target-lexicon = "0.12.0" -wasmtime-environ = { path = "../environ", version = "0.26.0" } -wasmtime-runtime = { path = "../runtime", version = "0.26.0" } +wasmtime-environ = { path = "../environ", version = "0.27.0" } +wasmtime-runtime = { path = "../runtime", version = "0.27.0" } ittapi-rs = { version = "0.1.5", optional = true } [dependencies.object]
crates/runtime/Cargo.toml+3 −3 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-runtime" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Runtime library support for Wasmtime" documentation = "https://docs.rs/wasmtime-runtime" @@ -12,8 +12,8 @@ readme = "README.md" edition = "2018" [dependencies] -wasmtime-environ = { path = "../environ", version = "0.26.0" } -wasmtime-fiber = { path = "../fiber", version = "0.26.0", optional = true } +wasmtime-environ = { path = "../environ", version = "0.27.0" } +wasmtime-fiber = { path = "../fiber", version = "0.27.0", optional = true } region = "2.1.0" libc = { version = "0.2.82", default-features = false } log = "0.4.8"
crates/test-programs/Cargo.toml+4 −4 modified@@ -11,10 +11,10 @@ license = "Apache-2.0 WITH LLVM-exception" cfg-if = "1.0" [dev-dependencies] -wasi-common = { path = "../wasi-common", version = "0.26.0" } -wasi-cap-std-sync = { path = "../wasi-common/cap-std-sync", version = "0.26.0" } -wasmtime = { path = "../wasmtime", version = "0.26.0" } -wasmtime-wasi = { path = "../wasi", version = "0.26.0", features = ["tokio"] } +wasi-common = { path = "../wasi-common", version = "0.27.0" } +wasi-cap-std-sync = { path = "../wasi-common/cap-std-sync", version = "0.27.0" } +wasmtime = { path = "../wasmtime", version = "0.27.0" } +wasmtime-wasi = { path = "../wasi", version = "0.27.0", features = ["tokio"] } target-lexicon = "0.12.0" pretty_env_logger = "0.4.0" tempfile = "3.1.0"
crates/wasi/Cargo.toml+7 −7 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-wasi" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "WASI implementation in Rust" license = "Apache-2.0 WITH LLVM-exception" @@ -13,12 +13,12 @@ include = ["src/**/*", "LICENSE", "build.rs"] build = "build.rs" [dependencies] -wasi-common = { path = "../wasi-common", version = "0.26.0" } -wasi-cap-std-sync = { path = "../wasi-common/cap-std-sync", version = "0.26.0", optional = true } -wasi-tokio = { path = "../wasi-common/tokio", version = "0.26.0", optional = true } -wiggle = { path = "../wiggle", default-features = false, version = "0.26.0" } -wasmtime-wiggle = { path = "../wiggle/wasmtime", default-features = false, version = "0.26.0" } -wasmtime = { path = "../wasmtime", default-features = false, version = "0.26.0" } +wasi-common = { path = "../wasi-common", version = "0.27.0" } +wasi-cap-std-sync = { path = "../wasi-common/cap-std-sync", version = "0.27.0", optional = true } +wasi-tokio = { path = "../wasi-common/tokio", version = "0.27.0", optional = true } +wiggle = { path = "../wiggle", default-features = false, version = "0.27.0" } +wasmtime-wiggle = { path = "../wiggle/wasmtime", default-features = false, version = "0.27.0" } +wasmtime = { path = "../wasmtime", default-features = false, version = "0.27.0" } anyhow = "1.0" [features]
crates/wasi-common/cap-std-sync/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wasi-cap-std-sync" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "WASI implementation in Rust" license = "Apache-2.0 WITH LLVM-exception" @@ -12,7 +12,7 @@ edition = "2018" include = ["src/**/*", "LICENSE" ] [dependencies] -wasi-common = { path = "../", version = "0.26.0" } +wasi-common = { path = "../", version = "0.27.0" } async-trait = "0.1" anyhow = "1.0" cap-std = "0.13.10"
crates/wasi-common/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wasi-common" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "WASI implementation in Rust" license = "Apache-2.0 WITH LLVM-exception" @@ -20,7 +20,7 @@ links = "wasi-common-19" [dependencies] anyhow = "1.0" thiserror = "1.0" -wiggle = { path = "../wiggle", default-features = false, version = "0.26.0" } +wiggle = { path = "../wiggle", default-features = false, version = "0.27.0" } tracing = "0.1.19" cap-std = "0.13" cap-rand = "0.13"
crates/wasi-common/tokio/Cargo.toml+4 −4 modified@@ -1,6 +1,6 @@ [package] name = "wasi-tokio" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "WASI implementation in Rust" license = "Apache-2.0 WITH LLVM-exception" @@ -12,9 +12,9 @@ edition = "2018" include = ["src/**/*", "LICENSE" ] [dependencies] -wasi-common = { path = "../", version = "0.26.0" } -wasi-cap-std-sync = { path = "../cap-std-sync", version = "0.26.0" } -wiggle = { path = "../../wiggle", version = "0.26.0" } +wasi-common = { path = "../", version = "0.27.0" } +wasi-cap-std-sync = { path = "../cap-std-sync", version = "0.27.0" } +wiggle = { path = "../../wiggle", version = "0.27.0" } tokio = { version = "1.5.0", features = [ "rt", "fs", "time", "io-util", "net", "io-std", "rt-multi-thread"] } cap-std = "0.13.7" cap-fs-ext = "0.13.7"
crates/wasi-crypto/Cargo.toml+4 −4 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-wasi-crypto" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Wasmtime implementation of the wasi-crypto API" documentation = "https://docs.rs/wasmtime-wasi-crypto" @@ -14,9 +14,9 @@ edition = "2018" [dependencies] anyhow = "1.0" wasi-crypto = { path = "spec/implementations/hostcalls/rust", version = "0.1.4" } -wasmtime = { path = "../wasmtime", version = "0.26.0", default-features = false } -wasmtime-wiggle = { path = "../wiggle/wasmtime", version = "0.26.0" } -wiggle = { path = "../wiggle", version = "0.26.0" } +wasmtime = { path = "../wasmtime", version = "0.27.0", default-features = false } +wasmtime-wiggle = { path = "../wiggle/wasmtime", version = "0.27.0" } +wiggle = { path = "../wiggle", version = "0.27.0" } [badges] maintenance = { status = "experimental" }
crates/wasi-nn/Cargo.toml+6 −6 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-wasi-nn" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "Wasmtime implementation of the wasi-nn API" documentation = "https://docs.rs/wasmtime-wasi-nn" @@ -15,11 +15,11 @@ edition = "2018" # These dependencies are necessary for the witx-generation macros to work: anyhow = "1.0" log = { version = "0.4", default-features = false } -wasmtime = { path = "../wasmtime", version = "0.26.0", default-features = false } -wasmtime-runtime = { path = "../runtime", version = "0.26.0" } -wasmtime-wiggle = { path = "../wiggle/wasmtime", version = "0.26.0" } -wasmtime-wasi = { path = "../wasi", version = "0.26.0" } -wiggle = { path = "../wiggle", version = "0.26.0" } +wasmtime = { path = "../wasmtime", version = "0.27.0", default-features = false } +wasmtime-runtime = { path = "../runtime", version = "0.27.0" } +wasmtime-wiggle = { path = "../wiggle/wasmtime", version = "0.27.0" } +wasmtime-wasi = { path = "../wasi", version = "0.27.0" } +wiggle = { path = "../wiggle", version = "0.27.0" } # These dependencies are necessary for the wasi-nn implementation: openvino = { version = "0.3.1", features = ["runtime-linking"] }
crates/wasmtime/Cargo.toml+7 −7 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "High-level API to expose the Wasmtime runtime" documentation = "https://docs.rs/wasmtime" @@ -14,12 +14,12 @@ edition = "2018" # rustdoc-args = ["--cfg", "nightlydoc"] [dependencies] -wasmtime-runtime = { path = "../runtime", version = "0.26.0" } -wasmtime-environ = { path = "../environ", version = "0.26.0" } -wasmtime-jit = { path = "../jit", version = "0.26.0" } -wasmtime-cache = { path = "../cache", version = "0.26.0", optional = true } -wasmtime-profiling = { path = "../profiling", version = "0.26.0" } -wasmtime-fiber = { path = "../fiber", version = "0.26.0", optional = true } +wasmtime-runtime = { path = "../runtime", version = "0.27.0" } +wasmtime-environ = { path = "../environ", version = "0.27.0" } +wasmtime-jit = { path = "../jit", version = "0.27.0" } +wasmtime-cache = { path = "../cache", version = "0.27.0", optional = true } +wasmtime-profiling = { path = "../profiling", version = "0.27.0" } +wasmtime-fiber = { path = "../fiber", version = "0.27.0", optional = true } target-lexicon = { version = "0.12.0", default-features = false } wasmparser = "0.78" anyhow = "1.0.19"
crates/wast/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-wast" -version = "0.26.0" +version = "0.27.0" authors = ["The Wasmtime Project Developers"] description = "wast testing support for wasmtime" license = "Apache-2.0 WITH LLVM-exception" @@ -12,7 +12,7 @@ edition = "2018" [dependencies] anyhow = "1.0.19" -wasmtime = { path = "../wasmtime", version = "0.26.0", default-features = false } +wasmtime = { path = "../wasmtime", version = "0.27.0", default-features = false } wast = "35.0.2" [badges]
crates/wiggle/borrow/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wiggle-borrow" -version = "0.26.0" +version = "0.27.0" authors = ["Pat Hickey <phickey@fastly.com>", "Jakub Konka <kubkonk@jakubkonka.com>", "Alex Crichton <alex@alexcrichton.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -11,7 +11,7 @@ repository = "https://github.com/bytecodealliance/wasmtime" include = ["src/**/*", "LICENSE"] [dependencies] -wiggle = { path = "..", version = "0.26.0" } +wiggle = { path = "..", version = "0.27.0" } [badges] maintenance = { status = "actively-developed" }
crates/wiggle/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wiggle" -version = "0.26.0" +version = "0.27.0" authors = ["Pat Hickey <phickey@fastly.com>", "Jakub Konka <kubkonk@jakubkonka.com>", "Alex Crichton <alex@alexcrichton.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -13,7 +13,7 @@ include = ["src/**/*", "LICENSE"] [dependencies] thiserror = "1" witx = { path = "../wasi-common/WASI/tools/witx", version = "0.9.0", optional = true } -wiggle-macro = { path = "macro", version = "0.26.0" } +wiggle-macro = { path = "macro", version = "0.27.0" } tracing = "0.1.15" bitflags = "1.2" async-trait = "0.1.42"
crates/wiggle/generate/Cargo.toml+1 −1 modified@@ -1,6 +1,6 @@ [package] name = "wiggle-generate" -version = "0.26.0" +version = "0.27.0" authors = ["Pat Hickey <phickey@fastly.com>", "Jakub Konka <kubkon@jakubkonka.com>", "Alex Crichton <alex@alexcrichton.com>"] license = "Apache-2.0 WITH LLVM-exception" edition = "2018"
crates/wiggle/macro/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wiggle-macro" -version = "0.26.0" +version = "0.27.0" authors = ["Pat Hickey <phickey@fastly.com>", "Jakub Konka <kubkon@jakubkonka.com>", "Alex Crichton <alex@alexcrichton.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -21,7 +21,7 @@ test = false doctest = false [dependencies] -wiggle-generate = { path = "../generate", version = "0.26.0" } +wiggle-generate = { path = "../generate", version = "0.27.0" } witx = { version = "0.9.0", path = "../../wasi-common/WASI/tools/witx" } quote = "1.0" syn = { version = "1.0", features = ["full"] }
crates/wiggle/wasmtime/Cargo.toml+5 −5 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-wiggle" -version = "0.26.0" +version = "0.27.0" authors = ["Pat Hickey <phickey@fastly.com>", "Jakub Konka <kubkonk@jakubkonka.com>", "Alex Crichton <alex@alexcrichton.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -11,11 +11,11 @@ repository = "https://github.com/bytecodealliance/wasmtime" include = ["src/**/*", "LICENSE"] [dependencies] -wasmtime = { path = "../../wasmtime", version = "0.26.0", default-features = false } -wasmtime-wiggle-macro = { path = "./macro", version = "0.26.0" } +wasmtime = { path = "../../wasmtime", version = "0.27.0", default-features = false } +wasmtime-wiggle-macro = { path = "./macro", version = "0.27.0" } witx = { version = "0.9.0", path = "../../wasi-common/WASI/tools/witx", optional = true } -wiggle = { path = "..", version = "0.26.0" } -wiggle-borrow = { path = "../borrow", version = "0.26.0" } +wiggle = { path = "..", version = "0.27.0" } +wiggle-borrow = { path = "../borrow", version = "0.27.0" } [dev-dependencies] anyhow = "1"
crates/wiggle/wasmtime/macro/Cargo.toml+2 −2 modified@@ -1,6 +1,6 @@ [package] name = "wasmtime-wiggle-macro" -version = "0.26.0" +version = "0.27.0" authors = ["Pat Hickey <phickey@fastly.com>", "Jakub Konka <kubkonk@jakubkonka.com>", "Alex Crichton <alex@alexcrichton.com>"] edition = "2018" license = "Apache-2.0 WITH LLVM-exception" @@ -16,7 +16,7 @@ test = false [dependencies] witx = { version = "0.9.0", path = "../../../wasi-common/WASI/tools/witx" } -wiggle-generate = { path = "../../generate", version = "0.26.0" } +wiggle-generate = { path = "../../generate", version = "0.27.0" } quote = "1.0" syn = { version = "1.0", features = ["full", "extra-traits"] } proc-macro2 = "1.0"
RELEASES.md+69 −0 modified@@ -4,19 +4,88 @@ ## Unreleased +## 0.27.0 + +Released 2021-05-21. + +### Security Fixes + +* Fixed a security issue in Cranelift's x64 backend that could result in a heap + sandbox escape due to an incorrect sign-extension: + [#2913](https://github.com/bytecodealliance/wasmtime/issues/2913). + ### Added +* Support for IBM z/Archiecture (`s390x`) machines in Cranelift and Wasmtime: + [#2836](https://github.com/bytecodealliance/wasmtime/pull/2836), + [#2837](https://github.com/bytecodealliance/wasmtime/pull/2837), + [#2838](https://github.com/bytecodealliance/wasmtime/pull/2838), + [#2843](https://github.com/bytecodealliance/wasmtime/pull/2843), + [#2854](https://github.com/bytecodealliance/wasmtime/pull/2854), + [#2870](https://github.com/bytecodealliance/wasmtime/pull/2870), + [#2871](https://github.com/bytecodealliance/wasmtime/pull/2871), + [#2872](https://github.com/bytecodealliance/wasmtime/pull/2872), + [#2874](https://github.com/bytecodealliance/wasmtime/pull/2874). + +* Improved async support in wasi-common runtime: + [#2832](https://github.com/bytecodealliance/wasmtime/pull/2832). + * Added `Store::with_limits`, `StoreLimits`, and `ResourceLimiter` to the Wasmtime API to help with enforcing resource limits at runtime. The `ResourceLimiter` trait can be implemented by custom resource limiters to decide if linear memories or tables can be grown. +* Added `allow-unknown-exports` option for the run command: + [#2879](https://github.com/bytecodealliance/wasmtime/pull/2879). + +* Added API to notify that a `Store` has moved to a new thread: + [#2822](https://github.com/bytecodealliance/wasmtime/pull/2822). + +* Documented guidance around using Wasmtime in multithreaded contexts: + [#2812](https://github.com/bytecodealliance/wasmtime/pull/2812). + In the future, the Wasmtime API will change to allow some of its core types + to be Send/Sync; see the in-progress + [#2897](https://github.com/bytecodealliance/wasmtime/pull/2897) for details. + +* Support calls from native code to multiple-return-value functions: + [#2806](https://github.com/bytecodealliance/wasmtime/pull/2806). + ### Changed * Breaking: `Memory::new` has been changed to return `Result` as creating a host memory object is now a fallible operation when the initial size of the memory exceeds the store limits. +### Fixed + +* Many instruction selection improvements on x64 and aarch64: + [#2819](https://github.com/bytecodealliance/wasmtime/pull/2819), + [#2828](https://github.com/bytecodealliance/wasmtime/pull/2828), + [#2823](https://github.com/bytecodealliance/wasmtime/pull/2823), + [#2862](https://github.com/bytecodealliance/wasmtime/pull/2862), + [#2886](https://github.com/bytecodealliance/wasmtime/pull/2886), + [#2889](https://github.com/bytecodealliance/wasmtime/pull/2889), + [#2905](https://github.com/bytecodealliance/wasmtime/pull/2905). + +* Improved performance of Wasmtime runtime substantially: + [#2811](https://github.com/bytecodealliance/wasmtime/pull/2811), + [#2818](https://github.com/bytecodealliance/wasmtime/pull/2818), + [#2821](https://github.com/bytecodealliance/wasmtime/pull/2821), + [#2847](https://github.com/bytecodealliance/wasmtime/pull/2847), + [#2900](https://github.com/bytecodealliance/wasmtime/pull/2900). + +* Fixed WASI issue with file metadata on Windows: + [#2884](https://github.com/bytecodealliance/wasmtime/pull/2884). + +* Fixed an issue with debug info and an underflowing (trapping) offset: + [#2866](https://github.com/bytecodealliance/wasmtime/pull/2866). + +* Fixed an issue with unwind information in the old x86 backend: + [#2845](https://github.com/bytecodealliance/wasmtime/pull/2845). + +* Fixed i32 spilling in x64 backend: + [#2840](https://github.com/bytecodealliance/wasmtime/pull/2840). + ## 0.26.0 Released 2021-04-05.
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
10- github.com/advisories/GHSA-hpqh-2wqx-7qp5ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2021-32629ghsaADVISORY
- crates.io/crates/cranelift-codegenghsax_refsource_MISCWEB
- github.com/RustSec/advisory-db/blob/main/crates/cranelift-codegen/RUSTSEC-2021-0067.mdghsaWEB
- github.com/bytecodealliance/wasmtime/commit/95559c01aaa7c061088a433040f31e8291fb09d0ghsax_refsource_MISCWEB
- github.com/bytecodealliance/wasmtime/security/advisories/GHSA-hpqh-2wqx-7qp5ghsax_refsource_CONFIRMWEB
- github.com/bytecodealliance/wasmtime/tree/main/craneliftghsaPACKAGE
- github.com/pypa/advisory-database/tree/main/vulns/wasmtime/PYSEC-2021-87.yamlghsaWEB
- rustsec.org/advisories/RUSTSEC-2021-0067.htmlghsaWEB
- www.fastly.com/security-advisories/memory-access-due-to-code-generation-flaw-in-cranelift-moduleghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.