Hacker News new | ask | show | jobs
by nadav256 4424 days ago
This project is such a great technological achievement for both the Webkit and LLVM communities. There are so many 'first times' in this project. This is the first time profile guided information is used inside the LLVM _JIT_. This is the first time the LLVM infrastructure supported self-modifying code. This is one of the very few successful projects that used LLVM to accelerate a dynamic language. This is the first time Webkit integrated their runtime (JITs and garbage collector) with an external JIT. This is the first JavaScript implementation that has advance features such as auto-vectorization. Congrats guys!
2 comments

> This is one of the very few successful projects that used LLVM to accelerate a dynamic language.

Yup. Another is Open Shading Language[0]. They ended up with performance 25% faster than the previous shaders, which were coded by hand in C. It's used now in Blender's "Cycles" renderer. Yay, open source!

[0] https://github.com/imageworks/OpenShadingLanguage/

I don't think that OpenShadingLanguage is dynamic.
If by dynamic, you mean: the compiled code for the same exact shader source code can be wildly different at runtime, based on the inputs, OSL is dynamic in that sense.

If you mean something else…then I guess not. It's a shader after all, not a general purpose programming language.

I tend to use dynamic in the sense of static vs. dynamic, where dynamic is "happens at runtime" and static is "happens before runtime".

I think nadav256 meant dynamically typed. I.E. most languages that target LLVM are statically typed, and this project is one of the few (the first?) to successfully leverage LLVM for a dynamically typed language.
Julia is another dynamically typed language using LLVM. On the other hand, Julia was designed to use LLVM. I think this may be the first to succeed in dynamically typed language not designed to use LLVM.
What about Rubinius? (don't know much about it; does it not qualify as successful?)
There is also numba, http://numba.pydata.org/, which uses LLVM to compile annotated Python code, although this is more limited of course.