mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 31 Aug 2026

WSL review

Windows Subsystem for Linux lets Windows users run Linux command-line tools and applications alongside their Windows software. This repository contains the open-source WSL application and its developer build loop, while the Linux kernel, GUI integration, and user documentation live in related repositories.

+8 / 1dstars / 7d
Verdict

Our run installed 50 Python packages and built WSL's distributions/ helper in 6 seconds, but pytest collected 0 tests, so it does not prove that WSL itself builds or passes on Windows. For most Windows developers, WSL remains the first option to try because wsl --install, Microsoft ownership, active stable releases, and direct host integration are hard to match. Source contributors need a dedicated Windows toolchain, while sleep-sensitive and tightly governed machines should test their exact hardware, networking, telemetry, and update policies before depending on it.

We ran it

Lab card: what happened when we ran WSLScreenshot of WSL (wsl.dev)
Install✓ · 49s50 packages · 62 MB
Build✓ · 6s
Tests✗ · 11s0 passed · 0 failed of 0 (pytest)
Known vulns1(pip-audit)
Repo1466 files~323,982 lines of source · 35.1 MB · 7 CI workflows · tests dir

Answers from our run

Does WSL build from source?

Dependencies installed in 49 seconds (50 packages), and the build succeeded in 6 seconds. We cloned commit 4bfbaca into a clean Debian container with 3 CPUs and no project-specific setup.

Do WSL's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does WSL have known vulnerabilities in its dependencies?

pip-audit flagged 1 known advisory in the dependency tree at the time of our run.

Who should not use WSL?

macOS or Linux hosts: WSL is a Windows subsystem, and its documented build loop depends on Windows tooling.

What are the alternatives to WSL?

Multipass, Vagrant, Lima. Our run installed 50 Python packages and built WSL's distributions/ helper in 6 seconds, but pytest collected 0 tests, so it does not prove that WSL itself builds or passes on Windows.

Setup4/5One-command user install; source work needs a full Windows toolchain
Docs5/5User, build, test, debug, architecture, and privacy docs are clear
Community5/533,581 stars with daily code and issue activity
Maturity5/5Stable 2.7.12 release with active preview and support channels

Discussed on

  1. hnWindows file access performance compared to Linux518 points
  2. hnWindows Subsystem For Linux a.k.a. WSL 1.0.0 released182 points
  3. hnWindows Subsystem for Linux 2.0 release74 points
  4. hnWSL's GitHub repository is being hit with a wave of Chinese spam issues9 points
  5. hnMicrosoft/WSL pull requests taken over by malicious GH action8 points

Who it’s for

Windows developers who need Linux shells, package managers, compilers, and services on the same machine.
Teams building software for both Windows and Linux without maintaining a separate daily-use computer.
Contributors with a Windows development machine, Visual Studio 2022, CMake, and permission to enable Developer Mode.
Administrators prepared to manage WSL updates, distributions, Windows diagnostics, and host integration.

Who it’s NOT for

macOS or Linux hosts: WSL is a Windows subsystem, and its documented build loop depends on Windows tooling.
Contributors seeking a quick portable source build: Microsoft requires Visual Studio 2022 workloads, CMake, Developer Mode or administrator rights, packaging, and Windows-specific tests.
Buyers who need this review to prove the WSL runtime passed tests: our Debian harness only reached ./distributions/, where pytest collected 0 tests and exited 5.
Teams that need the kernel, GUI layer, and user docs in one repository: Microsoft keeps WSL2-Linux-Kernel, WSLg, and microsoftdocs/wsl separately.
Laptop workflows that cannot tolerate resume failures: open issue 8696 tracks WSL becoming unresponsive after hibernation and remained active in August 2026.
Organizations that prohibit Windows diagnostic collection and cannot change the host policy: WSL telemetry follows the Windows Diagnostics & Feedback setting.

Setup reality

Our sandbox entered the ./distributions/ Python subproject at commit 4bfbaca. It installed 50 packages in 49 seconds and used 62 MB, then its build check succeeded in 6 seconds. Pytest failed with exit code 5 after 11 seconds because it collected 0 tests: 0 passed and 0 failed. Pip-audit found 1 known vulnerability.

That run did not build WSL. Microsoft documents a Windows source setup with CMake 3.25 or newer, Visual Studio 2022 plus required workloads, and Developer Mode or administrator rights. The setup script can install prerequisites through WinGet, then CMake generates the Visual Studio solution.

Ordinary users have the easier path: run wsl --install from a Windows command line. Source deployment produces an MSI or uses a PowerShell deploy script, and the real test runner is a Windows test.bat. ARM64 development also needs the x64 .NET 6.0 runtime for WiX.

One Windows command installs WSL, while source work needs Visual Studio 2022

For a user, the entry point is unusually small: run wsl --install in a Windows command line. WSL then provides Linux command-line tools, utilities, and applications alongside Windows programs without a dual boot. The value is the boundary crossing. A developer can keep Windows editors and desktop software while using a Linux shell, package manager, compiler, or local service on the same machine.

Building the repository is a different product experience. Microsoft's developer guide requires CMake 3.25 or newer, Visual Studio 2022 with the repository's selected workloads, and Developer Mode or administrator privileges for symbolic links. A PowerShell setup script uses WinGet Configuration to install prerequisites. CMake generates wsl.sln, and the output becomes an MSI or is deployed through another PowerShell script.

