Repository navigation
Releases: microsoft/WSL
Release list
3.0.3
What's Changed
- Update issue template for WSLC by David Bennett (@dkbennett) in #41778
- Run the nightly tests on Windows Server 2025 by Blue (@OneBlue) in #41760
- Localization change from build: 159470205 by Blue (@OneBlue) in #41800
- Fix various issues preventing the ModernOOBE test from running multiple times on the same test_distro by Blue (@OneBlue) in #41781
- Remove unused delay-load options by Ben Hillis (@benhillis) in #41804
- Disable pushing to the store by default by Blue (@OneBlue) in #41782
- Scope down the ephemeral port range in various consommé tests by Blue (@OneBlue) in #41805
- Fix race condition in LifetimeManager by Blue (@OneBlue) in #41807
- Use DistroFileChange instead of going through wsl.localhost by Blue (@OneBlue) in #41810
- Explicitely setup impersonation when instanciating IWslSupport by Blue (@OneBlue) in #41815
- Wait for bound ports to be released by the port relay in the tests by Blue (@OneBlue) in #41817
- Support reading the wslc image build context from stdin by ggarzia-MSFT in #41765
- Update Microsoft.WSL.Kernel to 6.18.54.1 by Mitchell Levy (@chessturo) in #41822
- Add logic to reject commands with extra arguments by Blue (@OneBlue) in #41821
- Improve wslc event filters by beena352 in #41809
- Make the binfmt mount writable by Blue (@OneBlue) in #41808
- Match container and network filters across event types by beena352 in #41818
- Fix incorrect wsl.conf warnings being displayed when creating a new distribution by Blue (@OneBlue) in #41820
- Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal by Ben Hillis (@benhillis) in #40347
Full Changelog: 3.0.2...3.0.3
3.0.2
What's Changed
- Don't write to the install log file if it's a reparse point or a directory by Blue (@OneBlue) in #41705
- Use the latest ESRP signing key code by Blue (@OneBlue) in #41640
- Fix ipv4 forwarding when both v4 and v6 ports are listening by Feng Wang (@chemwolf6922) in #41672
- Refactor event stream cancellation waits by beena352 in #41696
- Don't expect the brd module logline to stabilize the CustomDmesgOutput test case by Blue (@OneBlue) in #41714
- Fix: update drvfs gid uid after default uid is set in oobe by Feng Wang (@chemwolf6922) in #41521
- Update WSLC SDK API documentation by Flor Chacón (@florelis) in #41677
- Expose kernel headers and perf to distributions by Ben Hillis (@benhillis) in #41400
- Use iterators in FromJson to avoid copies by Blue (@OneBlue) in #41641
- Use a retry with timeout in HostPortCantBeBoundByGuest by Blue (@OneBlue) in #41728
- Don't fail configuring the consommé loopback adapter when ipv6 is disabled by Blue (@OneBlue) in #41729
- Enable experimental sparse VHD creation by Ben Hillis (@benhillis) in #41726
- Update Microsoft.RemoteDesktop.Client.MSRDC.SessionHost to version 1.2.7391 by Ben Hillis (@benhillis) in #41730
- Fix WSL container event timestamps by beena352 in #41717
- Revert "Enable RedirectionGuard process mitigation" by Blue (@OneBlue) in #41744
- Add --format json to wslc events by beena352 in #41734
- Update the DACL to only allow access to the user when creating virtual disks by Blue (@OneBlue) in #41678
- Fix race condition and potential use-after-free on system distro & init port access by Blue (@OneBlue) in #41762
- Enable automatic vNUMA for large WSL VMs by Ben Hillis (@benhillis) in #41741
- Exclude wslc.exe and wslcsession.exe from custom LSP providers by Blue (@OneBlue) in #41767
- Reuse EmptyObject for HCS NUMA configuration by Ben Hillis (@benhillis) in #41768
- Implement container health notifications to wslc events by Blue (@OneBlue) in #41763
- Replace TableOutput with TableData model and TableRenderer by ggarzia-MSFT in #41700
- refactor container cp task to be simpler and move logic to container service and common filesystem helpers by ggarzia-MSFT in #41668
- Use a fallback gateway if no ipv4 gateway is available in consommé networking by Blue (@OneBlue) in #41779
- Record Docker die and stop events with parity by beena352 in #41770
- Restore the logic to re-create the WSL binfmt_misc entry if it's overriden by systemd-binfmt by Blue (@OneBlue) in #41780
New Contributors
- Patrick Swartz (@pswartzclan) made their first contribution in #41323
Full Changelog: 3.0.1...3.0.2
3.0.1
WSLc is generally available.
Linux containers are central to modern development, from cloud-native applications to AI workloads. We're making those workflows simpler and easier to access on Windows with WSL containers, which is generally available today. Read more about the feature below.
Official announcement: https://blogs.windows.com/windowsdeveloper/2026/09/29/wsl-containers-now-generally-available/
Architecture deep dive: https://devblogs.microsoft.com/commandline/wslc-architecture-deep-dive/
What's Changed
- Simplify event reader cleanup by beena352 in #41667
- Fix config's handling of non-ascii characters by Feng Wang (@chemwolf6922) in #41657
- Prevent potential invalid access for string array pretty print by Feng Wang (@chemwolf6922) in #41673
- Follow up to PR #41512 by Feng Wang (@chemwolf6922) in #41642
- Use a static CRT in debug builds by Blue (@OneBlue) in #41684
- Increase the VM termination timeout to 30 seconds by Blue (@OneBlue) in #41688
- Impersonate the caller before making various filesystem operations by Blue (@OneBlue) in #41689
- Support STDIN through SDK by JohnMcPMS in #41698
- Followup to STDIN PR by JohnMcPMS in #41703
- Remove references to WSLC being in preview by Blue (@OneBlue) in #41704
Full Changelog: 2.9.13...3.0.1
2.9.13
What's Changed
- Fix activating a stopping service treated as OOM by Feng Wang (@chemwolf6922) in #41460
- Set distributionStartTimeout to 2 minutes in the tests to solve distribution start timeouts errors by Blue (@OneBlue) in #41583
- Enable RedirectionGuard process mitigation by Ben Hillis (@benhillis) in #41542
- Updates Ubuntu latest LTS images by Carlos Nihelton (@cnihelton) in #41465
- diagnostics: improve collect-wsl-logs for analysis (summary.json, README, profile info, WSL/guest state) by Ben Hillis (@benhillis) in #40776
- Move security model under technical documentation by Ben Hillis (@benhillis) in #41605
- Fix typos by Anton Kesy (@antonkesy) in #41589
- Don't stop parsing linux config files on invalid lines by Blue (@OneBlue) in #41606
- wslc: add --all-tags to pull for docker parity by ggarzia-MSFT in #41494
- Added WSL container to OOBE by Craig Loewen (@craigloewen-msft) in #41402
- Pre merge Localization strings prior to GA by ggarzia-MSFT in #41585
- wslc: keep image list json CreatedSince locale-invariant by ggarzia-MSFT in #41609
- Warn on an escaped CR in wsl.conf instead of dropping it silently by Leo Camus (@Dev-next-gen) in #41591
- Set a restricted ephemeral port range for test case ConsommeTests::PortZeroBindIsTracked by Blue (@OneBlue) in #41616
- CLI: Global option scopes for nested commands (related to compose support) by David Bennett (@dkbennett) in #41546
- Change default relay buffer size to 64KiB by Feng Wang (@chemwolf6922) in #41603
- Fix redirect stdout and stderror to the same file overlapping by Feng Wang (@chemwolf6922) in #41611
- Move installer log collection after repro by Feng Wang (@chemwolf6922) in #41620
- wslc: add --digests to image list for docker parity by ggarzia-MSFT in #41457
- Localization change from build: 157843092 by Blue (@OneBlue) in #41630
- Explicitely return SOCKET from WSLCPluginAPI_ProcessGetFd() by Blue (@OneBlue) in #41626
- In mirrored mode, handle route update as add instead of replace by FetoiuCatalin in #41391
- Add wslc events command by beena352 in #41608
- Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running by Blue (@OneBlue) in #41638
- Wait for wslservice to be started when running tests by Blue (@OneBlue) in #41639
- Create new namespaces for distro cgroups by Feng Wang (@chemwolf6922) in #41512
- Fix unnecessary delay in the port tracking loop by Feng Wang (@chemwolf6922) in #41472
- wslc: add --follow-link to cp by ggarzia-MSFT in #41501
- Disable unstable bind cap test and re-enable Loopback test that was incorrectly disabled by FetoiuCatalin in #41648
- Move objects shared by wslc.exe and the tests to src/windows/common by ggarzia-MSFT in #41619
- Fix various protocol parsing issues by Blue (@OneBlue) in #41637
- Localization change from build: 157980831 by Blue (@OneBlue) in #41647
- Add WSLC network lifecycle events by beena352 in #41576
- Fix potential out of bound access when pretty-printing string field in init messages by Blue (@OneBlue) in #41664
New Contributors
- Anton Kesy (@antonkesy) made their first contribution in #41589
- Leo Camus (@Dev-next-gen) made their first contribution in #41591
Full Changelog: 2.9.12...2.9.13
2.9.12
What's Changed
- wslc: add --size to inspect for docker parity by ggarzia-MSFT in #41489
- Add wslc container restart command by beena352 in #41435
- init: fix dhcpcd option name in bridged-mode config by DesertRatUa in #41538
- Host plugin Plan9 shares as the session user by Ben Hillis (@benhillis) in #41548
- Fix virtiofs bind mounts exposing files as root-owned (#40719) by Stephen Halter (@halter73) in #40733
- wslc: match docker prune semantics (confirmation prompt, -f aliases --force) by ggarzia-MSFT in #41455
- wslc: add --all to image list for docker parity by ggarzia-MSFT in #41456
- wslc: add --details to container logs for docker parity by ggarzia-MSFT in #41467
- Don't fail the installation if DeprovisionMsix() fails by Blue (@OneBlue) in #41453
- wslc: add --size to container list for docker parity by ggarzia-MSFT in #41477
- wslc: add --all-tags to push for docker parity by ggarzia-MSFT in #41500
- Fix build issue for wslsettings, and add more logging to the pipelines by Flor Chacón (@florelis) in #40388
- Validate variable-length message strings by Ben Hillis (@benhillis) in #41567
- Fix WSLC fallback gateway collision by Ben Hillis (@benhillis) in #41547
- Reduce expected distro termination log noise by Ben Hillis (@benhillis) in #41541
- CLI: Add global options to root help, adjust options usage by David Bennett (@dkbennett) in #41534
- wslc: add docker --quiet to image load, image push and container cp by ggarzia-MSFT in #41466
- Tear down the stale plugin Plan9 server before recreating it by Ben Hillis (@benhillis) in #41565
- Use a locally imported version of docker/dockerfile instead of downloading it from the default registry by Blue (@OneBlue) in #41575
- Use canonical path in VolumeMount_Parse_ReturnExpectedResult by Blue (@OneBlue) in #41577
- Remove two noisy warnings from the distro validation scripts by Blue (@OneBlue) in #41579
New Contributors
- DesertRatUa made their first contribution in #41538
- Stephen Halter (@halter73) made their first contribution in #40733
Full Changelog: 2.9.11...2.9.12
2.7.14
What's Changed
- [release/2.7] Make sure that message structures are correctly zero-initialized by Ben Hillis (@benhillis) in #41524
- [release/2.7] Backport additional fixes by Ben Hillis (@benhillis) in #41540
- [release/2.7] Host plugin Plan9 shares as the session user by Ben Hillis (@benhillis) in #41557
- [release/2.7] Validate guest capability strings by Ben Hillis (@benhillis) in #41569
Full Changelog: 2.7.13...2.7.14
2.9.11
What's Changed
- Add container restart runtime support by beena352 in #41454
- Fix p9 drvfs read only mount regression by Feng Wang (@chemwolf6922) in #41487
- Fix WSLC Plan9 mount and image-build failures by Feng Wang (@chemwolf6922) in #41535
Full Changelog: 2.9.10...2.9.11
2.9.10
What's Changed
- wslc: consolidate size formatting on FormatHumanReadableSize by ggarzia-MSFT in #41429
- CLI: Add virtiofs mapshared regression test by David Bennett (@dkbennett) in #41427
- Fix tracked routes being collapsed by incomplete comparison by Feng Wang (@chemwolf6922) in #41393
- Add github issue suggestion in user visible error by Feng Wang (@chemwolf6922) in #41432
- Match Docker output for prune operations and container inspection by ggarzia-MSFT in #41430
- CLI: Mount PR followup & fix two docker parser bugs by David Bennett (@dkbennett) in #41436
- Invalidate the TestImageRegistry cache after running prune --all by Blue (@OneBlue) in #41442
- Solve various issues found by verifier by Blue (@OneBlue) in #41445
- CLI: Align alias listing with docker, Apple and other CLIs by David Bennett (@dkbennett) in #41439
- Align container list format with Docker specifications by ggarzia-MSFT in #41375
- wslc: alias -f to --format on inspect commands for docker parity by ggarzia-MSFT in #41463
- CLI: Add explicit per-command argument overrides by David Bennett (@dkbennett) in #41478
- Fix WSLC parser unit test argument overrides by Ben Hillis (@benhillis) in #41496
- Fix systemd-tmpfiles failure on systemd v261+ with systemd boot disabled by Feng Wang (@chemwolf6922) in #41491
- Fix unvalidated TerminalProfileSize during distribution import by Ben Hillis (@benhillis) in #41495
- Bump WSL DeviceHost to 1.2.62 by Daman Mulye (@damanm24) with @Copilot in #41499
- Enable unity build repo-wide via WSL_UNITY_BATCH_SIZE by ggarzia-MSFT in #41441
- Add wslc system info command by beena352 in #41408
- Harden Windows macros against dangling-else ambiguity by Eamon (@Eamon2009) in #41513
- Fix dangling-else bugs in FAIL_FAST_IF and EMIT_USER_WARNING macros by Eamon (@Eamon2009) in #41504
- Wslc events by Kevin Vega (@kvega005) in #40971
- Resolve an issue preventing WSL from starting due to an MDE Plugin error
New Contributors
- tega-ajise made their first contribution in #41509
Full Changelog: 2.9.9...2.9.10
2.7.13
What's Changed
- Resolve an issue preventing WSL from starting due to an MDE Plugin error
Full Changelog: 2.7.12...2.7.13
2.9.9
What's Changed
- Fix batch of minor issues by Feng Wang (@chemwolf6922) in #41397
- Consolidate timestamp parsing and support docker-style options by ggarzia-MSFT in #41403
- Localization change from build: 155641729 by Blue (@OneBlue) in #41424
- Add hybrid CRT link for Windows binaries by JohnMcPMS in #40890
- Match docker's keyset for wslc volume list --format json by ggarzia-MSFT in #41413
- Container lifecycle transitions by Kevin Vega (@kvega005) in #41140
- Update Microsoft.WSL.DeviceHost to 1.2.61 by Blue (@OneBlue) in #41426
- Handle Linux failures from GNS callbacks by Shawn Yuan (@shuaiyuanxx) in #41396
- Skip publishing helper DCAT script as artifact by Flor Chacón (@florelis) in #41431
Full Changelog: 2.9.8...2.9.9