Releases: microsoft/WSL
Releases · microsoft/WSL
Release list
2.9.3
Release Notes
WSL Containers (WSLC) is now in Public Preview
We're excited to announce that WSL Containers (WSLC) is now available in public preview. WSLC brings native Linux container support to WSL, letting you build, run, and manage containers directly through the new wslc command line tool and a fully projected SDK (C++, C#/WinRT).
Highlights of what's available in this preview:
- Container lifecycle: create, run, start, kill, export, prune, and inspect containers, with per-container resource limits (
--cpus,--memory,--ulimit),--shm-size, and configurable stop signals. - Images: build (with
--labelsupport), pull, push, import, save (including multiple images in a single tar), inspect, list/prune with filters, and multi-image delete. - Networking: create and manage networks, attach containers to multiple networks, network aliases,
container:<name|id>network mode, custom network types, port publishing, and network prune. - Volumes: create, list, prune, and remove volumes, with VHD-backed volumes and
Uid/Gid/Fixeddriver options. - GPU support: GPU-enabled containers with CDI, mounted GPU executables and libraries accessible to non-root users.
- Sessions: named sessions with a default session created on demand, configurable storage location, and a default of 32 GB session storage.
- SDK: a C++ and C#/WinRT projection of the WSLC API, shipped as NuGet packages, plus a documented plugin API.
- Tooling:
wslc logswith--timestamps,--since,--until, and-n; container stats; structured CLI output with color; MSBuild and CMake build integration; and group policy (ADMX) support for management.
Bug Fixes
- Fixed a stuck
systemctl poweroffthat could block VM termination by @chemwolf6922 in #40866 - Fixed use-after-free issues in the virtiofs request worker thread by @OneBlue in #40792 and in WSLC container exec-process teardown by @yao-msft in #40822
- Fixed a potential init crash by catching exceptions in
scope_exitreset by @OneBlue in #40691 - Fixed shared pointer circular reference leaks by @chemwolf6922 in #40480
- Fixed an IPv6 guest port reservation leak in Consomme (VirtioProxy) networking by @benhillis in #40803
- Fixed mirrored mode port tracking for implicit binds from
accept()calls by @FetoiuCatalin in #40287 and denied guest binds to the host ephemeral port range in mirrored mode by @FetoiuCatalin in #40597 - Avoided a distro zombie state when WSL init dies in systemd mode by @chemwolf6922 in #40433
- Protected
binfmt_miscfrom a cross-distro wipe at shutdown by @benhillis in #40621 - Fixed incorrect
wslpathtranslation of\\wsl.localhostwhen the current distro name is a subset of the target distro name by @OneBlue in #40687 - Fixed
CreateInstancefailure when the Windows hosts file exceeds the message size cap by @benhillis in #40718 - Fixed various initial tty sizing issues and added test coverage by @OneBlue in #40722
- Improved virtiofs and VirtioProxy performance with a per-device SWIOTLB pool by @benhillis in #40654
Fixes and Improvements
- Renamed the VirtioProxy networking mode to Consomme by @benhillis in #40873
- Updated VM termination logic to enforce timeouts and avoid hanging when init is stuck by @OneBlue in #40431
- Improved DNS tunneling reliability and VirtioNet tracing by @benhillis in #40430 and @damanm24 in #40446
- Avoided
std::terminatein the Plan9FsUserContextdestructor by @benhillis in #40417 - Hardened VHD attach/restore by impersonating the mounting user, fixing a TOCTOU by @benhillis in #40782
- Fixed
MoveDistributionfailing withE_ACCESSDENIEDwhen setting the VHD owner under impersonation by @benhillis in #40717 - Downgraded the system integrity-level impersonation token to high by @Brian-Perkins in #40447
Security
- Updated the .NET runtime to 10.0.9 (CVE-2026-45491).
- Updated MSRDC to 1.2.7214 (CVE-2026-32157).
Full Changelog: 2.7.10...2.9.3
2.7.10
What's Changed
- Pass the mounting user's token on VHD restore (2.7 backport) by @benhillis in #40907
Full Changelog: 2.7.9...2.7.10
2.7.9
2.7.8
What's Changed
- Fix CreateInstance failure when Windows hosts file exceeds message size cap (2.7 backport) by @benhillis in #40726
- Update kernel to 6.18.33.1-1 by @chessturo in #40728
Full Changelog: 2.7.7...2.7.8
2.7.7
What's Changed
- Update Microsoft.WSLg to version 1.0.73.2 by @benhillis in #40585
Full Changelog: 2.7.6...2.7.7
2.7.5
What's Changed
- Update Microsoft.WSL.Kernel to 6.18.26.1 (#40161) by @chessturo
- Service: Best-effort grant of VMWP access to user-supplied VHDs (#40485) by @benhillis
Full Changelog: 2.7.3...2.7.5
2.7.3
What's Changed
- Update Microsoft.WSL.DeviceHost package to 1.2.14-0 by @benhillis in #40286
- Disable shared compilation when building wslsettings by @OneBlue in #40289
- diagnostics: collect MSI verbose install logs in diagnostic bundle by @yeelam-gordon in #40218
- Fix NuGet package path validation in nuget-stage pipeline by @benhillis in #40293
- test: Add arm64 test distro support by @benhillis in #14500
- test: remove duplicated DNS test coverage by @benhillis in #14522
- Fix: Fail and warn the user when --uninstall is given parameters by @chemwolf6922 in #14524
- virito net: revert to previous DNS behavior while we debug an issue with DNS over TCP by @benhillis in #14532
- Update cgmanifest to match CMakeLists.txt by @OneBlue in #14550
- socketshared: add maximum message size to avoid very large allocations by @benhillis in #40050
- Fix: bind interrupted by seccomp signal race by @chemwolf6922 in #14554
- Set Distro Env HOSTTYPE to aarch64 for ARM64 build by @wangxin12 in #40048
- devicehost: stop re-signing and fix MSI installer failing to replace wsldevicehost.dll by @benhillis in #40075
- Suppress MSI-initiated reboots during Store updates by @benhillis in #40079
- build: add Source Link to embed GitHub source mappings in PDBs by @benhillis in #40055
- Mask console-getty.service to prevent multi-distro failures (#13595) by @benhillis in #14490
- Fix random "ERROR_FILE_NOT_FOUND" when unmounting with absolute path by @chemwolf6922 in #40092
- Fixes to route mirroring by @FetoiuCatalin in #40099
- Fix wrong variable checking by @wangxin12 in #40185
- Bump Microsoft.NETCore.App.Runtime to 10.0.6 (CVE-2026-32178) by @benhillis in #40207
- Fix VHD ownership after cross-volume move to prevent E_ACCESSDENIED by @benhillis in #40159
- fix: use {} format specifier instead of %s in Linux LOG_ERROR path by @benhillis in #40227
- Update MoveVhdOwnership test to WSL2 only by @Copilot in #40223
- fix: use ssize_t for readlinkat return value in p9file.cpp by @benhillis in #40226
- cleanup: extract SkipSignal helper to deduplicate signal skip lists by @benhillis in #40228
- fix: use correct GetAddrInfoTestEntry handler for get_addr_info test by @benhillis in #40225
- fix: implement IDisposable on WslConfigService to dispose FileSystemWatcher by @benhillis in #40249
- fix: add waitpid safety net after signalfd setup to prevent SIGCHLD race by @benhillis in #40229
- Settings: Add pending changes tracking and apply confirmation dialog by @dabhattimsft in #14425
- Add boot check for ipv6 disabled via registry in mirrored mode by @FetoiuCatalin in #40235
- Fix broken WSLCorePort channel after receive timeout by @chemwolf6922 in #14455
- Fix batch of minor bugs by @chemwolf6922 in #40197
- Impersonate caller in ResizeDistribution VHD operations by @benhillis in #40253
- Add BUFFER_FIELD macro for safe pretty-printing of flexible array members by @benhillis in #40273
- Fix socket race condition in port tracking by @chemwolf6922 in #40187
- Bound process name buffer in crash dump handler by @benhillis in #40274
- Fix sizeof typo in MessageWriter::GetRelativeIndex by @benhillis in #40276
- Add admin protection error message for shadow admin scenarios by @benhillis in #40170
New Contributors
- @wangxin12 made their first contribution in #40048
- @FetoiuCatalin made their first contribution in #40099
- @yeelam-gordon made their first contribution in #40218
Full Changelog: 2.7.1...2.7.3
2.7.1
What's Changed
Security
- Fix CVE-2026-26127: bump .NET runtime from 10.0.0 to 10.0.4 by @benhillis in #14421
Bug Fixes
- virtiofs: fix elevated virtiofs access when VM is launched by an elevated user by @benhillis in #13877
- Resolve issue with config file writing sections outside of their expected header by @benhillis in #13898
- Resolve issue with buttons on notifications not working correctly by @benhillis in #13921
- [GH 13837] Remove trailing slash from
$XDG_RUNTIME_DIRby @benhillis in #13929 - Fix issue with svccommio incorrectly resetting console state in the move operator by @benhillis in #14083
- Fix excessive screen updates in progress indicators by @Copilot in #14206
- Fix 4 code bugs: substr off-by-one, HANDLE* cast, TOCTOU GetLastError, sun_path overflow by @benhillis in #14297
- Fix wsl stuck when misconfigured cifs mount presents by @chemwolf6922 in #14466
- Accessibility: After selecting from the navigation list, keyboard focus is now transferred to page content by @ssparach in #14289
Features & Improvements
- virtiofs: add support for statx syscall by @benhillis in #14087
- virtiofs: add support for mounting directories (not just full volumes) by @benhillis in #14073
- virtio networking: add support for ipv6 by @benhillis in #14350
- Enable DNS tunneling for VirtioProxy networking mode by @benhillis in #14461
- DNS: switch to using 'search' instead of obsolete 'domain' by @benhillis in #14133
- Track
bindsyscall when port is 0 by @damanm24 in #14333 - Add
WindowsTerminal.enabledto the list of config keys for wsl-distribution.conf by @OneBlue in #14021 - Disable the process creation cursor animation by default by @OneBlue in #14293
- Improved VirtioProxy networking and VirtioFS posix compatibility by @benhillis in #14198
- Updated enable virtualization error message by @craigloewen-msft in #14110
- Mask NetworkManager-wait-online.service during boot by @dhtzs in #14272
- Add iptables to list of apps to install in WSL by @andremueiot in #14459
Developer Experience
- Enable VS 2026 solution generation and improve ARM64 developer experience by @benhillis in #14283
- Refactor: Use TryParse in view models for safer numeric input parsing by @dhtzs in #14323
New Contributors
- @salmanmkc made their first contribution in #13896
- @mznms made their first contribution in #13950
- @rfu-cn made their first contribution in #14022
- @andysterland made their first contribution in #14160
- @dhtzs made their first contribution in #14272
- @ssparach made their first contribution in #14289
- @damanm24 made their first contribution in #14333
- @andremueiot made their first contribution in #14459
- @chemwolf6922 made their first contribution in #14466
Full Changelog: 2.7.0...2.7.1
2.6.3
2.7.0
What's Changed
- Remove unused LXSS_DISTRO_FLAGS_WSLCORE_MODE by @OneBlue in #13603
- Add logic to handle partial hvsocket writes and additional logging by @OneBlue in #13602
- Update Microsoft.NETCore.App.Runtime packages version with fix for CVE-2025-55248 by @benhillis in #13607
- Update Microsoft.WSL.DeviceHost package to version 1.0.0-20251015.1 by @benhillis in #13606
- Fix edge cases around .vhd support by @benhillis in #13061
- Fix WslDistributionConfig to not default-initialize optional fields by @benhillis in #13629
- Make the sample WSL_POST_BUILD_COMMAND more resilient by @OneBlue in #13652
- wslsettings: allow OOBE window to close with escape key by @benhillis in #13686
- wslsettings: fix OOBE text truncation at 200% text scaling by @benhillis in #13693
- wslsettings: add underlines to links in about page by @benhillis in #13703
- .clang-format: add InsertBraces: true and minor fix to FormatSource.ps1 by @benhillis in #13712
- wslsettings: ensure selected setting is auto-expanded and selected by @benhillis in #13689
- build: fix minor compiler errors when building with VS2026 by @benhillis in #13744
- Mask systemd-networkd-wait-online.service during boot by @OneBlue in #13611
- deps: update a number of NuGet packages to the latest available versions by @benhillis in #13728
- Add *.slnx to .gitignore by @OneBlue in #13754
- Fix service crash when collecting a linux crash dump when maxCrashDumpCount is set to 0 by @OneBlue in #13755
- cleanup: VirtioNetworking refactoring by @benhillis in #13760
- cleanup: switch from Microsoft::WRL::ComPtr to wil::com_ptr by @benhillis in #13767
- cleanup: VirtioNetworking refactoring to be more portable by @benhillis in #13783
- cleanup: remove invalid m_deviceHostSupport checks by @benhillis in #13787
- cleanup: move common functionality out of service exe by @benhillis in #13788
- test: improve test logging infra by @benhillis in #13811
- virtio networking: fix two minor issues by @benhillis in #13810
- Update Microsoft.WSL.Kernel to 6.6.114.1 by @chessturo in #13812
- test: minor updates to improve virtiofs pass rate by @benhillis in #13815
- Update Microsoft.WSL.DeviceHost to remove lxutil.dll dependency by @benhillis in #13633
- cleanup: add handling for product-specific virtio networking class IDs. by @benhillis in #13822
- wslsettings: ensure text in the oobe window properly wraps by @benhillis in #13823
- Add back WSL2_VM_ID environment variable to the system distro. by @benhillis in #13835
- CI: Switch away from -dev versions of MS-RDX-MRO.windows-store-publish tasks by @benhillis in #13841
- Fix typo in Dutch translations by @frosit in #13853
- test: add simple virtio proxy networking tests and move mirrored tests to their own class by @benhillis in #13838
- CI: update issue for wslsettings being rebuilt and signature being overwritten by @benhillis in #13855
New Contributors
- @almalinuxautobot made their first contribution in #13653
- @frosit made their first contribution in #13853
Full Changelog: 2.6.2...2.7.0