Ben Hillis
aed1191a93
review: use minimal registry access and localized string in test assertion
...
- SetRebootRequiredMarker: KEY_ALL_ACCESS -> KEY_CREATE_SUB_KEY
- ClearRebootRequiredMarker: KEY_ALL_ACCESS -> KEY_WRITE
- Test assertion: replace brittle L"restart" substring check with
Localization::MessageUpdateRebootRequired() for locale robustness
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-22 10:48:18 -07:00
Ben Hillis
6dc890813a
test: properly clean up PendingFileRenameOperations in test cleanup
...
After the locked-file MSI scenario, MoveFileEx DELAY_UNTIL_REBOOT entries
remain in PendingFileRenameOperations. Add ClearPendingFileRenameOperationsForPath()
to strip WSL install path entries from that registry value before reinstalling,
allowing ValidatePackageInstalledProperly() (wsl echo OK) to succeed.
Also tightens the path match to require a separator boundary after the prefix
so sibling directories (e.g. 'WSL2') are not inadvertently matched.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-22 09:20:53 -07:00
Ben Hillis
189d97ce58
test: use ValidateInstalledVersion in reboot test cleanup
...
After the locked-file scenario, MoveFileEx DELAY_UNTIL_REBOOT entries are
still pending so distro launches fail until an actual reboot. Using
ValidateInstalledVersion (wsl --version) instead of ValidatePackageInstalledProperly
(wsl echo OK) for the cleanup check avoids a spurious failure.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-22 06:37:11 -07:00
Ben Hillis
bc7d36a066
Format InstallerTests.cpp
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-22 06:30:08 -07:00
Ben Hillis
c9d99858c6
test: remove FILE_SHARE_DELETE from locked file handle in reboot test
...
Without FILE_SHARE_DELETE, MSI cannot open system.vhd with DELETE intent,
making the 3010 (ERROR_SUCCESS_REBOOT_REQUIRED) outcome more reliable.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-21 12:50:52 -07:00
Ben Hillis
02969ca96b
Address PR feedback: don't block non-distro commands; auto-clear marker on success
...
The original CallMsiPackage() early-throw blocked every MSIX-lifted wsl.exe invocation (including --version, --list, --shutdown, --update) regardless of whether it would touch the half-installed files. Remove the early throw and rely on the service-side _CreateInstance check, which already gates exactly the distro-launching paths that actually depend on the broken install dir.
Also add ClearRebootRequiredMarker() and call it from any MSI install path that completes with ERROR_SUCCESS, so a 'wsl --shutdown; wsl --update' flow can self-recover without requiring an actual reboot.
Extend the integration test to verify wsl --version still succeeds with the marker set, and that the marker is cleared after a clean reinstall.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-20 14:32:16 -07:00
Ben Hillis
df33fb3307
Surface MSI reboot-required failures instead of silently dropping VHDs
...
When the embedded MSI in the Microsoft Store MSIX cannot replace a locked
file (most commonly system.vhd, which is mounted whenever a WSL2 instance
is running), Windows Installer renames the existing file to
C:\Windows\Installer\Config.Msi\<hex>.rbf, schedules the new file via
MoveFileEx(MOVEFILE_DELAY_UNTIL_REBOOT), and returns
ERROR_SUCCESS_REBOOT_REQUIRED (3010).
InstallMsipackageImpl in wslinstaller silently converted 3010 to
ERROR_SUCCESS and returned success to its caller. The user was told
nothing; their next wsl invocation hit a now-empty C:\Program Files\WSL
install dir (system.vhd physically gone until reboot) and produced a
confusing "vhd missing" failure - perceived as data loss.
This change:
* Stops swallowing 3010 in InstallMsipackageImpl. The MSI log is now
preserved on 3010 (previously deleted) to aid diagnostics.
* Sets a volatile registry marker
(HKLM\Software\Microsoft\Windows\CurrentVersion\Lxss\MSI\RebootPending)
using REG_OPTION_VOLATILE so the kernel auto-clears it on reboot. No
cleanup path is needed; the marker is gone iff the user has rebooted.
* Adds a marker check in LxssUserSession::_CreateInstance (service
side) which throws a localized user-facing error
(MessageUpdateRebootRequired) any time a client tries to launch a
distro while the reboot is pending. This catches all distro-launching
client paths through the single service entry point: wsl.exe (lifted
and MSI-installed), wslg.exe, bash.exe, VS Code Remote-WSL, etc.
* Also checks the marker on entry to CallMsiPackage and throws on 3010
in WaitForMsiInstall, so the wsl --update / lifted-client paths
surface the same error.
User-visible behavior:
> wsl
WSL was updated but a system restart is required to complete the
installation. Please reboot your machine and try again.
Error code: Wsl/Service/CreateInstance/0x80070bc2
The user reboots; the volatile key is destroyed by the kernel; Windows'
pending file-rename queue swaps the staged file into place; WSL works
again.
Adds an integration test, InstallerTests::UpgradeWithLockedFileReportsRebootRequired,
that exercises the full path: uninstalls the MSI, memory-maps a dummy
file at the install path to make it unrenameable, runs the MSIX
installer to drive the WslInstaller service, polls for the marker, then
verifies wsl echo OK fails with the expected message before cleaning up.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-20 13:48:57 -07:00
Blue
b2ba89de80
Quote msiexec arguments in the InstallerTests ( #40566 )
2026-05-18 10:02:54 -07:00
Blue
3e879d65cd
Add a new API to query the earliest supported client version ( #40067 )
...
* Add a new API to query the earliest supported client version
* Apply PR feedback
* Add test coverage
* Apply PR feedback
* Apply PR feedback
* Update logic
* Format
2026-05-07 15:57:44 -07:00
Ben Hillis
c414300f71
Address PR #40366 feedback: fix line endings and remove old install API test ( #40369 )
...
- Restore original CRLF line endings in DnsResolver.cpp, RingBuffer.cpp,
and WslCoreHostDnsInfo.h that were inadvertently changed to LF
- Remove commented-out WSLCInstall/WSLCInstallManual test methods that
referenced the old install API which no longer exists
Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com >
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-30 23:10:58 +00:00
Ben Hillis
358ab87d40
Add WSLC (WSL Containers) feature ( #40366 )
...
WSLC is a container runtime built on the Windows Subsystem for Linux, enabling Windows applications to create and manage Linux containers through a native Windows API surface.
Key components:
- wslc.exe: CLI for managing containers, images, volumes, and networks
(build, run, stop, inspect, push/pull from registries)
- wslcsession.exe: Per-user Windows service hosting container lifecycle,
storage management, and networking
- WSLC SDK: C++ and C# client libraries with NuGet packaging for
programmatic container management
- Container networking: port forwarding, DNS tunneling, virtio
networking, and HCN integration
- Storage: VHD-backed volumes, virtiofs file sharing, overlayfs layers
- GPU passthrough and device host proxy support
Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com >
Co-authored-by: 1wizkid <richard.fricks@hotmail.com >
Co-authored-by: AmirMS <104940545+AmelBawa-msft@users.noreply.github.com >
Co-authored-by: beena352 <beenachauhan@microsoft.com >
Co-authored-by: Blue <OneBlue@users.noreply.github.com >
Co-authored-by: Craig Loewen <crloewen@microsoft.com >
Co-authored-by: Darshak Bhatti <47045043+dabhattimsft@users.noreply.github.com >
Co-authored-by: David Bennett <dbenne@microsoft.com >
Co-authored-by: Feng Wang <wang6922@outlook.com >
Co-authored-by: Flor Chacon <14323496+florelis@users.noreply.github.com >
Co-authored-by: John Stephens <johnstep@microsoft.com >
Co-authored-by: JohnMcPMS <johnmcp@microsoft.com >
Co-authored-by: Kevin Vega <40717198+kvega005@users.noreply.github.com >
Co-authored-by: Pooja Trivedi <poojatrivedi@gmail.com >
Co-authored-by: ramesh-ramn <raman.ramesh@gmail.com >
Co-authored-by: Richard Fricks <richfr@microsoft.com >
Co-authored-by: yao-msft <50888816+yao-msft@users.noreply.github.com >
2026-04-30 13:34:43 -07:00
Ben Hillis
f9f1c38d9f
devicehost: stop re-signing and fix MSI installer failing to replace wsldevicehost.dll ( #40075 )
...
* devicehost: stop re-signing and fix MSI installer failing to replace
wsldevicehost.dll
* pr feedback
* use MSIRMSHUTDOWN = 1 instead of custom action
---------
Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com >
2026-04-06 15:10:26 -07:00
Ben Hillis
e5cb458e67
Ship initrd.img in MSI using build-time generation via powershell script ( #14424 )
...
* Ship initrd.img in MSI using build-time generation via tar.exe
Replace the install-time CreateInitrd/RemoveInitrd custom actions with a
build-time step that generates initrd.img using the Windows built-in
tar.exe (libarchive/bsdtar) and ships it directly in the MSI.
The install-time approach had a race condition: wsl.exe could launch
before the CreateInitrd custom action completed, causing
ERROR_FILE_NOT_FOUND for initrd.img.
Changes:
- Add CMake custom command to generate initrd.img via tar.exe --format=newc
- Add initrd.img as a regular file in the MSI tools component
- Remove CreateInitrd/RemoveInitrd custom actions from WiX, DllMain,
and wslinstall.def
- Remove CreateCpioInitrd helper and its tests (no longer needed)
- Update pipeline build targets to build initramfs instead of init
* pr feedback
* more pr feedback
* switch to using a powershell script instead of tar.exe
* powershell script feedback
* hopefully final pr feedback
---------
Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com >
2026-03-12 20:42:24 -07:00
Ben Hillis
0e263df6f3
Move from shipping the initrd to generating it during install. ( #14119 )
...
* Move from shipping the initrd to generating during package install.
* pr feedback
* working
* adjust custom action conditions
* update initrd test to cover more cases
* Update msipackage/package.wix.in
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* use stack buffer
* move initrd helper to filesystem.cpp and add unit test
---------
Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-07 12:47:56 -08:00
Blue
04eb4d4e8f
Increase the MSI installation timeout to 20 minutes ( #13489 )
...
* Increase the MSI installation timeout to 20 minutes
* Increase the MSI installation timeout to 20 minutes
2025-09-17 11:27:12 -07:00
Josh Soref
abce91d14b
Spelling ( #12954 )
...
* link: Collect WSL logs (recommended method)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* link: Advanced Authoring Tests in C++
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* link: CMake Documentation and Community
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* link: Collect WSL logs for networking issues
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* link: Collect WSL logs (recommended method)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: ; otherwise,
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: a
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: access
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: accessible
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: across
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: actively
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: adapters
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: address
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: addresses
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: and
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: appropriate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: argument
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: associated
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: attach
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: available
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: beginning
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: between
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: binaries
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: bound
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: buffer
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: buffers
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: cannot
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: canonical
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: capabilities
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: case-insensitive
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: case-sensitive
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: certified
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: command
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: committer
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: communication
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: complains
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: configuration
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: consumed
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: continue
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: converted
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: currently
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: customers
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: daemon
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: deferred
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: definitions
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: delimiter
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: delivered
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: dellink
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: derived
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: descriptor
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: destined
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: destruct
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: destructible
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: destructor
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: detach
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: differentiate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: directories
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: disassociate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: disposition
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: distribution
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: distro
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: duping
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: emitted
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: empty
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: environment
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: every time
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: exclusive
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: expected
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: expire
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: explicitly
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: fall back
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: false
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: fastfail
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: filesystem
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: first
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: followed
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: for
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: functionality
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: functionally
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: github
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: greater
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: guarantee
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: guaranteed
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: handles
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: hangup
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: hierarchy
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: hogwarts
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: hydrated
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: icrnl
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: implementation
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: implementing
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: initialize
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: instance
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: instantiate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: instantiations
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: intentionally
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: interpret
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: interpreter
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: irreversibly
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: iteration
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: iterator
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: its
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: kernel
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: kmsg
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: knowledge
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: maximum
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: mirrored
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: msftconnecttest
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: multi
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: multiple
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: mutable
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: namespace
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: nonexistent
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: notifications
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: occurred
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: occurring
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: otherwise,
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: outstanding
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: overridden
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: partition
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: pass through
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: passthrough
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: performs
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: periodically
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: positional
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: precedence
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: preexisting
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: preferring
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: prepopulate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: previous
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: privileges
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: process
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: processes
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: programmatically
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: protection
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: provided
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: reasonable
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: receive
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: received
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: red hat
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: reentrant
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: registered
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: regularly
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: relay
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: release
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: representing
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: requests
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: response
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: resurrect
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: retention
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: returned
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: security
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: semaphore
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: separate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: separator
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: service
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: set up
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: setup
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: severely
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: should
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: signal
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: similarly
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: simple
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: simplified
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: single
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: specified
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: splitting
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: standard
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: stress
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: succeed
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: success
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: successfully
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: supplementary
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: synced
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: system
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: take
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: than
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: that opening
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: the
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: threadpool
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: to
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: true
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: truncate
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: tunneling
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: unexpected
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: uninitialize
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: unique
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: unprivileged
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: unregistered
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: untrusted
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: upgrade
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: utility
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: validating
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: variant
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: variation
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: variations
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: verify
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: visible
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: whether
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: winget
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: worker
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: written
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* spelling: wslservice
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
* format source
---------
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
Co-authored-by: Ben Hillis <benhillis@gmail.com >
Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com >
2025-07-23 15:19:00 -07:00
WSL Team
697572d664
Initial open source commit for WSL.
...
Many Microsoft employees have contributed to the Windows Subsystem for Linux, this commit is the result of their work since 2016.
The entire history of the Windows Subsystem for Linux can't be shared here, but here's an overview of WSL's history after it moved to it own repository in 2021:
Number of commits on the main branch: 2930
Number of contributors: 31
Head over https://github.com/microsoft/WSL/releases for a more detailed history of the features added to WSL since 2021.
2025-05-15 12:09:45 -07:00