Hi everyone,
After several months of development, the new LLVM backend ("fastcomp") is now on the master branch. It has been complete for a few months, but we waited while people tested on the incoming branch before merging it to master. We've also done extensive fuzzing, and Jukka has the bots all green on all platforms, so things now look stable.
See details on the backend at
https://github.com/kripken/emscripten/wiki/LLVM-BackendI also updated the other wiki pages about installing Emscripten from source, etc, hopefully I got it all, please let me know if I missed anything.
What this change means for you:
1) If you've been using incoming, nothing changes.
2) If you've been using master, then next time you pull, emscripten will have fastcomp on by default. You should get and build Emscripten's LLVM+Clang which has fastcomp, and use that (see instructions in the link above). (You also have the option to disable fastcomp and use a stock LLVM, again details are in the link, but that is not recommended.) After updating to fastcomp, you should see a big speedup in compilation times, especially on large codebases; the generated code should also be a little smaller and faster. Otherwise there should be no differences, however a few features are not yet fastcomp-compatible (like embind), so you may get a compiler warning or error if you use one of those. (If you do, your options are to disable fastcomp as mentioned before, or to use an earlier version of emscripten.)
As mentioned in the title, we now have multiple branches - the main
Emscripten repo, our LLVM repo and our Clang repo. See the link above
for details. What you need to keep in mind is the 3 repos need to be in
sync - make sure to use either the master branch in all 3, or the
incoming branch in all 3, as mixing and matching may not work. In
particular, if you use master, you will need to pull master in all 3
repos each time you update (and then build LLVM+Clang with those
changes), whereas before you just had one repo to pull. You can use
emcc -v
to check if the source code in the 3 repos have the same version number.
3) If you are using an SDK build, nothing changes. The next SDK update, however, will be built from master, so it will include fastcomp, at which point the changes will be the same as in the last paragraph (as if you were using master). We'll probably wait on releasing the SDK update for a while, to see if any issues are reported on master.