This is great news! I've been looking forward to this for so long, congratulations on the great undertaking!
-- Ehsan <http://ehsanakhgari.org/> On Thu, Dec 19, 2013 at 8:53 PM, Alon Zakai <[email protected]> wrote: > Hello everyone, > > We've experimented in the past with an LLVM backend to replace parts of > emscripten, most of which is written in JS. We hit some difficulties each > time, and this was deferred. However, it looks like now everything is > coming together, and we are on track. Details here: > > https://github.com/kripken/emscripten/wiki/LLVM-Backend > > Basically, the new compiler (codename "fastcomp" in commits) is an LLVM > IR-based backend, so similar to the C++ backend (and as opposed to most > other backends which are SDAG/tblgen based). This will replace much of the > custom LLVM IR parsing and processing code in src/*, but not replace any of > > * libraries > * toolchain > * js optimizer (tools/js-optimizer.js) > > The idea is that the LLVM backend will lower LLVM IR into JS, and then our > existing toolchain scripts will process and optimize it. So we are just > replacing one part of emscripten, several thousand lines of code and fairly > small compared to the stuff which is not changing. But it should still give > us 2 main benefits, in time: > > 1) faster compilation speed, no need to process IR in JS, can use LLVM IR > in C++ directly > 2) tighter integration with LLVM should allow us to avoid some current > limitations, like overly pessimistic alignment > > The backend is far from complete, but for all "basic" codegen, appears to > work fine and passes the test suite. That includes building complex things > like python, bullet, cubescript, etc., but does *not* include anything > complex and requiring special support like C++ exceptions, setjmp/longjmp, > and various compiler flags like SAFE_HEAP etc. > > In time we can support all those things, although there are some features > we never will - the new compiler will stay streamlined by focusing on one > mode of codegen, optimized and relooped asm.js, as opposed to the old > compiler which supported several other modes (non-asmjs typed arrays, and > no typed arrays). Of course the old compiler will remain viable for things > that need those codegen modes. Otherwise, things like C++ exceptions etc. > should certainly be supported in the new compiler and are just a matter of > time and how much people need them. > > Note that, as mentioned in that link, the compiler is not much optimized > or polished yet. The first goal is correctness. Although, even without any > optimization for compilation speed, it already beats the old compiler on > that by a large margin. Performance of the generated code will be slower > though, until we spend time optimizing it. It should eventually be faster > than the current compiler though, for the integration reasons mentioned > earlier. > > The link above has instructions to build and test the new compiler. If you > have a codebase that does not need exceptions or setjmp, please test on the > new compiler and file issues if you find any! And if you are interested in > helping to finish the backend, that would be great too. > > - Alon > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
