The Future of the Windows Subsystem for Linux

Posted on June 20, 2020 by Paul Thurrott in Windows 10 with 26 Comments

In Windows 10 version 2004, the Windows Subsystem for Linux (WSL) picks up additional capabilities and performance. But it’s going to get even better next year in Windows 10 version 21H1.

This is good news, and because WSL has become so important to Windows 10, I’m adding a command-line chapter to the Windows 10 Field Guide that will cover the basics of using the Command shell (cmd), Windows PowerShell, and WSL. And as I’ve discovered in using WSL these past few weeks, for all its power and capability, it’s still somewhat complex to install and upgrade, and still somewhat limited functionally, in Windows 10 2004.

As you may know, Microsoft released the initial version of WSL in July 2017 and added it as a formal new Windows 10 feature in Windows 10 version 1709. As I wrote at the time, WSL was then, and is now, designed primarily for developers and IT admins who work in heterogeneous environments with both Windows and Linux. It provides access to Linux command-line tools via a growing library of Linux environments, plus the ability to share and access files on the host Windows system from Linux, invoke Windows executables from Linux, and invoke Linux executables from Windows.

Since then, Microsoft has aggressively improved WSL with new features as more and more Linux distributions signed on. But the most impressive change so far was WSL 2, which was announced in May 2019, then introduced in an Insider build in June 2019, and then added to the OS formally with Windows 10 version 2004.

“WSL 2 is a new version of the architecture that powers the Windows Subsystem for Linux to run ELF64 Linux binaries on Windows,” Microsoft’s Dona Sarkar wrote at the time. “This new architecture, which uses a real Linux kernel, changes how these Linux binaries interact with Windows and your computer’s hardware, but still provides the same user experience as in WSL 1 (the current widely available version). WSL 2 delivers a much faster file system performance and full system call compatibility, which lets you run more applications like Docker.”

But it’s clear now that WSL 2 is just the launching pad for a new set of functionality that wouldn’t have been possible, or at least viable, using the original WSL architecture. And at Build 2020 in May, Microsoft revealed its plans for the future.

As anyone who has used WSL or upgraded to WSL 2 knows, installing WSL today is a strange, non-discoverable multi-step experience that involves both command-line and graphical tools like the Windows Features control panel and the Microsoft Store. So Microsoft will make it much easier to install WSL from the command-line using a single command:

wsl.exe --install

“This command will be added to every Windows machine so that all you need to do is open a Terminal window elevated with administrator privileges and run [that command],” Microsoft’s Rich Turner explained last month. “From there[,] the WSL optional components will be enabled and your specified distro will be downloaded and installed for you automatically upon restart.” This command will arrive in Windows 10 version 21H1.

Additionally, WSL 2 will be made the default WSL experience on install going forward, whereas today users need to manually upgrade from WSL 1 using, you guessed it, a combination of command-line and graphical tools (the latter of which literally involves a manual software download from the web). So this, too, will get easier: Starting with Windows 10 version 21H1, WSL 2 will become the default.

Microsoft also announced that WSL would gain GPU Compute workflows, and Insiders in the Fast ring can now start testing this functionality courtesy of Windows 10 build 20150, the first 21H1 pre-release build. (So, yes, this too arrives in 21H1).

“Adding GPU compute support to WSL has been our #1 most requested feature since the first release,” Microsoft wrote this past week. “This preview will initially support artificial intelligence (AI) and machine learning (ML) workflows, enabling professionals and students alike to run ML training workloads across the breadth of GPUs in the Windows ecosystem.”

This is important because these scientific workloads are a key area in which Linux has outperformed Windows to date, and there is now a wide variety of ML and AI apps that only run on Linux. By adding this support to Windows 10, Microsoft’s users will no longer need to maintain two PCs/workstations, or switch to Linux.

But the biggest coming change to the user experience, perhaps, is support for Linux graphical apps. This may seem a bit unnecessarily, given the depth and quality of GUI apps on Windows. But remember the audiences here.

“Some users want to run their preferred Linux GUI text editor or IDE in a Linux environment and work on their code stored locally within their distro’s filesystem, or simply develop Linux GUI apps on their Windows machine,” Microsoft explains. “Our goal is for you to be able to run Linux GUI apps on your desktop seamlessly alongside your Windows apps. This will enable you to use Linux apps to edit, build, and run your code, visualize data plots in Python, or even use applications that are optimized for a Linux environment.”

Microsoft showed off an early peek at this work at Build 2020 with some GNOME-based apps running on the Windows 10 desktop. But it’s not clear when we’ll see this support: I assume Windows 10 version 21H1 is the earliest possible timeline, but it’s possible, perhaps likely, that it will arrive even later than that. So I’ll be looking for any mention of Linux GUI app support in Insider Fast ring build announcements, which will indicate that it could at least happen in 21H1.

Anyway, that’s where WSL is at, and where it’s going. And I anticipate that my first stab at covering this exciting new technology in the book will be available before the end of the month. This won’t be of interest to experts, but for those curious about WSL and the other command-line shells in Windows 10, it should be a nice introduction.

More soon.

Tagged with ,

Join the discussion!


