03

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

Updates

Adrián Pérez 03/12/2014

Inception! JS-in-JS!

Apparently this November has been the gloomiest in a while, and that certainly may have slowed down my on-going quest to bring arrow functions to V8. Though arrow functions deserve a write-up themselves, my musings today are about a side quest that...

Andy Wingo 02/12/2014

there are no good constant-time data structures

Imagine you have a have a web site that people can access via a password. No user name, just a password. There are a number of valid passwords for your service. Determining whether a password is in that set is security-sensitive: if a user has a valid...

Andy Wingo 27/11/2014

scheme workshop 2014

I just got back from the US, and after sleeping for 14 hours straight I'm in a position to type about stuff again. So welcome back to the solipsism, France and internet! It is good to see you on a properly-sized monitor again.I had the enormously...

Andy Wingo 14/11/2014

generators in firefox now twenty-two times faster

It's with great pleasure that I can announce that, thanks to Mozilla's Jan de Mooij, the new ES6 generator functions are twenty-two times faster in Firefox!Some back-story, for the unawares. There's a new version of JavaScript coming,...

Katerina Barone-Adesi 31/10/2014

A tale of sunk allocation

Pflua is fast; Igalia wants it to be faster. When I joined Igalia, one of the big open questions was why some very similar workloads had extremely different speeds; matching a packet dump against a matching or non-matching host IP address could make the...

Commits

Merge pull request #93 from Igalia/timingloop1s

Merge pull request #93 from Igalia/timingloop1s More accurate timing through more iterations

Katerina Barone-Adesi17/12/2014

Merge pull request #95 from Igalia/remove-old-backend

Merge pull request #95 from Igalia/remove-old-backend Replace old backend with new ANF -> SSA code generation

Diego Pino17/12/2014

Switched to using a timing-threshold approach

Switched to using a timing-threshold approach

Katerina Barone-Adesi17/12/2014

Merge pull request #81 from Igalia/clear-cache

Merge pull request #81 from Igalia/clear-cache Set cache as a weak map

Andy Wingo17/12/2014

Update example filter output files in doc/

Update example filter output files in doc/ * doc/dst-host-192.68.1.1-and-greater-100.md: * doc/host-127.0.0.1.md: * doc/host-ipv6-localhost.md: * doc/icmp-or-tcp-or-udp.md: * doc/net-127.0.0.0-8.md: * doc/net-ipv6-0-mask-16.md: *...

Andy Wingo17/12/2014