Compilers and Virtual Machines

Igalia is the most experienced JavaScript virtual machine engineering consultancy contributing code upstream to V8, JavaScriptCore and SpiderMonkey. We also apply our compilers knowledge to work in other dynamic language implementations like Python, Scheme, Ruby and more.

Compiler technology is at the heart of performance optimization: compilers generate the machine code that will run your software, and as such, they are the main responsible actors in making the best use of the CPU instruction set to get the job done in the most efficient way possible.

We have the best team of WebKit developers with a strong competence in JavaScript engines like V8, JavaScriptCore and SpiderMonkey, making Igalia the best partner of choice for optimizing consumer electronic solutions based on client-side web technology.

We specialize in JavaScript upstream work as well as other domains such as debuggers (GDB and integrated debuggers), dynamic language environments integration to existing C/C++ systems, and Guile Scheme compiler, especially in the optimizer and its next-generation virtual machine.

Igalia has talented engineers who understand how compilers work and can optimize how they generate machine code for your programs, providing that performance boost that can make a real difference. Our team can provide holistic optimizations: in the runtime, on the frontend, the optimizer and in the backend.

We can also help companies developing Javascript-based software and products, advising on their design and implementation choices or programming and upstreaming new features required in the javascript engine.

Featured Media

Adrian Perez de Castro: JavaScript in JavaScript: Inception at JSConf EU 2014
Andy Wingo: DIY Internet: Snappy, Secure Networking with MinimaLT -- JSConf EU 2013
Andy Wingo: JavaScriptCore's DFG JIT -- JSConf EU 2012
Andy Wingo at JSConf USA 2012


Andy Wingo 03/07/2015

Pfmatch, a packet filtering language embedded in Lua

Greets, hackers! I just finished implementing a little embedded language in Lua and wanted to share it with you. First, a bit about the language, then some notes on how it works with Lua to reach the high performance targets of Snabb Switch.the pfmatch...

Andy Wingo 18/06/2015

arrow functions coming to chrome 45!

It's been a long time coming, but I just flipped the bit in V8 that will ship arrow functions in Chrome 45! Woo hoo!You probably know, but arrow functions are a new way to write functions in JavaScript. They look like this: // Two arguments, body...

Katerina Barone-Adesi 27/01/2015

Generating arbitrary test data

Most tests are useless without data, and the data they need to run can be fairly complicated. Generating a lot of data by hand sounds tedious, and would get rid of a lot of the advantages of generating tests; the flexibility and speed of having a large...

Katerina Barone-Adesi 27/01/2015

Improving Pflua's correctness with property-based checking

Creating a property-based tester and fixing several bugs - in one afternoonPflua, Igalia's implementation of Libpcap's filter language, is fast, and works very well. Like most software, it contains a few bugs, which unusual circumstances can...

Andy Wingo 09/12/2014

state of js implementations, 2014 edition

I gave a short talk about the state of JavaScript implementations this year at the Web Engines Hackfest. 29 minutes, vorbis or mp3; slides (PDF) The talk goes over a bit of the history of JS implementations, with a focus on performance and...


Minor CPS documentation cleanups

Minor CPS documentation cleanups

Andy Wingo18/09/2015

Update CPS language documentation

Update CPS language documentation

Andy Wingo17/09/2015

Remove unused (language tree-il inline) module.

Remove unused (language tree-il inline) module.

Andy Wingo17/09/2015

Merge pull request #245 from curiousleo/fix-244

Merge pull request #245 from curiousleo/fix-244 tests/Makefile: finish download before running tests (fixes #244)

Katerina Barone-Adesi29/07/2015

Add closure effects

Add closure effects

Andy Wingo27/07/2015