github WSL:
What's Changed
- Run the distro validation script daily by Blue (@OneBlue) in #40920
- Added WSLc API docs by Craig Loewen (@craigloewen-msft) in #40922
- Add a script to validate & fix mismatches CRLF in the repo by Blue (@OneBlue) in #40933
- Remove '.' from HCS suffix by Blue (@OneBlue) in #40946
- fix socket channel set exit events by Feng Wang (@chemwolf6922) in #40924
- Use strict detection of http line ending for docker response by yao-msft in #40932
- CLI: Fix hang with exec/run -i with self-exiting command and open stdin by David Bennett (@dkbennett) in #40921
- Don't append the build prefix when a line is being continued from a previous log entry by Blue (@OneBlue) in #40947
- Implement --stop-timeout in wslc create|run and support -1 (infinite) timeouts by Blue (@OneBlue) in #40919
- fix: use lowercased key when validating windowsterminal.profileTemplate by Syed Osama Ali Shah (@Osamaali313) in #40911
- Use throwing overloads in SetupTestDirectory by beena352 in #40964
- Publish the WSLC nuget package on github releases by Blue (@OneBlue) in #40962
- Support arbitrary network driver options in wslc network create by beena352 in #40859
- Fix various issues in the virtionet tests by Blue (@OneBlue) in #40963
- Don't use an overlay for the gpu libraries if the inbox folder isn't present by Blue (@OneBlue) in #40969
- Fix Lost sub directory structure when mapping to a VHD volume by Kevin Vega (@kvega005) in #40857
- Add support for callback when loading images and display loaded images in wslc image load by Blue (@OneBlue) in #40960
- Bump Kali to 2026.2 by g0tmi1k (@g0tmi1k) in #40982
- Fix https proxy not set when pac is used by Feng Wang (@chemwolf6922) in #40950
- Fix E_ACCESSDENIED during download if temp is hidden by Feng Wang (@chemwolf6922) in #40708
- Add configurable storage path for the default wslc session by Ben Hillis (@benhillis) in #40956
- Added samples to the API by Craig Loewen (@craigloewen-msft) in #40930
- Document what the session creation parameters do, and which of them ae visible to all users on the machine by Blue (@OneBlue) in #41020
- fix(l10n): add localization guidance comments for commonly mistranslated terms by Gordon Lam (@yeelam-gordon) in #14440
- Cap storage hw queue count to 4 by Feng Wang (@chemwolf6922) in #40975
- test(drvfs): add O_APPEND ftruncate coverage, skip on virtiofs by Ben Hillis (@benhillis) in #41032
- Update validate-line-endings.py to not depend on pip packages by Blue (@OneBlue) in #41022
- Fix potential use-after-free on the container deletion path by Blue (@OneBlue) in #41018
- Remove comment in packages.config causing powershell parsing error by Blue (@OneBlue) in #41036
- Collect WSLg logs and crash dumps in collect-wsl-logs.ps1 by Ben Hillis (@benhillis) in #40913
- Log an error when connect() fails in the NAT mode relay by Blue (@OneBlue) in #41033
- Mark routes via a link-local gateway as onlink to fix VPN /32 networking failures by Ben Hillis (@benhillis) in #41003
- Add wslc network connect and disconnect commands by beena352 in #41011
- Fix flaky E2E network list test assertion by beena352 in #41009
- Add support for container healthchecks by Blue (@OneBlue) in #41012
- Bump DeviceHost to 1.2.48-0 and enable virtiofs O_APPEND ftruncate test by Ben Hillis (@benhillis) in #41044
- Read /etc/locale.conf when configuring the distro locale by i4M1k0SU (@i4M1k0SU) in #40940
- Retry to delete WSL distribution shortcut for up to 10 seconds by Blue (@OneBlue) in #41046
- Make the release pipeline logic to push to the store optional (and disabled by default) by Blue (@OneBlue) in #41045
- Add wslc container cp command for tar archive upload by Pooja Trivedi (@ptrivedi) in #40835
- Pre-download socat to avoid test failing due to connectivity issues by Blue (@OneBlue) in #41035
- Enable rollback on install failures during update by Gordon Lam (@yeelam-gordon) in #40524
- CLI: Help improvements - Table output with color and routing support by David Bennett (@dkbennett) in #40848
- Fix: handle partial write in stdio forwarding by Feng Wang (@chemwolf6922) in #41065
- Protect critical WSL processes under heavy load with cgroup & isolate distro cgroups by Feng Wang (@chemwolf6922) in #40519
- Localization change from build: 152044029 by Blue (@OneBlue) in #41066
- Add --format option to wslc version command by ggarzia-MSFT in #41078
- Add missing error code mappings found in user visible errors by Feng Wang (@chemwolf6922) in #41074
- Refine CODEOWNERS for WSLC by Ben Hillis (@benhillis) in #41079
- Start the plan9 server on WSL2 even when automount and mountFsTab are… by Shuo Li (@Lsseeker) in #41057
- Remove hard-coded password from C# API docs by Ben Hillis (@benhillis) in #41098
- Simplify e2e build-test image cleanup with per-test RAII ownership by ggarzia-MSFT in #41094
- Use bespoke interfaces to communicate with wsldevicehost by Brian Perkins (@Brian-Perkins) in #41099
- CLI: Update all non-help output to use Reporter by David Bennett (@dkbennett) in #41010
- CLI: Route wslc warnings through Reporter by David Bennett (@dkbennett) in #41111
- Fix cgmanifest.json hash format and add type:git entries for NOTICE generation by beena352 in #41025
- Update .NET runtime packages to 10.0.10 by Ben Hillis (@benhillis) in #41127
- Use single virtiofs device for all shares by Daman Mulye (@damanm24) in #41129
- Bump Linux SDK to 1.23.0 and guard char->wide formatters to Windows by Ben Hillis (@benhillis) in #41071
- Fix MoveDistribution VHD ownership restore to reuse the resolved file handle by Ben Hillis (@benhillis) in #41131
- Add --ip, --link, --link-local-ip, --driver-opt, --network-alias flag… by beena352 in #41070
- CLI: Add quiet support to pull and align with Docker by David Bennett (@dkbennett) in #41121
- WSLC: Add UDP and IPv6 support for exposed image ports by David Bennett (@dkbennett) in #41124
- CLI: Make container id required for stop command by David Bennett (@dkbennett) in #41108
- Fix various issues in the distro validation script by Blue (@OneBlue) in #41141
- Handle offlink default gateways in GNS by Ben Hillis (@benhillis) in #41130
- Fix spurious ERROR log for unsupported optional cgroup controllers by Ben Hillis (@benhillis) in #41122
- Retry to delete distribution VHD for up to 10 seconds by Blue (@OneBlue) in #41153
- Bump gitpython from 3.1.50 to 3.1.52 in /tools/devops by Dependabot (@dependabot)[bot] in #41159
- Track implicit autobind ports from listen() in Consomme networking by Ben Hillis (@benhillis) in #41125
- Fix a teardown race in HttpProxyStateTracker by Ben Hillis (@benhillis) in #41097
- Update GitHub Actions workflow for issue comments by piercosta in #41142
- virtiofs: Use aggregate share feature in WSLC by Daman Mulye (@damanm24) in #41151
- Fix recurring TSA onboarding failure in release builds by Ben Hillis (@benhillis) in #41167
- WSLC: Refactor ParseImage and ParseRepository (PR Feedback followup) by David Bennett (@dkbennett) in #41154
- Update Tumbleweed v20260724.0 by Scott Bradnick (@sbradnick) in #41168
- Use an azure key vault to store Github tokens for automated pull requests & release creation by Blue (@OneBlue) in #41158
- Improve WSL2 guest memory reclaim by Ben Hillis (@benhillis) in #41096
- CLI: Align WSLC argument parser with Docker flag and value semantics by David Bennett (@dkbennett) in #41160
- fixed title error visibility by Shawn Yuan (@shuaiyuanxx) in #41118
- Follow up to the cgroup PR #40519 by Feng Wang (@chemwolf6922) in #41073
- Use 4 request queues for aggregate virtiofs devices by Ben Hillis (@benhillis) in #41169
- Address memory reclaim follow-ups from #41096 by Ben Hillis (@benhillis) in #41171
- Add --ip-range option to network create by beena352 in #41138
- wslc: switch image build from docker build to docker buildx build by beena352 in #41133
- Serialize move/resize/set-sparse against in-progress conversions by Ben Hillis (@benhillis) in #41170
- Pin .resw files to CRLF via .gitattributes by Ben Hillis (@benhillis) in #41186
- Use RetryWithTimeout for ManageRejectedWhileLocked lock wait by Ben Hillis (@benhillis) in #41188
- WSLC SDK install API update by JohnMcPMS in #40949
- Use canonical path when copying files from containers by Blue (@OneBlue) in #41190
- Add a 'Error information from the engine:' prefix to error messages returned from docker when the current display language is not english by Blue (@OneBlue) in #41187
- Add --secret flag to image build command by ggarzia-MSFT in #41106
- Auth API update by JohnMcPMS in #41197
- Validate error message in NetworkCreateInvalidIpRangeTest by beena352 in #41198
- Cap guest usage of host ephemeral range to half of the ports in mirrored mode by FetoiuCatalin in #41085
- Add CSV parsing helpers to shared string library by ggarzia-MSFT in #41207
- WSLc Container Open SDK support by JohnMcPMS in #41199
- Add comment about support floor by JohnMcPMS in #41219
- Add missing image build options in nuget by Feng Wang (@chemwolf6922) in #41037
- Fix: add systemd unit to make /mnt/wsl recursive slave before umount by Feng Wang (@chemwolf6922) in #41086
- Warn before opening downloaded WSL distributions by Ben Hillis (@benhillis) in #41214
- archlinux: Release 2026.08.01.174141 by Arch Linux Technical User (@archlinux-github) in #41225
- CLI: Unify interactive input and output in Reporter by David Bennett (@dkbennett) in #41215
- Add --output flag to wslc build by ggarzia-MSFT in #41157
- CLI: Fix UTF-8 encoding in non-tty relay use by David Bennett (@dkbennett) in #41235
- Add a UserConfig setting to use local wsldevicehost binaries instead of the nuget package by Blue (@OneBlue) in #41241
- Added outcome telemetry for cold start by Shawn Yuan (@shuaiyuanxx) in #41200
- Use explicit tokens for user registry access by Ben Hillis (@benhillis) in #41245
- Fix minor issues found during code review by Feng Wang (@chemwolf6922) in #41104
- Fix: Un-escape the value before setting LANG by Feng Wang (@chemwolf6922) in #41103
- fix: port 0 tracking not working for threads by Feng Wang (@chemwolf6922) in #41051
- wslc: idle-terminate inactive per-user session VMs by Ben Hillis (@benhillis) in #41077
- Implement skipped wslc E2E test by AmirMS (@AmelBawa-msft) in #41243
- wslc: Run saved state cleanup as user by Ben Hillis (@benhillis) in #41259
- Add timeout to create process accepts by Feng Wang (@chemwolf6922) in #41252
- Add version resource to wslc.exe by AmirMS (@AmelBawa-msft) in #41266
- Bind KdRelay to loopback by Ben Hillis (@benhillis) in #41260
- virtionet: send runtime updates to network device by Brian Perkins (@Brian-Perkins) in #41263
- Update SLE 16.0 for QU3 by Scott Bradnick (@sbradnick) in #41262
- wslc: emit --format json output on a single line by AmirMS (@AmelBawa-msft) in #41268
- Inherit image labels on containers by beena352 in #41246
- Update GitPython to 3.1.58 by Blue (@OneBlue) in #41275
- Retry distro file deletion under ACCESS_DENIED during distro unregistration by Blue (@OneBlue) in #41274
- Added keep alive setting by Craig Loewen (@craigloewen-msft) in #41109
- Enable unity builds for wsltests by ggarzia-MSFT in #41247
- Normalize NULL char* to in Linux logging by Feng Wang (@chemwolf6922) in #41271
- Fix: Update plan9 registration with the new default uid after OOBE by Feng Wang (@chemwolf6922) in #40977
- Add --volumes option to wslc container rm command by AmirMS (@AmelBawa-msft) in #41265
- Add --iidfile to wslc image build by ggarzia-MSFT in #41212
- Add support for host loopback by Blue (@OneBlue) in #41264
- Add pipeline stage to produce DCAT submission files by Flor Chacón (@florelis) in #41236
- Add registry allowlist support to image builds by beena352 in #41211
- Extend line ending validator to cover cmake files by ggarzia-MSFT in #41289
- CLI: Rename Reporter class to Terminal by David Bennett (@dkbennett) in #41276
- CLI: Cache converted CLI arguments with on-demand revalidation, and unify typed value accessors by David Bennett (@dkbennett) in #41189
- Fix default route classification logic by Feng Wang (@chemwolf6922) in #41278
- Fix force shutdown deadlock race by Feng Wang (@chemwolf6922) in #41269
- Notice change from build: 154365024 by Blue (@OneBlue) in #41298
- wslc: emit list command --format json output as one object per line by AmirMS (@AmelBawa-msft) in #41280
- CLI: Add --pull option to container create and run by David Bennett (@dkbennett) in #41304
- CLI: Make argument validation idempotent and adjust global argument freezing by David Bennett (@dkbennett) in #41305
- Update Microsoft.WSL.DeviceHost to 1.2.60 by Blue (@OneBlue) in #41292
- Address review follow-up on WSLContainerRegistryAllowlist policy by beena352 in #41306
- Restore pipeline logic to push updates to the store by default by Blue (@OneBlue) in #41308
- Fix unqualified WEX::Logging::Log breaking release builds by Blue (@OneBlue) in #41315
- Fix excessive /proc//mountinfo query in p9 server by Feng Wang (@chemwolf6922) in #41312
- mountutil: skip empty tokens in mount option parser by Eamon (@Eamon2009) in #41311
- Add wsldevicehostproxystub.dll to the list of target to build during release builds by Blue (@OneBlue) in #41317
- Make paths absolute before weakly_canonical and add regression tests by ggarzia-MSFT in #41290
- add --progress to wslc build by ggarzia-MSFT in #41307
- Enable Unity build for wslclib and enable CI unity builds by ggarzia-MSFT in #41302
- Retry deleting distribution shortcuts for 10 seconds by Blue (@OneBlue) in #41329
- Draft: add manual VHDX compaction command for stopped WSL distros by Rafa Pradillo (@Guayamose) in #40481
- Mount plugin folders on behalf of the user owning the wsl session by Blue (@OneBlue) in #41331
- Update Microsoft.NETCore.App.Runtime to 10.0.11 by Blue (@OneBlue) in #41332
- Report cached build steps in wslc build output by ggarzia-MSFT in #41334
- Notice change from build: 154708324 by Blue (@OneBlue) in #41340
- Localization change from build: 154739322 by Blue (@OneBlue) in #41341
- Pin GitHub Actions to full-length commit SHAs by Dan Fiedler (@danfiedler-msft) in #41325
- Add Config.Image on container inspect by beena352 in #41336
- Support Docker-style network aliases in wslc by David Negstad (@danegsta) in #40972
- Use alpine instead of debian for registry push/pull test payloads by ggarzia-MSFT in #41338
- CLI: Align network list command to be consistent with Docker behavior by David Bennett (@dkbennett) in #41350
- CLI: Set defaults for signal arguments in stop/kill commands, update help documentation by David Bennett (@dkbennett) in #41348
- Bump the github-actions group with 3 updates by Dependabot (@dependabot)[bot] in #41347
- Simplify VHD ownership handling during distribution moves by Ben Hillis (@benhillis) in #41333
- Return non vhd volumes in container inspect by Blue (@OneBlue) in #41335
- Preserve token owner during distribution move rollback by Ben Hillis (@benhillis) in #41355
- Add --filter support to wslc network list by beena352 in #41318
- CLI: Help polish & add short, relevant help for usage/argument errors by David Bennett (@dkbennett) in #41316
- CLI: Fix shm-size and all text-to-byte size conversion and align them all to Docker by David Bennett (@dkbennett) in #41360
- Move Docker call outside network lock by beena352 in #41362
- Add --filter support to volume list by beena352 in #41359
- CLI: Add --mount support for create and run by David Bennett (@dkbennett) in #41337
- Fix potential spin in interop message relay by Feng Wang (@chemwolf6922) in #41319
- Treat EFSBADCRC as disk corruption by Feng Wang (@chemwolf6922) in #41368
- Warn the user if VMP is not installed when create instance fails by Feng Wang (@chemwolf6922) in #41357
- Use canonical path in DrvfsMountManyVirtioFsShares by Blue (@OneBlue) in #41371
- Localization change from build: 155144781 by Blue (@OneBlue) in #41372
- wslc: match docker output format for image list by ggarzia-MSFT in #41369
- Unmount the distribution before completing import by Blue (@OneBlue) in #41370
- Add a script to collect WSL logs in a loop by Blue (@OneBlue) in #41240
- Make sure that message structures are correctly zero-initialized by Ben Hillis (@benhillis) in #41373
- Add --ip flag to container create and run by beena352 in #41374
- Accept ERROR_SUCCESS_REBOOT_REQUIRED in the installer tests by Blue (@OneBlue) in #41389
- Split WSLCCreateSession event by Craig Loewen (@craigloewen-msft) in #41327
- Match docker's network list, inspect and prune output in wslc by ggarzia-MSFT in #41377
- Use unified kernel artifacts VHD layout by Ben Hillis (@benhillis) in #41267
- Make DrvFs initialization callback lifetime-safe by Ben Hillis (@benhillis) in #41218
- Cache container images during tests to prevent unnecessary loading by ggarzia-MSFT in #41353
- Add ADMX policy for privileged WSL container support by Ben Hillis (@benhillis) in #41401
- Fix: Reattach stale cached device after backing volume is reattached by Feng Wang (@chemwolf6922) in #41379
- Propagate LaunchInit error code by Feng Wang (@chemwolf6922) in #41380
- Add timeout for udp dns requests to avoid resource leak by Feng Wang (@chemwolf6922) in #41395
- Align wslc volume inspect and prune output with docker by ggarzia-MSFT in #41404
- Fix incorrect string -> wstring conversion, causing utf16 corruption by Blue (@OneBlue) in #41406
- Create a script to generate the Microsoft.WSL.TestData nuget package by Blue (@OneBlue) in #41405
- Enable discard for WSLc volumes by JohnMcPMS in #41411
- Poll for the result of operations during MSI installation by Blue (@OneBlue) in #41415
New Contributors
- Syed Osama Ali Shah (@Osamaali313) made their first contribution in #40911
- i4M1k0SU (@i4M1k0SU) made their first contribution in #40940
- Shuo Li (@Lsseeker) made their first contribution in #41057
- Dependabot (@dependabot)[bot] made their first contribution in #41159
- piercosta made their first contribution in #41142
- Rafa Pradillo (@Guayamose) made their first contribution in #40481
- Dan Fiedler (@danfiedler-msft) made their first contribution in #41325
- David Negstad (@danegsta) made their first contribution in #40972
Source:
Release 2.9.8 · microsoft/WSL
What's Changed Run the distro validation script daily by Blue (@OneBlue) in #40920 Added WSLc API docs by Craig Loewen (@craigloewen-msft) in #40922 Add a script to validate & fix mismatches CRLF...
See also:
Windows Subsystem for Linux - Microsoft Apps
Windows Subsystem for Linux (WSL) lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a traditional virtual machine or dual boot setup. Installing WSL through the store will...
apps.microsoft.com
Install Windows Subsystem for Linux (WSL) in Windows 11
This tutorial will show you how to install the Windows Subsystem for Linux (WSL) feature in Windows 10 and Windows 11. The Windows Subsystem for Linux lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows...
www.elevenforum.com
Find Windows Subsystem for Linux (WSL) Installed App Version in Windows 11
This tutorial will show you how to see which Windows Subsystem for Linux (WSL) app version you currently have installed for your account in Windows 10 and Windows 11. The Windows Subsystem for Linux lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and...
www.elevenforum.com









