Compilers and Programming languages
Igalia is an experienced JavaScript virtual machine engineering consultancy. We work on both new language feature design and implementation as well as porting, embedding and optimizing JavaScript engines. We have contributed to V8, JavaScriptCore, and SpiderMonkey.
Igalia and TC39
Igalia is a highly active participant in advancing JavaScript through TC39 (the standards working group that specifies the JavaScript language). Igalians have served in leadership positions on the committee, and we have been leading the development of features such as BigInt, private fields, and an internationalization library. Igalia works with implementors and the broader JavaScript community to evolve the language in a direction which satisfies all requirements and constraints. Igalia also writes Test262 conformance tests for new features, which accelerate the compatible implementation of these features by multiple JavaScript engines.
Implementing new JavaScript language features
Igalia has played a key role in implementing ECMAScript language features such as generators, iterators, arrow functions, async/await, and BigInt in V8, JavaScriptCore (JSC), and SpiderMonkey. Following the implementation of these features, Igalia has continued to maintain them upstream. For example, we have made significant optimizations of Promises and async/await in V8 and have fixed any issues as they are reported.
Porting JavaScript engines to embedded platforms
Igalia maintains the ARMv7 port of JSC, including their support in the optimizing compiler (JIT). These JIT compilers have been found to be critical for performance, especially on embedded devices, based on benchmarks of interactive performance of client applications. Maintenance of these ports over time is important in order to keep up-to-date with improvements in performance, security and features from upstream developments.
Implementing new WebAssembly language features
In addition to our focus on JavaScript, we are involved in the community for WebAssembly, a new language for the web designed as a performant and secure compilation target for C, C++, and other languages. Igalians contribute to both the standardization process and to implementing proposed WebAssembly extensions in browser engines.
Advancing the RISC-V ecosystem
Igalia is a key maintainer of the RISC-V support for LLVM. We’ve developed support for new extensions and compiler features upstream to benefit the entire ecosystem. We’ve also made significant contributions to the performance of its generated code for both embedded and application markets, helping to make RISC-V more competitive amongst other architectures.
Dynamic Binary Translation
Igalia is a contributor to FEX-Emu, a state-of-the-art Dynamic Binary Translator for Intel architectures targeting AArch64. FEX-Emu plays a key role in enabling software developed for x86 platforms to run seamlessly on AArch64 systems. This contributes to Igalia’s broader efforts in supporting and advancing cross-platform compatibility and open-source technologies.
Shader Compilation
In collaboration with the Graphics team, we are working on improving the Mesa shader compiler, in particular the ir3 backend for Adreno GPUs.
Active contributors to open source compilers
Through all of our work on programming languages for the web, Igalia works closely with upstream open source projects. Several project members are trusted committers to the projects they are contributing to, based on the experience of collaboration over several years.
Our work on JavaScript and WebAssembly is informed by our team’s experience with other languages, compilers, and tools including Python, Scheme, Ruby, LuaJIT, GCC, LLVM, GDB, and Factor.
We are working on:
and...
Services
JavaScript is, by some measures, the most widely used programming language today. Igalia is a full-stack provider of JavaScript solutions for your requirements, spanning:
- Design and standardization of new language features in TC39, the organization which defines the JavaScript programming language.
- Implementation of features in the JavaScript engines which back the major web browsers and Node.js.
- Porting and maintenance of JavaScript implementations to particular customer platforms.
- Embedding JavaScript engines in applications.
- Optimization of JavaScript implementations, with techniques spanning deep compiler changes to tweaking the use of the embedding API.