Companion to 2026-07-13-msvc-system-toolchain-detection-design.md.
Target release: 0.0.88. Each step compiles + mcpp test passes on its own.
- Add
MsvcInstallation,detect_installation(),parse_cl_banner(),install_guidance()per design §3.2. parse_cl_banner+install_guidancelive outside#ifdef _WIN32.vsProductderived from the two path segments afterMicrosoft Visual Studio("2022 BuildTools"); empty if layout unusual.- cl banner capture:
platform::process::captureon bare cl.exe, merged stderr, exit code ignored.
is_system_toolchain(const ToolchainSpec&)(compiler == "msvc").matches_default_toolchain:"msvc@system"matches ("msvc", any ver).display_label("msvc", …)unchanged (generic path already fine).
bmi_traits: MSVC branch →{ifc.cache, .ifc, ifc, true, false, false}.
- Filename short-circuit (stem
cl, case-insensitive) before--versionprobe →enrichMSVC path per design §3.5 (banner → version/arch/triple, driverIdent, std.ixx, skip dumpmachine/sysroot/payloads).
toolchain_set_default/toolchain_install/toolchain_remove/toolchain_list: msvc branches per design §3.3 (non-Windows error; detect-report-persist; guidance on absence; System section in list).
- msvc spec branch before xim resolution (design §3.4).
- post-detect gate on
CompilerId::MSVCwith the owned "not yet supported" error.
- Windows "Checking msvc (system)" section; msvc-default-aware std-BMI check.
tests/unit/test_toolchain_msvc.cpp(banner/guidance/spec/traits, §4).tests/e2e/95_msvc_system_toolchain.sh(# requires: msvc),tests/e2e/96_msvc_unavailable_nonwindows.sh(# requires: unix-shell).tests/e2e/run_all.sh:msvccapability (Windows + vswhere + VC tools).
docs/03-toolchains.mdMSVC section; CHANGELOG entry.
ci-windows.yml: step "Toolchain: MSVC — detection & selection" driving the 95 e2e flow via$MCPP_SELF.
tmp/msvc-windows-cibranch: steps 1-10 + delete all workflows exceptci-windows.yml; draft PR; iterate until green.feat/msvc-system-toolchain: green tree + workflows restored + version bump (fingerprint.cppm, mcpp.toml, CHANGELOG) → real PR → full CI → merge.- Release v0.0.88 → xlings-res mirror (gh + gtc) → xim-pkgindex →
xlings install mcppverify → bootstrap pin bump.
- Local:
mcpp build && mcpp test(Linux) after every step; unit tests for the pure functions run on Linux. - Windows behavior only verifiable in CI — keep Windows-only logic thin and push the parseable/testable parts into pure functions.