microsoft / microsoft/mxc

Unify executor binary names to mxc-exec* across platforms

Open
#546 1 comment 0 reactions 2 assignees Claimed by @huzaifa-d View on GitHub
Area-Build-Rust Area-Build-TypeScript Area-SDK-Api Issue-Feature Issue-Task OS-Linux OS-MacOS OS-Windows
Dominant language
Rust
Stars
1.3k
Forks
79
Avg merge
2d 7h
Merged PRs (30d)
117

Description

### Description of the task

Unify the executor binary names to a single `mxc-exec` family across all three platforms. Today the entry executables are named inconsistently:

| Platform | Current name | Crate |
|----------|--------------|-------|
| Windows | `wxc-exec.exe` | `wxc` / `wxc_common` |
| Linux | `lxc-exec` | `lxc` |
| macOS | `mxc-exec-mac` | `mxc_darwin` |

Only one of the three (`mxc-exec-mac`) even matches the product name "MXC"; `wxc-` does not. A single, consistent `mxc-exec` (with `.exe` on Windows) is cleaner, matches `@microsoft/mxc-sdk`, and lets the SDK binary-discovery logic in `sdk/src/platform.ts` collapse its three per-OS `find*Executable` functions toward a single name.

Scope note: the Windows build also ships a `wxc-*` helper family (`wxc-windows-sandbox-guest`, `wxc-windows-sandbox-daemon`, `winhttp-proxy-shim`, `wxc-test-proxy`, `wxc-host-prep`). To avoid a half-consistent set, this task should rename the whole `wxc-*`/`lxc-exec`/`mxc-exec-mac` family to `mxc-*`, not just the entry binary.

Expected outcome: all executor binaries use the `mxc-*` naming convention; build scripts, SDK discovery, docs, and test scripts are updated; and a backward-compatibility alias is provided for a deprecation window so existing invocations (notably the documented `wxc-exec --prepare-system-drive` host-setup CLI) keep working.

### Additional context

Blast radius (current references in the repo): `wxc-exec` ~461, `lxc-exec` ~126, `mxc-exec-mac` ~65 across `.rs`, build scripts (`build.bat`/`build.sh`/`build-mac.sh`), test scripts, docs, CI YAML, and the Cargo `[[bin]]` names in the `wxc`, `lxc`, and `mxc_darwin` crates.

Suggested approach:
- Rename Cargo `[[bin]]` targets and the producing crates' output names.
- Update `build.bat` / `build.sh` / `build-mac.sh` copy steps.
- Simplify `sdk/src/platform.ts` discovery to a single `mxc-exec` name (plus `.exe` on Windows).
- Update docs (`docs/host-prep.md`, `docs/lxc-support/`, `docs/macos-support/`, per-backend guides) and `.github/copilot-instructions.md` (Binary naming section).
- Update test scripts under `test_scripts/` and any E2E harness that invokes binaries by name.
- Ship a back-compat alias/shim (or symlink) under the old names for at least one release, with a deprecation note.

Backward-compatibility considerations:
- `wxc-exec --prepare-system-drive` / `--unprepare-system-drive` is a documented host-setup CLI; external scripts may depend on it.
- Test drivers and the `wxc_test_driver` invoke binaries by name.

Sequencing: do this **after** the SDK platform-package packaging change (#512), so the rename rebases onto the simpler per-platform package layout rather than the legacy `bin//` tree.

Related: #512.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.