Repository navigation
[WSLC] Proxy Pt. 1: Update SDK to 3.0.5 - #1679
Elliot (theelliotm) wants to merge 3 commits into
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
abcd46d to
8a61cb8
Compare
There was a problem hiding this comment.
🔵 Needs a closer look
The unpublished SDK has no pinned, reproducible artifact, and blocked Windows CI with ARM64-only validation leaves published-artifact ABI consistency and x64 compatibility requiring maintainer confirmation.
No open issues 🎉
What changed in this PR
Updates the WSLC SDK to 3.0.5 as preparation for the built-in networking proxy described in #1625. This adds bindings for later work without changing backend behavior.
Changes:
- Pins SDK 3.0.5 and regenerates bindings for network, capability, and host-loopback APIs.
- Adds
-HeaderPathsupport for generating bindings from unpublished SDK headers. - Documents the temporary requirement for a local SDK through
WSLC_SDK_PATHuntil 3.0.5 is published.
| File | Description |
|---|---|
src/mxc-sdk/src/backends/wslc/common/wslcsdk_sys.rs |
Regenerates SDK types, layouts, and function bindings for 3.0.5. |
src/mxc-sdk/build/wslc_common/README.md |
Updates SDK version and documents local-build requirements. |
src/mxc-sdk/build/build_wslc_common.rs |
Pins the SDK version to 3.0.5. |
scripts/generate-wslc-bindings.ps1 |
Supports explicit headers and generates network flags as bitfields. |
docs/development/build-and-test/wslc-sdk-bindings.md |
Documents binding generation for unpublished SDK versions. |
docs/backends/wslc/wslc-state-aware.md |
Updates the SDK version cited in the daemon rationale. |
Review effort: Balanced
Pin WSLC_SDK_VERSION 3.0.5 and regenerate bindings from the 3.0.5 header. 3.0.5 is unpublished, so builds need WSLC_SDK_PATH; generate-wslc-bindings.ps1 gains -HeaderPath. Remove the vendored 3.0.3 package. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c3f64c2c-9005-43eb-a803-a91fb7265c5b
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c3f64c2c-9005-43eb-a803-a91fb7265c5b
f294536 to
22fd716
Compare
There was a problem hiding this comment.
🔵 Needs a closer look
Both Windows native DLLs and ABI sizes change, but live-host validation covers only ARM64, leaving x64 create-and-run and lifecycle compatibility unverified.
No open issues 🎉
1 resolved since last review
Review effort: Balanced
There was a problem hiding this comment.
🔵 Needs a closer look
The native SDK update changes FFI layouts and bundles both architectures, but runtime validation covers only ARM64, leaving x64 WSLC execution against the packaged 3.0.5 SDK unverified.
No open issues 🎉
Review effort: Balanced
Update the prerequisite error, its test and the getting-started guide to the 3.0.5 minimum. Remove -HeaderPath so bindings are generated only from the vendored package, and add -Check to the runbook's validation step. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c3f64c2c-9005-43eb-a803-a91fb7265c5b
There was a problem hiding this comment.
🟡 Changes recommended
The guidance incorrectly presents WSL 3.0.5 as a universal SDK requirement, although only proxied mode requires it, potentially directing users with compatible hosts to unnecessary updates or source builds.
1 open issue
Review effort: Balanced
| ## Step 1 — Install WSL 3.0.5+ | ||
|
|
||
| The WSLC SDK requires WSL version 3.0.3 or later. Update WSL to the latest | ||
| The WSLC SDK requires WSL version 3.0.5 or later. Update WSL to the latest |
There was a problem hiding this comment.
This will be a minimum version bump like all other bumps. There is currently no functionality for version-gating features/testing related to the WSLC SDK.


📖 Description
First PR in the WSLC built-in proxy stack (#1625). Updates the WSLC SDK to 3.0.5, which adds the session network, container network, capability and host loopback APIs the later PRs use. The minimum supported WSL runtime is now 3.0.5.
WSLC_SDK_VERSIONand the package SHA-256 to 3.0.5, and regeneratewslcsdk_sys.rsfrom the 3.0.5 header.WslcNetworkFlagsis added as a flags enum.generate-wslc-bindings.ps1 -Checkto the runbook's validation step.🔗 References
Refs #1462
Spec: #1625
🔍 Validation
On ARM64 with WSL 3.0.5.0 (
e7ef9a88) andWSLC_SDK_PATHset to the local 3.0.5 SDK build:cargo build -p wxc --features wslc --release: passedcargo build -p mxc-sdk --bin wxc-wslc-daemon --features wslc --release: passedcargo test -p mxc-sdk --features wslc --lib wslc(includes the ABI size checks): passedcargo fmt --all -- --check: passedcargo build -p mxc-sdk --features wslc --libwithoutWSLC_SDK_PATH: passed. It downloaded the published 3.0.5 package from the MxcDependencies feed and verified its pinned hash. With the feed unreachable, it fell back to the vendored 3.0.5 package and verified the same hash.generate-wslc-bindings.ps1 -Check(vendored 3.0.5 package, clang 22.1.3): passed (committed bindings are current)cargo test -p mxc-sdk --features wslc --lib prerequisite_error: passedcargo clippy -p mxc-sdk --features wslc --all-targets -- -D warnings: passedpwsh tests/scripts/run_wslc_all_tests.ps1(create-and-run, lifecycle, proxy and stdin suites): passed. The two tar-import tests skipped because their local tars weren't present.Not run: x64.
✅ Checklist
feature-acceptedCargo.lock, thedependency-feed-checkcheck passes (see pull request builds)📋 Issue Type
Microsoft Reviewers: Open in CodeFlow