Microsoft announced that Windows Subsystem for Linux 2 (WSL2) will be generally available in Windows 10, version 2004. WSL2 was released into the Insider Program last year. With the move to general availability, WSL2 can now be automatically updated via standard Windows Updates.
As discussed previously, WSL2 is a change in architecture from WSL 1. Where WSL 1 required a translation layer between the Linux system calls and the Windows NT kernel, WSL 2 ships with a lightweight VM running a full Linux kernel. This VM runs directly on the Windows Hypervisor layer. This kernel includes full system call compatibility and allows for running apps like Docker and FUSE natively on Linux. With this new implementation, the Linux kernel has full access to the Windows file system.
This new release brings large improvements to performance especially for interactions that require accessing the file system. According to Craig Loewan, program manager at Microsoft, this could be between a 3 to 6 times performance improvement depending on how file intensive the application is. He further mentions that unzipping tarbars could see a 20 times performance increase.
With this upcoming new version of Windows 10, currently known as version 2004, Microsoft has indicated that the installation and updating process of WSL2 will be streamlined. Previously the Linux kernel was included as part of the Windows OS version. With this upcoming release they will be seperated which allows for the kernel to be updated via Windows Update, similar to how third-party drivers are currently installed.
Currently the WSL team is indicating that there will be some manual effort needed to move to the new method of updating the Linux kernel. After updating to build 19041.153, running any WSL command (such as
wsl --set-version <distro-name> 2) will have a one-time message appear. The message redirects to a download page where the new kernel can be installed.
Once installed, distros can be upgraded from version 1 to 2 via Powershell. The command
wsl -l -v will list all distros and a specific distro can be upgraded via
wsl --set-version <distro-name> 2. Downgrading back to version 1 is also supported.
Visual Studio Code has an extension available to allow for developing within WSL from VS Code. The Visual Studio Code Remote – WSL extension allows for the VS Code UI to run on the Windows side with a VS Code Server running within the WSL VM. This allows for running commands directly within WSL and treating the mounted file system as a Linux file system reducing pathing issues or other cross-OS difficulties.
VS Code Remote extension architecture (credit: Microsoft)
Additionally, this extension allows for running and debugging applications directly within the Linux including the usage of breakpoints.
Debugging in Linux via the VS Code Remote extension (credit: Microsoft)
The WSL2 Linux kernel is created and maintained by the Microsoft WSL team. It is open source and available on GitHub. The team is accepting issues and bugs raised against a dedicated repo. Some of the WSL team is available via Twitter to help with general questions.