Everyone's phone is going to be full of Google I/O stuff today, since the keynote is literally happening as I type this. I'm not going to pile onto that pile. What I actually want to talk about is something Microsoft announced yesterday at Build in Seattle, because it's the first Windows-related news in years that made me sit up at my desk instead of scrolling past it.
WSL2 is real now. Not "coming eventually," not a roadmap slide — Rich Turner and Kevin Gallo stood up during the keynote and said the next version of Windows Subsystem for Linux is going to run an actual Linux kernel, shipped by Microsoft, inside a lightweight VM. Full system call compatibility. Not the translation layer WSL1 has been doing since 2016, where every Linux syscall gets reinterpreted into a Windows equivalent and things like inotify or certain socket behavior just quietly don't work right.
I've been on WSL1 for probably a year and a half now, mostly because I got tired of dual booting and I didn't want to run a full VM just to have a bash prompt. It's fine for a lot of things. But anyone who's done npm install on a project sitting in /mnt/c/ knows the specific pain I'm talking about — the filesystem boundary between the Windows side and the Linux side turns every disk operation into molasses. I timed it once, out of morbid curiosity: a node_modules install that takes maybe 20 seconds on my actual Linux box at home took almost four minutes through WSL1 on the same laptop. Four minutes! For the same install! That's not a rounding error, that's a fundamentally different filesystem story, and apparently that's exactly the problem the new architecture is meant to fix by giving the Linux side its own real filesystem instead of going through the 9P protocol bridge every time.
The other thing they showed off, almost as an aside, was a new terminal app. Just called Windows Terminal, which, fine, not the most creative name in the world. But it's going to be open source, it's going to support tabs (finally), GPU-accelerated text rendering, real Unicode and emoji support, and you'll apparently be able to theme it instead of staring at that same off-white cmd.exe window that has looked identical since I was in middle school. They said it's coming later this year. I'll believe the ship date when I see it, but even the intent here says something. Someone at Microsoft finally looked at the default terminal experience on Windows and admitted it was bad.
I want to be a little annoyed that it's taken this long. WSL1 launched at Build in 2016, three years ago almost to the week, and the pitch back then was basically "look, we can run bash now." That was neat for about a month and then you hit the edges fast. Docker didn't really work right. Background services were flaky. If you'd told me in 2016 that in 2019 I'd still be keeping a VirtualBox VM around specifically for the handful of things WSL couldn't handle, I'd have believed you, unfortunately.
Also, minor complaint that has nothing to do with any of this: I tried to watch the Build keynote stream live over lunch and Microsoft's own player buffered constantly, on a wired connection, on a stream literally announcing new developer tooling. There is something a little funny about that. I ended up reading the liveblog instead and watching the announcement clips after the fact, which honestly might be the better way to consume any keynote at this point. Nobody needs to sit through ninety minutes of stage transitions to get four minutes of actual news.
No firm release date for WSL2 yet, just "coming later this year" through Windows Insider builds first. I'll probably jump on the Insider track the day it's available, mostly just to see if my npm install number actually changes. If it drops from four minutes to something closer to twenty seconds, that alone is worth switching for. If it doesn't, well, at least the terminal will look nicer while I wait.