Detect components in wasmtime compile more robustly (#5592)

The binary version of component is going to change over time so use a
more robust method than checking for a fixed 8 bytes.
This commit is contained in:
Alex Crichton
2023-01-18 18:39:35 -06:00
committed by GitHub
parent 0e92fba7e1
commit d24c2fe48c
3 changed files with 11 additions and 1 deletions

1
Cargo.lock generated
View File

@@ -3491,6 +3491,7 @@ dependencies = [
"tempfile",
"test-programs",
"tokio",
"wasmparser",
"wasmtime",
"wasmtime-cache",
"wasmtime-cli-flags",

View File

@@ -41,6 +41,7 @@ listenfd = "1.0.0"
wat = { workspace = true }
serde = "1.0.94"
serde_json = "1.0.26"
wasmparser = { workspace = true }
[target.'cfg(unix)'.dependencies]
rustix = { workspace = true, features = ["mm", "param"] }

View File

@@ -90,7 +90,15 @@ impl CompileCommand {
// bytes with the current component model proposal.
#[cfg(feature = "component-model")]
{
if input.starts_with(b"\0asm\x0a\0\x01\0") {
if let Ok(wasmparser::Chunk::Parsed {
payload:
wasmparser::Payload::Version {
encoding: wasmparser::Encoding::Component,
..
},
..
}) = wasmparser::Parser::new(0).parse(&input, true)
{
fs::write(output, engine.precompile_component(&input)?)?;
return Ok(());
}