From 3d482643651285143b555b61c5a6a48db6fc8518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl=20=C3=85stholm?= Date: Mon, 2 Feb 2026 01:20:16 +0100 Subject: [PATCH] Fix `-fwasmtime` not inheriting environment variables --- lib/std/Build/Step/Run.zig | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/lib/std/Build/Step/Run.zig b/lib/std/Build/Step/Run.zig index 76acbcb4b7..ca631ac9c0 100644 --- a/lib/std/Build/Step/Run.zig +++ b/lib/std/Build/Step/Run.zig @@ -1323,24 +1323,11 @@ 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("--"); + // Wasmtime doeesn't inherit environment variables from the parent process + // by default. '-S inherit-env' was added in Wasmtime version 20. + try interp_argv.append("-Sinherit-env"); try interp_argv.append(argv[0]); try interp_argv.appendSlice(argv[1..]); } else {