First experiences with WSL (a.k.a. Bash on Windows)

Warren Young
Wed Aug 10 09:57:00 GMT 2016

I’d been putting off playing with WSL until it got closer to release.  I decided that with the release of Windows 10 Anniversary Edition, that day had come.

I’ve only been using it for a few hours, and have already found a bunch of broken things:

- Nothing involving raw sockets works.  That means no ping, no host(1), no ifconfig…  For some reason, DNS does work; apparently host is doing it differently than glibc’s resolver.

- /etc/hosts is ignored.

- screen(1) is still broken.  (I say “still” because that was one of the early complaints about WSL; like, day-of-announcement early.)  For some reason tmux does work.  Apparently ptys aren’t completely broken now.  That means sshd might also work, but I really don’t want to try it at the moment.

- The terminal emulation seems a bit screwy.  I’ve gotten it to render things clearly incorrectly.  apt(1) seems especially good at doing this, probably because of the way it puts its progress bar at the bottom line of the screen, then removes it on exit without completely redrawing the screen as, say, vi does, which doesn’t seem to have this problem.  Be prepared to hit Ctrl-L frequently.

- “Installing” it is about as easy as installing OpenBSD: all text, a fair bit of fiddling around required, and in the end important things don’t work because you haven’t manually configured them yet.

A good example is that you don’t get a Desktop or Start menu icon, and unless you know to add --login to the Bash shortcut you create manually, you won’t get a login shell, and even if you do that, you don’t start out in your HOME directory, apparently due to a weakness in /etc/profile and such.

- They’re still shipping Ubuntu 14.04.  I’d have thought they’d worked out the problems preventing them from moving to 16.04 by now.  (I completely understand why they’d want to stick to LTS releases only, and I support it.)

- As expected, you can’t run native Windows PE executables from inside WSL.

- It was billed as near-native speed, but a configure script I timed took about 6x as long on the same hardware, and a large C++ project build took almost 3x as long as under Linux.  (i.e. Both tests on a VM running on the same host.)

While monitoring Resource Monitor, I see that I’m not pegging all 4 cores in this box in all situations that I think I ought to be able to.

I haven’t tried comparing this to Cygwin yet.  The comparison to a Linux VM seems more appropriate.

- Java’s unusable.  Known bug — #746 on GitHub — not yet fixed.

- A bunch of CPAN modules fail to install because directory link counts don’t work in a POSIXly correct fashion under WSL, and Perl’s MakeMaker facility apparently cares about this.  The workaround makes me queasy.  (GitHub issue #186.)  I still haven’t been able to get Date::Manip installed.

- Windows Console < MinTTY.  I miss copy-on-select and Shift-Insert most.

Stuff that does work as hoped-for:

- apt!  I have yet to find something I wanted that either wasn’t available or didn’t work once installed, outside of the problems mentioned above.

Stuff that works even though I thought it wouldn’t:

- WSL processes show up in the Windows Task Manager.  I’m certain I heard that this didn’t work back in late March when WSL was announced.

Bottom line: Not yet ready for prime time.

More information about the Cygwin-talk mailing list