Don't have a login but want to join the conversation? Become a Thurrott Premium or Basic User to participate

Comments (27)

27 responses to “The Future of the Windows Subsystem for Linux”

  1. woelfel

    These improvements are so awesome and make my work machine useful even more than before.

  2. Slvrgun

    Can I have a Unix based Windows already?

  3. wright_is

    In reply to fishnet37222:

    As a Linux die-hard that has to use Windows, I'm very happy about WSL2.

    Some of what he says makes sense, but a lot is inaccurate or is an anti-big corporate rant.

  4. donofrio

    I have been using gui with wsl1 for four years now, I live in xfce4 on w10 in ubuntu my setup guide and photos are at it has been an awesome way to stay sane in a windows only corp environment ;)

  5. RonV42

    I was amazed how fast Docker updated their tooling for WSL2 I downloaded the update, turn on WSL2 support and bam it just worked. No need to HyperV images. I can now easily build docker images for both Windows and Linux based systems.

  6. Usman

    I wonder if programs like Davinci resolve will run better on WSL2 than on Windows

  7. pierre_masse

    I wish Microsoft make an Edgebook for those like me who don't need all that stuff but don't want the Google's bulls*** either.

  8. sherlockholmes

    Paul, do I need to worry about you? Such a long post on Linux? Im shocked ;-)

  9. proftheory

    For those who really needed to run Linux alongside Windows they would just install a VM of their favorite distro. Maybe you could compare running a VM versus WSL 2.x?

  10. hrlngrv

    MSFT's own current instructions for installing WSL,, differ from yours. Your instructions above also differ from how I remember installing it when it was first introduced.

    The DISM commands in the linked MSFT web page are every bit the nondiscoverable (without a web search) process as you claim above.

    Re command line generally, why bother with CMD? People who use the command line a lot either use Powershell or a Linux-like shell either via WSL or cygwin or MinGW or other Unix-like commandline environments for Windows. I've been using batch files for over 3.5 decades at this point, and there's no way I'd use FOR /R in preference to POSIX find unless I was writing something for others to use, and I doubt your commandline chapter would go into that depth. FWIW, the gymnastics needed to use CMD's FOR with filespecs which contain spaces is enough to prove to all but the pig-headed like me that CMD should not be used if there are better alternatives available. The only reason CMD exists as successor to COMMAND.COM is that MSFT had a profound case of NIH with a severe allergy to all things Unix in the early 1990s. It always sucked, as a wander through the archives of alt.msdos.batch.nt would demonstrate.

    There's also the likelihood that any primer on CMD will read like a warmed over rewrite of the *.* column from PC World from the mid-1980s.

    Finally, I believe it's already possible to run Linux GUI software if one installs a Windows X client, though I believe it requires a fair bit of configuration to do so. Why would anyone want to? There's A LOT of scientific software for Linux which doesn't have Windows versions. Some truly arcane math software too. I figure preferred Linux GUI text editor means EMACS or XEMACS, and while there are Windows ports, it really isn't the same as running them under a Unix-like OS.

    • Paul Thurrott

      In reply to hrlngrv:

      My instructions are in the book. This is a brief mention, so I'm not sure what you mean. But I've done this multiple times and have instructions that work 100 percent of the time. Not sure how/if they differ from what Microsoft wrote. Or care, frankly.

      Not sure why you have opinions about what I'm writing about the Command shell (Cmd) in the book. But I'm covering Cmd, PowerShell, and WSL in introductory ways only. PowerShell more than Cmd.

    • anton1900

      In reply to hrlngrv:

      Wow, you really need to get out of the 90´s and all that old grudge you holding. Cant be good for you.

  11. bschnatt

    One thing to note is that not every PC out there supports the virtualization required for WSL 2. I bought a refurbished HP Envy x2 recently. The Snapdragon 835 in it *does* support virtualization, but HP chose not to expose it in the BIOS, so there's no way to turn it on. Considering the limited memory on this thing (4GB), I'm not surprised.

    I'm not *too* disappointed since WSL 1 still works fine. I took a chance on this machine in order to get the stellar battery life, and was willing to live with the consequences, whatever they were. Although it's not my primary laptop. I *am* keeping it in sync with my main laptop as far as I can (the same Windows developer tools, settings, extensions, etc), and the only deviation from this (so far) is the WSL thing. If I do web development on it, I'm sure I won't have a problem running Webpack, Babel, etc (I haven't so far)...

  12. navarac

    This is all good, but will still keep a dedicated Linux PC.

  13. lwetzel

    Am eager to see the book update.

  14. alsorun

    This article is so informative, in particular the part that many ML and AI apps only run on Linux, not on Windows.

  15. Sri Yogesh

    I can't believe how great wsl2 has been for my workflow, I no longer have to dualboot into linux for some of my dev work. Wow, if windows can just become a shell that allows you to run apps from linux, android and windows on a single machine without it feelling like an overburdened vm. It would be awesome. If android apps can perform as well as my wsl programs, I have no doubt windows can be this unique os that runs applications built for all open platforms effortlessly and seamlessly. (as you can run android apps now, but it is a horrible experience)

Leave a Reply