Apart from the usual maintenance stuff of bumping to latest llvm, this nlvm release brings a little holiday fun: initial Windows support!
It turns out that this was mostly there all along, just needed a final push to get it over the linking bump: https://github.com/arnetheduck/nlvm/pull/84
Binaries are available here: https://github.com/arnetheduck/nlvm/releases/tag/continuous
To try it out:
If everything works out, you'll have a compilation environment for windows up and running in no time. The same goes for cross-compiling: when on linux, download llvm-mingw and put it in the PATH, then compile with nlvm --os:windows and you're good to go! The readme has more details.
There's of course polish to do - in particular, when using a mingw-based environment you end up depending on some mingw and clang libraries - this is annoying and can be fixed by adding --passl:-static to the build somewhere - the mingw libraries will then be linked statically and your executables can run stand-alone, like the nlvm.exe present in the zip file - as usual, if it's not working for you, try to do what CI does.
In CI, you'll also find the errata section :) Many of the tests work, but probably require some more patching to make up for platform differences like library names, .exe at the back and other terribly important things the windows and unix folk disagree upon - so while the tests run, they're not blocking CI just yet.
The biggest issue so far C++ - when linking with C++ libraries, there's a likely mismatch in how clang and nlvm expects the exception unwinder to work so raising an exception in Nim will cause a crash that doesn't happen when libc++ is not linked - if you're familiar with the unwinder on windows, this is your moment to shine ;) In other words, most nim applications are probably fine, but nlvm cannot yet build itself since it relies on llvm that uses C++.
So, where to go from here? Well, there are some candidates: