Part of #611. Difficulty: medium. Audit baseline: master 3950416e (2026-09-12).
Current evidence
src/cli.rs sends the entire MSVC argument vector directly to ProcessCommand. The backend path in llvm/src/backend.rs also invokes a command directly; no Wave-owned response-file transport is present in these paths.
Scope
Add a shared response-file path when MSVC link commands exceed a conservative Windows command-length budget, preserving the exact logical argument order. Follow the selected link.exe/lld-link encoding and quoting rules, including spaces, non-ASCII paths, quotes and trailing backslashes. Coordinate temporary output rewriting before serializing the final arguments.
Completion criteria
Unit tests exercise argument round-tripping and lifecycle cleanup, and native integration tests link many object paths from a Unicode directory with spaces using each supported linker. Nonzero exits preserve diagnostics and previous outputs. Dry-run exposes a useful logical plan. Response files are removed on success/failure after the child exits. No command shell is introduced.
Dependencies and boundaries
#498; applies to #613 and #621; independent of ABI implementation.
References: MSVC linker response files
Part of #611. Difficulty: medium. Audit baseline: master
3950416e(2026-09-12).Current evidence
src/cli.rs sends the entire MSVC argument vector directly to ProcessCommand. The backend path in llvm/src/backend.rs also invokes a command directly; no Wave-owned response-file transport is present in these paths.
Scope
Add a shared response-file path when MSVC link commands exceed a conservative Windows command-length budget, preserving the exact logical argument order. Follow the selected link.exe/lld-link encoding and quoting rules, including spaces, non-ASCII paths, quotes and trailing backslashes. Coordinate temporary output rewriting before serializing the final arguments.
Completion criteria
Unit tests exercise argument round-tripping and lifecycle cleanup, and native integration tests link many object paths from a Unicode directory with spaces using each supported linker. Nonzero exits preserve diagnostics and previous outputs. Dry-run exposes a useful logical plan. Response files are removed on success/failure after the child exits. No command shell is introduced.
Dependencies and boundaries
#498; applies to #613 and #621; independent of ABI implementation.
References: MSVC linker response files