For years, setting up WSL meant enabling Windows features manually, downloading a kernel update package separately, and installing a distro as separate steps. The wsl --install command collapsed all of it into one line.
WSL dropped its 'Preview' label in the Microsoft Store on November 22, 2022, decoupling its update cycle from Windows itself entirely — meaning WSL improvements could ship on their own schedule going forward.
For years, software expecting systemd to be running as PID 1 simply didn't work correctly inside WSL. That changed in September 2022, closing one of WSL's longest-standing compatibility gaps.
When Windows 11 shipped on October 5, 2021, Linux compatibility via WSL2 was no longer an optional add-on developers had to know to seek out — it was part of the platform's story from day one.
At Build 2019, Microsoft revealed WSL2 — not an incremental update, but an entirely different architecture running a genuine Linux kernel inside a purpose-built lightweight virtual machine.
Announced at Build 2020 and released to Windows Insiders the following spring, WSLg let a Linux graphical application's window appear on the Windows desktop like any native app — no separate remote desktop session required.
For years, WSL distros ran without systemd — meaning services expecting it simply failed. Here's why that gap existed, and what changed architecturally to finally close it.
Linux and Windows filesystems handle permissions, case sensitivity, and paths in fundamentally different ways. WSL's cross-OS file access works by translating between them at the protocol level — and that translation has real performance costs.
Training a machine learning model inside WSL2 using your actual GPU sounds like it shouldn't work through a virtual machine layer at all. Here's the specific virtualized GPU mechanism that makes it possible.
WSL2's lightweight VM claims memory dynamically as Linux processes need it — but historically gave that memory back to Windows only reluctantly. Here's what's actually happening, and what you control via .wslconfig.