WSL integrates Linux with Windows instead of creating a neutral VM workflow

WSL is designed for a Windows host. Its convenience comes from sharing the daily machine, Windows filesystem access, command interoperability, networking behavior, and Microsoft-managed updates. Developers who want a disposable machine with an explicit hardware boundary may prefer Multipass or Vagrant. Teams standardizing one environment definition across Windows, macOS, and Linux also need another layer, because WSL itself is not available on the other 2 host families.

The repository covers both WSL 1 and WSL 2 development paths, and its test runner accepts a version switch. The surrounding system is split by responsibility: the WSL2 Linux kernel is in microsoft/WSL2-Linux-Kernel, Linux GUI support is in microsoft/wslg, and user-facing documentation is in microsoftdocs/wsl. That division is reasonable at Microsoft scale, but one checkout does not contain every component that affects a user's result.

What happened when we ran it

Our fresh Debian container cloned commit 4bfbaca and selected the Python project under ./distributions/. Installation succeeded in 49 seconds, adding 50 packages and using 62 MB. Its build check passed in 6 seconds. The whole checkout contained 1,466 files, about 323,982 source lines, and 35.1 MB, with 7 CI workflow files, no Dockerfile, and a tests directory.

The test step failed with exit code 5 after 11 seconds because pytest found no tests in that selected subproject. The complete log tail was no tests ran in 0.00s; it reported 0 passed and 0 failed out of 0. Pip-audit found 1 known vulnerability in the installed Python environment. This is a failed harness step and a coverage gap, not evidence that a WSL runtime test failed.

Microsoft's actual WSL test route is Windows-specific. After a Windows build, developers run bin\<platform>\<target>\test.bat, optionally select WSL 1, or filter to unit tests and individual cases. Our Linux sandbox did not generate the Visual Studio solution, build the WSL binaries, install an MSI, create a test distribution, or execute that batch runner. Any review that turned 0 collected Python tests into a judgment on the full runtime would be misleading.

The distributions folder validates images rather than the WSL runtime

The measured Python subproject is still real work. Its scripts validate distribution manifests and downloaded .wsl images, check SHA-256 values and archive formats, inspect ELF architecture, examine configuration keys, verify file ownership and permissions, and warn about systemd units discouraged under WSL. The requirements file pins 5 direct Python packages, while our resolved environment contained 50 packages.

Those checks explain why the generic harness selected the folder, but they also explain the empty pytest result. The directory contains validator scripts and DistributionInfo.json, not a Python test suite. A better cross-platform check for this repository would invoke the validator with a real manifest or archive. A full product check still requires Windows because WSL's C++, packaging, host services, and integration tests depend on that platform.

Windows diagnostics control WSL telemetry

The privacy document says WSL collects usage, stability, and performance diagnostics through Windows telemetry. Users can disable diagnostic data in Windows Settings under Privacy and Security, and the same page offers a way to view submitted diagnostic data. The source identifies telemetry calls through WSL_LOG_TELEMETRY. This is more specific than a vague privacy promise, though the practical control remains a Windows policy rather than a WSL-only switch.

Contributors also need to handle logs carefully. The guide routes security issues and blue-screen crashes to the Microsoft Researcher Portal instead of public GitHub issues. Networking reports may include packet captures, WSLg data, or crash dumps produced by the diagnostic script. That is appropriate for debugging a host integration layer, but organizations should review captured material before attaching it to a public issue or sending it outside the company.

Version 2.7.12 is stable while 2.9.9 remains a preview

GitHub showed 33,581 stars, 1,810 forks, and 989 combined issues and pull requests. The code was pushed on August 31, 2026. The latest stable release was 2.7.12 from August 18, while 2.9.9 was published as a prerelease on August 25. Current issue activity covers filesystems, networking, GPU behavior, sleep and resume, and new command work, which fits the breadth of a Windows and Linux boundary layer.

Issue 8696, opened in 2022 and updated on August 31, had 519 comments about WSL becoming unresponsive after hibernation. One crowded issue does not describe every laptop, and the combined 989 count includes pull requests. It does show why a mature, heavily used system still needs workload-specific testing. WSL is the practical default for Linux development on Windows, but stable release status cannot guarantee every Windows build, driver, network mode, filesystem path, and sleep cycle.

Alternatives

ProjectWhat it isPick it when
MultipassA tool for creating and managing isolated Ubuntu virtual machines.pick this instead when disposable Ubuntu VMs and clearer machine isolation matter more than deep Windows integration.
VagrantA workflow for defining and distributing reproducible development machines across providers.pick this instead when the environment must be described in project files and reproduced across several host platforms.
Lima gh↗Linux virtual machines aimed mainly at container workloads on macOS and Linux.pick this instead when the host is macOS or Linux and the goal is a lightweight Linux VM for containers.

What people are saying

  1. [velocity-scout] microsoft/WSL

Sources

  1. Windows Subsystem for Linux repository
  2. WSL README
  3. Building and testing WSL
  4. WSL data and privacy
  5. WSL 2.7.12 stable release
  6. WSL hibernate issue 8696
  7. Measured commit 4bfbaca

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →