Higgs is an open source JIT compiler for JavaScript targeting x86-64 platforms. It’s also the main piece of infrastructure I’m working on as part of my PhD in compiler design at the Université de Montréal. I’ve been working on Higgs for about a year now, and it’s gotten to the point where most of JavaScript ES5 is supported. Along the way, I received help, notably from Tommy Everett, who implemented a user-friendly FFI library to interface with C code, along with proxies for standard C libraries. I’d like to keep making Higgs more complete and useful. This post is an invitation: we’re looking looking for contributors.

The Higgs Roadmap

In the long run, I’d like for Higgs to become useful both inside and outside of the academic community. It’s probably not going to be able to compete on performance with commercial JS engines like V8 and IonMonkey, at least not in the short term, but I believe Higgs can fill a different niche. On the academic side, it’s a simple JIT compiler that’s easy to modify and experiment with. On the practical side, Higgs can be used as a JavaScript VM that can be embedded into existing software, or extended with new features that aren’t part of standard JavaScript.

I ‘d like for Higgs to become a “batteries-included” programming environment that hobbyist programmers can use to run JavaScript code outside of the browser. I believe there is a niche to be filled. It should be trivial to do things like open a window and begin producing graphics and sound with only a few lines of code, using simple and user-friendly APIs, no special configuration required. It should be trivial, yet this is something you can’t easily do in Python or Ruby, for example. You usually need to install/compile extra packages, and the GUI libraries require much boilerplate code.

How You Can Help

There are a number of areas where help is needed on the Higgs project, for example:

Trying out Higgs, finding and reporting bugs

Finding new benchmarks for Higgs

Writing useful libraries

Repackaging existing JS libraries

Profiling to improve compilation time

Implementing support for ES6 features

We’ve opened several issues on GitHub detailing specific tasks that you could contribute to. Some of these are tagged as “easy” as they don’t require much knowledge of the existing Higgs system, and are a good starting point for newcomers. If you’re interested in contributing, we encourage you to take a look at the issues list, as well as the How to Contribute page. I’d also like to say that if you have a specific idea you’d like to implement in Higgs, a specific feature you’ve thought of, we’re open to that too. You’re welcome to pitch us your own ideas.

More about Higgs

We’ve started to document Higgs in Higgs Wiki. For instructions on how to install Higgs, see the Quickstart page. I also will be giving a new talk at mloc.js in mid-February. This talk will detail some of the novel compilation techniques I’m implementing in Higgs, such as basic block versioning and incremental compilation. This talk will be filmed and made available on InfoQ. In the meantime, you can watch my talks from Strange Loop, DConf and Air Mozilla.

0.000000 0.000000