The main advantage over a VM is no resource partitioning: on a 4GB RAM tablet with 64GB eMMC, you can't allocate more than 2GB RAM to a VM without trouble, and putting 20GB of disk aside for it is also a pain., and much improved power efficiency (even an idle VM drastically reduces battery life, while Ubuntu for Windows doesn't).
Compared to Cygwin: a lot more packages are available, a lot more just works out of the box, and you can painlessly use online tutorials for Linux, which often assume Ubuntu and don't consider Cygwin a target platform.
root@localhost:~# zsh compaudit:105: wait failed: invalid argument compdef:95: wait failed: invalid argument localhost# exit zsh: you have running jobs. localhost#
Will have to try again after the next build.
I haven't tried zsh, but I'm pretty sure you can install it. I installed a bunch of applications, including using third party repos and ppa's. I don't see why zsh would not work.
Perhaps zsh uses some unsupported escape sequences (for instance, screen doesn't seem to work), but you can readily work around that by using another terminal in windows (mintty) or launching a VNC server from Linux and a VNC client to your localhost I assume.
* https://news.ycombinator.com/item?id=11417227
It's readily apparent from the error messages earlier in this sub-thread that the zsh problem isn't to do with escape sequences. And of course the screen problem (at least the one known so far) is not escape sequences, either.
Don't get me wrong, I've been fine using a "remote" VM machine locally for linux, and a lot of my work the past few years has been that way (CIFS in the VM, to run a gui editor on the desktop), but to be able to run closer to native is a good thing imho... hopefully it stays well supported.
The native Windows versions of git and CMake can be awfully slow [1].
[1]: https://gist.github.com/jibsen/7ebeddde3bc2bfd421b96ae53a824...