Repository navigation
Releases
3.0.5
What's Changed
- WSLc Clarify image pull status message by James Alickolli (@licon4812) in #41753
- Match console detach sequence for full UTF-16 characters by ggarzia-MSFT in #41960
- Fix: plan9 truncate the wrong file after replacement by Feng Wang (@chemwolf6922) in #41974
- Fix guiApplications config parsing by Feng Wang (@chemwolf6922) in #41973
- Fix potential use-after-free in MirroredNetworking by Blue (@OneBlue) in #41982
- Add missing synchronization around container & process handles by Blue (@OneBlue) in #41983
- CLI: Add --ipv6 to network create by David Bennett (@dkbennett) in #41303
- Fix concurrent resource access in WSL1 instance during OOBE by Blue (@OneBlue) in #41981
- Fix incorrect COM lifetime tracking causing wslcsession.exe to potentially exit while references are still held by clients by Blue (@OneBlue) in #42000
- Fix encrypted disk support for compact by Feng Wang (@chemwolf6922) in #42008
- Ensure force removal succeeds for non-existent containers by ggarzia-MSFT in #42010
- Add --cap-add and --cap-drop to wslc run and create for both cli and sdk by Feng Wang (@chemwolf6922) in #41681
- Update Microsoft.NETCore.App.Runtime to 10.0.13 by Blue (@OneBlue) in #42003
- Update the linux version of conncheckshared to use poll instead of fd_set by Blue (@OneBlue) in #42016
- Fix ipv4 mapped ipv6 address handling in consomme mode by Feng Wang (@chemwolf6922) in #42007
- Make m_telemetryCounter atomic by Blue (@OneBlue) in #42017
- Reject messages with unterminated interface names in GNSPortTrackerChannel by Blue (@OneBlue) in #42022
- Fix hresult comparison in interop by Feng Wang (@chemwolf6922) in #42024
- Avoid generating SIGPIPE when replying to DNS clients by Feng Wang (@chemwolf6922) in #42025
- Fix WSLC --rm container cleanup after reboot by beena352 in #42014
- Expose VGEM DRM nodes to WSLC GPU containers by Kevin Vega (@kvega005) in #42015
- Add automatic logging during MSI installs by Flor Chacón (@florelis) in #42033
- Fix VHD operations on older Windows versions by Ben Hillis (@benhillis) in #42041
- Add network support to the WSLC SDK by ggarzia-MSFT in #42002
- Log subnet parse failures and test container connectivity by ggarzia-MSFT in #42045
- Fix ring buffer handling by Feng Wang (@chemwolf6922) in #42028
- Fix consomme falling back to none when ipv6 is disabled with a dual stack host by Feng Wang (@chemwolf6922) in #42026
- Retry vsock bind()/listen() on EINTR under mirrored networking by David (@davidcristian) in #42035
- Add exec events to WSLC by beena352 in #41999
- Default wslc image import to the latest tag when no tag is given by ggarzia-MSFT in #42065
- WSLC-managed container restart policy for run & create - 'always' and 'no' only by David Bennett (@dkbennett) in #41986
- Fix warning handle duplication crashes by David Bennett (@dkbennett) in #42047
- Fix deadlock on container --rm restart logic by Kevin Vega (@kvega005) in #42067
- Always capture guest state if the tests time out by Blue (@OneBlue) in #42066
- Publish WSLC init process control after WSLCProcess construction by ggarzia-MSFT in #42069
- Release COMImplClass caller registration before dropping impl reference by ggarzia-MSFT in #42072
- Treat only real consoles as console stdin in wslc relay by ggarzia-MSFT in #42073
- Fix the uninitialized enable inbox gpu libs option by Feng Wang (@chemwolf6922) in #42059
- Fix path unescape character range by Feng Wang (@chemwolf6922) in #42062
- Avoid VHDX fsync slowdown after buffered host reads by niedong (@niedong) in #42057
- Fix potential use-after-free if WSLCContainerImpl is released after the VM terminates by Blue (@OneBlue) in #41979
- Fix uninitialized values in WslCoreVm by Feng Wang (@chemwolf6922) in #42080
- Update Microsoft.WSL.Kernel version to 6.18.58.1-1 by Mitchell Levy (@chessturo) in #42084
- Don't use a NAT network if the address range conflicts with docker's bridge network by Blue (@OneBlue) in #42036
- Add missing user impersonation logic on various filesystem operations by Blue (@OneBlue) in #42048
- Fix: resolve drive letter relative to the client pwd instead of the service by Feng Wang (@chemwolf6922) in #42076
- Fix: handle windows installer MSI error correctly by Feng Wang (@chemwolf6922) in #42060
- Wait for init to exit before trying to remount the distro VHD by Blue (@OneBlue) in #41669
- Allow WSLC networks to be referenced by name, Id, or Id prefix by ggarzia-MSFT in #42046
- Only register the container event callback when the container is fully initialized by Blue (@OneBlue) in #42085
- Update Microsoft.WSL.DeviceHost to version 1.2.69-0 by Ben Hillis (@benhillis) in #42095
- Add missing impersonatation when handling a clunk request in plan9 by Blue (@OneBlue) in #42088
- Fix potential use-after-free in DockerEventTracker by Blue (@OneBlue) in #42098
- WSLC: Fix stale restart cleanup affecting newer container restarts by David Bennett (@dkbennett) in #42070
- Fix potential deadlock on init's global locks by Blue (@OneBlue) in #42099
- Isolate plugin cgroups by Feng Wang (@chemwolf6922) in #41993
- Add optional host loopback support to WSLC SDK by beena352 in #42087
New Contributors
- James Alickolli (@licon4812) made their first contribution in #41753
- David (@davidcristian) made their first contribution in #42035
- niedong (@niedong) made their first contribution in #42057
Full Changelog: 3.0.4...3.0.5
3.0.4
What's Changed
- Fix the security model link in SECURITY.md by Franco Ceballos Rastello (@xThreeh) in #41835
- Fix RLCPlus distribution manifest formatting by Ben Hillis (@benhillis) in #41841
- Update GitPython to resolve Dependabot alerts by Ben Hillis (@benhillis) in #41840
- Fix CaseSensitivityDeepNesting test build failure by ggarzia-MSFT in #41849
- Reorganize test/windows into common/, wsl/, and wslc/ by ggarzia-MSFT in #41661
- Fix e2fsck return code 1 treated as failure in resize by Feng Wang (@chemwolf6922) in #41720
- Clarify architecture and development commands in Copilot instructions by Ben Hillis (@benhillis) in #41843
- Add WSLC volume events by beena352 in #41831
- Fix incorrect AAAA DNS resolution for static DNS records causing resolution failure in musl by Blue (@OneBlue) in #41859
- Fix race condition causing potential use-after-free in NatNetworking by Blue (@OneBlue) in #41850
- Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse() by Blue (@OneBlue) in #41855
- Make the store publish stage opt-in by Blue (@OneBlue) in #41857
- Remove the gate before publishing nuget packages, and rename to avoid confusion by Blue (@OneBlue) in #41858
- Fail consommé bind() requests that fail in Windows by Blue (@OneBlue) in #41856
- Don't add swiotlb=force with the hv_pci swiotlb pool by Oleg Tsvetkov (@Hekzory) in #41829
- Fix potential crash caused by error during session initialization by Blue (@OneBlue) in #41887
- Add a /hyperv to triage hyper-v issues by Blue (@OneBlue) in #41885
- Localization change from build: 160297307 by Blue (@OneBlue) in #41890
- Increase the default commited stack size to 64KB by Blue (@OneBlue) in #41888
- Suppress systemctl is-system-running polling error messages by Feng Wang (@chemwolf6922) in #41881
- Disable unsafe move constructors in ScopedMultiRelay by Blue (@OneBlue) in #41897
- Wait for the drvfs initialization thread to exit before destroying WslCoreVm by Blue (@OneBlue) in #41895
- Fix potential use-after-free in the stdin relay thread by Blue (@OneBlue) in #41894
- Release resources that could call callbacks before returning from HcsVirtualMachine's constructor on failure by Blue (@OneBlue) in #41908
- Clarify volume event comments by beena352 in #41889
- Add wslc cp alias for wslc container cp by ggarzia-MSFT in #41902
- Fix potential starvation in COMImplClass::Disconnect() by Blue (@OneBlue) in #41912
- Use repository NuGet configuration for out-of-tree builds by Tuna Birgün (@tunabirgun) in #41916
- Fix a potential use-after-free between plugin calls and WSLCSessionManagerImpl's destruction by Blue (@OneBlue) in #41911
- Add missing synchronization around load WinHttp proxy methods by Blue (@OneBlue) in #41909
- Fix missing synchronization on m_httpProxyStateTracker access by Blue (@OneBlue) in #41907
- Fix potential deadlock in between VM exit callback and session shutdown by Blue (@OneBlue) in #41910
- Fix potential use-after-free in EpollWatcher by Blue (@OneBlue) in #41896
- Match docker -v parsing: LTR spec parser, shared validation, config-v… by ggarzia-MSFT in #41905
- Mount bind volumes during cp on non-running containers by ggarzia-MSFT in #41906
- reap sub processes during shutdown to unblock systemd by Feng Wang (@chemwolf6922) in #41899
- Fix incorrect srwlock usage when initializing drvfs by Blue (@OneBlue) in #41925
- Fix potential deadlock in WSL1 instance termination by Blue (@OneBlue) in #41922
- Fix potential use-after-free if the WSLC VM is killed while the last session COM reference is being released by Blue (@OneBlue) in #41946
- Try smaller port ranges when mirrored mode cannot allocate ports by Feng Wang (@chemwolf6922) in #41880
- Fix wslservice potentially killing wslcsession process too early by Blue (@OneBlue) in #41951
- Localization change from build: 160716380 by Blue (@OneBlue) in #41954
- Fix wslc inspect for slash-prefixed container names by beena352 in #41923
- Fix WSLC GPU hook execution and library discovery by Kevin Vega (@kvega005) in #41886
- Fix NAT relay listener lifetime across active connections by Jack Moffitt (@metajack) in #41948
- Warn when nested virtualization capability detection fails by Ben Hillis (@benhillis) with @Copilot in #41942
- Fix potential hang when a distribution is terminated while waiting on OOBE by Blue (@OneBlue) in #41924
- Fix race condition in Signal() / ResizeTty() process logic by Blue (@OneBlue) in #41929
- Fix potential use-after-free in WSLCContainer by Blue (@OneBlue) in #41949
- Remove bundled perf integration by Ben Hillis (@benhillis) in #41904
- Fix potential hang while waiting for timezone thread by Blue (@OneBlue) in #41926
- Run DCAT release jobs on a custom pool by Flor Chacón (@florelis) in #41961
- Fix potential deadlock + use-after-free in WatchForExitedProcesses by Blue (@OneBlue) in #41928
New Contributors
- Franco Ceballos Rastello (@xThreeh) made their first contribution in #41835
- Oleg Tsvetkov (@Hekzory) made their first contribution in #41829
- Tuna Birgün (@tunabirgun) made their first contribution in #41916
- Jack Moffitt (@metajack) made their first contribution in #41948
Full Changelog: 3.0.3...3.0.4
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