Skip to content

Commit

Permalink
std.Build.Step.Run: Fix invocation syntax for Wasmtime 14+.
Browse files Browse the repository at this point in the history
  • Loading branch information
alexrp authored and andrewrk committed Jul 23, 2024
1 parent 718f8d5 commit be1e1fa
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion lib/std/Build/Step/Run.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1007,10 +1007,25 @@ fn runCommand(
},
.wasmtime => |bin_name| {
if (b.enable_wasmtime) {
// https://github.com/bytecodealliance/wasmtime/issues/7384
//
// In Wasmtime versions prior to 14, options passed after the module name
// could be interpreted by Wasmtime if it recognized them. As with many CLI
// tools, the `--` token is used to stop that behavior and indicate that the
// remaining arguments are for the WASM program being executed. Historically,
// we passed `--` after the module name here.
//
// After version 14, the `--` can no longer be passed after the module name,
// but is also not necessary as Wasmtime will no longer try to interpret
// options after the module name. So, we could just simply omit `--` for
// newer Wasmtime versions. But to maintain compatibility for older versions
// that still try to interpret options after the module name, we have moved
// the `--` before the module name. This appears to work for both old and
// new Wasmtime versions.
try interp_argv.append(bin_name);
try interp_argv.append("--dir=.");
try interp_argv.append(argv[0]);
try interp_argv.append("--");
try interp_argv.append(argv[0]);
try interp_argv.appendSlice(argv[1..]);
} else {
return failForeign(run, "-fwasmtime", argv[0], exe);
Expand Down

0 comments on commit be1e1fa

Please sign in to comment.