Windows, as a product, is taking a backseat to Linux at the Microsoft Build developer conference, with Microsoft announcing new utilities to make life easier for developers using Windows workstations to write code targeted for Linux servers. Foremost among these include version 2.0 of the Windows Subsystem for Linux (WSL), making the Linux kernel a component of Windows 10 for the first time, and Windows Terminal–a new terminal application which combines the classic Windows Command Prompt, PowerShell, and WSL.
What is Windows Terminal, and how does it affect developers?
Windows Terminal combines the legacy Windows Command Prompt (CMD) introduced with Windows NT with Windows PowerShell, the modern command-line shell and scripting environment introduced in Windows 7, and the command-line interface in guest Linux environments running in WSL, as well as external devices like a Raspberry Pi via SSH.
Windows Terminal adds support for multiple tabs, combining the different types of command shells noted above–you can have a PowerShell instance in one tab, a CMD instance in another, and a Linux shell (typically bash, depending on the distribution and default settings) in another.
SEE: Tips for building a successful career as a software engineer (free PDF) (TechRepublic)
According to the release announcement, it also includes “a GPU accelerated DirectWrite/DirectX-based text rendering engine,” making it possible to render “display text characters, glyphs, and symbols present within fonts on your PC, including CJK ideograms, emoji, powerline symbols, icons, programming ligatures, etc.”
Windows Terminal is open source and is available on GitHub, as a preview. Version 1.0 is expected in Winter 2019. Windows Terminal also introduces a new open-source font, which will be available in a separate repository.
What is Windows Subsystem for Linux 2.0, and how does it affect developers?
Windows Subsystem for Linux (WSL) 2.0 is a significant re-architecture of the WSL feature first introduced in the Windows 10 Anniversary Update (Version 1607). WSL 2.0 uses a custom Microsoft-built Linux kernel, initially based on version 4.19–the same kernel used in Azure. This is the first time that Microsoft has shipped a Linux kernel as a Windows component.
SEE: Implementing DevOps: A guide for IT pros (free PDF) (TechRepublic)
The use of a Linux kernel as a Windows component will bring I/O performance to the filesystem, better Linux compatibility, and the ability to run Docker containers natively on Windows, negating the need to use a VM.
Compared to the previous version, WSL 2.0 does not provide packages of userspace binaries. Users will still be able to choose a linux distro via the Windows Store, or through side-loading a custom distribution package.
WSL 2.0 will be released in Windows Insider builds later this year.
How did we get here?
This is not, strictly speaking, the first time that Linux or UNIX components have been included in Windows, though these changes represent the most forthright and useful integrations for developers specifically. Windows NT was originally architected to include support for POSIX system calls, which was one of four subsystems available in Windows 3.1–the others being the Win32 subsystem, an OS/2 subsystem for compatibility, and a security subsystem.
This feature, originally called “Microsoft POSIX subsystem,” was replaced in Windows XP with ” Windows Services for UNIX,” which was available as a separate package. This functionality was removed in later versions of Windows 8 and Server 2012, though both of these iterations were targeted toward running UNIX programs, rather than enabling developers.
Should I use Windows Terminal or WSL 2.0?
If you use Windows as a developer, yes. Windows Terminal is a more convenient one-stop solution for a command-line interface. Critics may complain about the differing syntax between the legacy Console Host, PowerShell, and different Linux shells, though preserving these differences while offering unified access is preferable to trying to glue mutually incompatible standards together that were developed in parallel over decades.
SEE: Microsoft Build 2019: The biggest takeaways (free PDF) (TechRepublic)
For WSL 2.0–while it is not presently available–it does appear to be a solid upgrade, particularly for Docker users, though does not address existing shortcomings, such as the inability to run graphical applications.