With the Nim 1.6 series nearing a stable enough release, the time has finally come: the LLVM-based nlvm compiler for Nim is now based off the nim-1.6 branch of the language!
With it come a bunch of small fixes here and there - floating point intrinsics, reset/move support, etc.
As policy, nlvm tracks the most stable release available of Nim giving priority to the stable feature set of that release (what you get when you run nim without weird flags) - to make things work, the project keeps a fork off Nim itself where patches that have not yet been upstreamed (or are not suitable for upstreaming) are kept: https://github.com/arnetheduck/Nim/tree/nlvm
nlvm uses the same test suite as upstream nim: currently, about 1250 of 1600 tests are passing. The tests that are failing fall into three categories:
What works and what doesn't is further described in https://github.com/arnetheduck/nlvm#status=, but if you want to give it a quick spin (on linux), here's a one-liner that fits in a tweet:
curl -L https://bit.ly/2W7O0yH -o nlvm; chmod +x nlvm; echo 'echo "space mutants"' > t.nim; ./nlvm c -d:release -r t.nim
Amazing work Arne!
Do you maybe know, even as an eyeball estimate, the amount of work necessary for it to work on Windows and macOS (presumably the latter would be easier as it already works on Linux)?
I haven't done any compiler/LLVM work in the past, but as you yourself stated in the readme, you started from the same position and look at nlvm now :) so maybe I can try to help