5 ms·
Higgs JavaScript Virtual Machine
- inglor 12y agoOther than 'for fun' - does this serve a commercial purpose? Looks very cool regardless
- EvenThisAcronym 12y agoThe Higgs VM is part of Maxime Chevalier's PhD work.You can find her blog here: http://pointersgonewild.wordpress.com/category/higgs/ http://pointersgonewild.wordpress.com/category/higgs/.
- grayrest 12y agoIt's a PhD research project. See the project overview page for specifics: http://pointersgonewild.wordpress.com/higgs/ http://pointersgonewild.wordpress.com/higgs/
- agumonkey 12y agoIn some air.mozilla.org talk the author said that this research was very unconventional and if successfull could bring generic yet not marginal perf improvements in a lot of languages.
- glennsl 12y agolink: https://air.mozilla.org/higgs-jit/ https://air.mozilla.org/higgs-jit/
- jussij 12y ago> does this serve a commercial purpose? I'm sure the high paying job offers will be coming in thick and fast.
- tach4n 12y agoIt's a research project so it produces experience and, well, research that can be useful to commercial enterprises. Lots of companies have an interest in making dynamic languages faster. The project does have a secondary goal be a useful hobbyist platform and is making progress on that front. (disclaimer: I'm a minor contributor.)
- jonny_eh 12y agoWhat is this? All the readme says is what's required to use it.
- kr0 12y agoI believe it's a cross compiler for JS.
- tachyonbeam 12y agoIt's a JIT compiler that generates x86-64 machine code
- echaozh 12y agoYou either have an AOT compiler or an interpreter with JIT compilation. What's a JIT compiler?
- protopete 12y agoAOT: ahead of time JIT: just in time Compiler applies to both of them.
- mistercow 12y agoHere are about 5,000 reasons that nitpick is silly: http://scholar.google.com/scholar?as_vis=1&q=%22jit+compiler%22&hl=en&as_sdt=1,5 http://scholar.google.com/scholar?as_vis=1&q=%22jit+compiler... Clearly the term "JIT compiler" is a common way to describe such a system.
- bzbarsky 12y agoV8 has no interpreter. Just a pair of compilers (first tier and second tier), which compile stuff lazily at the point when it needs to run. Would you call that an "AOT compiler"? Because most people wouldn't.
- jermo 12y agoIt's a JavaScript JIT compiler. From the info page [1]: Some notable features of Higgs include: - A self-hosted runtime written in extended JavaScript - Lazy/incremental JIT compilation Context-driven versioning of basic blocks - A Foreign Function Interface (FFI) system to interface with C code - An interactive shell (REPL) with access to low-level primitives. - A simple module system and a set of useful libraries. Example usage: higgs --e "var x = 4; x = x + 5; print(x)" or higgs file.js [1] http://pointersgonewild.wordpress.com/higgs/ http://pointersgonewild.wordpress.com/higgs/
- tinco 12y agoCrazy that she basically implemented a fully functioning JIT compiler that performs on par with the established commercial Javascript interpreters out there on many fronts in only two years using novel techniques, but reviewers reject her papers because they are unconvinced the novel technique has advantages over existing techniques? How does that even matter? If someone discovers a new way of implementing compilers efficiently, then just that has scientific merit. Whether the new technique has different performance characteristics surely is simply ground for further research? Anyway, awesome that at least the engineering community is very interested in this work of hers. edit: I noticed the compiler is written in D, awesome choice of tech!
- mkaufmann 12y agoConcerning your critique of the in your opinion overly hard scientific review process. According to her blog the paper was rejected because: "Reviewers at conferences [...] have been very skeptical, and pressed us multiple times to produce some kind of comparison of basic block versioning against tracing."[1] I think this is a very valid concern. When you describe a new scientific approach (Basic Block Versioning) you should compare to the state of the art. Otherwise it is very hard for the reader to judge the merit of the new approach. However I agree with your sentiment that a new approach should not only be judged by performance numbers (there is actually a nice article going deeper on this topic on databasearchitects[2]). But there should at least be a more thorough theoretical discussion than only 3-4 sentences. Benchmarks comparing to existing approaches in this case can help to show pathological cases which might indicate weaknesses of the approach or to empirically demonstrate the feasibility of the new approach. [1] http://pointersgonewild.wordpress.com/2014/11/14/the-fastest-for-in-loops-in-the-whole-wide-web/ http://pointersgonewild.wordpress.com/2014/11/14/the-fastest... [2] http://databasearchitects.blogspot.de/2014/09/experiments-hurt-review-process.html http://databasearchitects.blogspot.de/2014/09/experiments-hu... EDIT: Many conferences also allow publishing papers without a deep comparison to exisiting research in the industrial session. This allows demonstrations of interesting implementation variants or system choices EDIT 2: The review critisim in older blog posts "Conference reviewers criticized us for not discussing compilation times, and raised the issue that perhaps basic block versioning could drastically increase compilation times." is also very valid for a jit compiler. Again discussion does not have to mean that you have to be faster than all existing systems. Paper acceptance is always a little bit a random process, but at least in this case the review comments are valid from my point of view and her phd advisor should probably have detected these problems in proofreading before submitting. I really hope that the paper will finally be accepted!
- tach4n 12y agoIf you're curious about Higgs you can joins us in our irc: #higgsjs on freenode. We also have a subreddit: r/higgsjs
- 0x7fffffff16 12y agoWhy the _fuck_ is it written in _D_ programming language. That very fact is very sad. If it was implemented in C or C++ then I'm sure it would be pretty cool.
- smilepet_26 12y agoSome notable features of Higgs include: - A self-hosted runtime written in extended JavaScript - Lazy/incremental JIT compilation Context-driven versioning of basic blocks - A Foreign Function Interface (FFI) system to interface with C code - An interactive shell (REPL) with access to low-level primitives. - A simple module system and a set of useful libraries. I like these features. This is simply awesome.
- noiv 12y agoThere was even a proposal to have inline x86 assembly...
- rurban 12y agoI'm impressed by the bbv idea, but not about the startup-time overhead which is even worse than perl6 or the jvm. Even if the run-time of big loops is later on faster than v8. $ time ./higgs --e "var x = 4; x = x + 5; print(x)" 9 real 0m1.191s e.g. my own little jitted language which compiles also to C like asm with tagged data, but with inner-loop type-checks, does it in $ time bin/potion -e'x = 4, x = x + 5, x print' 9 real 0m0.005s so I don't buy the compiler overhead yet. type checks are not that slow. $ time ./perl6-p -e'my $x=4; $x=$x+5; print $x' 9 real 0m0.818s $ time ./perl6-m -e'my $x=4; $x=$x+5; print $x' 9 real 0m0.614s and uncompiled: $ time perl -e'my $x=4; $x=$x+5; print $x' 9 real 0m0.010s