Skip to content

Higgs

Higgs is a Just-In-Time (JIT) compiler for JavaScript targeting the x86-64 platform. I am developing this compiler as part of my Ph.D. research work. It is a platform to explore new ideas in the realms of profiling, compilation and dynamic programming language optimization. Higgs is a research project, but my goal is for it to become mature enough to be useful in real-world applications as well.

The Higgs compiler is Open Source (BSD licensed). For those of you who would like to take a look at the source code, it is available in a public GitHub repository. There is also a Quickstart guide with installation instruction on the Higgs Wiki. The Higgs interpreter and JIT compiler are written in the D programming language. Most of the runtime and standard libraries are written in JavaScript and compiled by Higgs itself. I frequently blog about the workings and development of Higgs.

Some notable features of Higgs include:

Should you be interested in contributing to Higgs or in using Higgs as part of your own project, I am easily reachable to answer any questions you may have. Feel free to contact me by e-mail at maximechevalierb at gmail dot com. You may also want to take a look at the open issues on GitHub to see if there is anything you could help with.

Programs used to test the workings and performance of the Higgs VM include most of the SunSpider and V8 benchmark suites as well as a selection of benchmarks from the programming language shootoutI’m interested in finding computationally-heavy JavaScript benchmarks that can run outside of a browser and haven’t been extensively optimized for in other JavaScript engines. If you would like to contribute code you’ve found or written yourself, please contact me.

17 Comments
  1. constantine permalink

    One of my favorite features in .NET/Mono is the ability to use DllImport method attribute so you can call native code from third party libraries on-the-fly. On the other hand, most of the other dynamic/managed programming languages require some special “glue” code (C or C++) to support third party libraries.

    I don’t know if you plan to support something like this, but it would be very practical and useful to have it.

    • We’re working on a Foreign Function Interface (FFI) API right now. The end result should be similar to what node.js and LuaJIT have. We’d like to provide pre-made bindings to commonplace libraries such as file access, sockets and OpenGL. Bindings you can load in one line of code and use immediately.

Trackbacks & Pingbacks

  1. Higgs: My New Tracing JIT for JavaScript « Pointers Gone Wild
  2. Higgs has Exceptions « Pointers Gone Wild
  3. Higgs has a Garbage Collector « Pointers Gone Wild
  4. Visiting Mozilla « Pointers Gone Wild
  5. Back from Silicon Valley « Pointers Gone Wild
  6. A Simple JIT Compiler | Pointers Gone Wild
  7. Presented at DConf 2013 | Pointers Gone Wild
  8. Inlining in Higgs | Pointers Gone Wild
  9. How I miss you, dear SSA | Pointers Gone Wild
  10. Higgs: Rise of the SSA JIT | Pointers Gone Wild
  11. Down the Rabbit Hole that is Inlining | Pointers Gone Wild
  12. Higgs: the First JIT Compiler of its Kind | Pointers Gone Wild
  13. Contribute to the Higgs JS Compiler | Pointers Gone Wild
  14. asm.js AOT compilation and startup performance | Luke Wagner's Blog
  15. Positive Results for Higgs | Pointers Gone Wild

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 2,295 other followers

%d bloggers like this: