Custom compilers and languages
A general-purpose language never fits your domain perfectly. We extend existing compilers (GCC, LLVM, GnuCOBOL) or design domain-specific languages (DSLs) from scratch, with the formal semantics that guarantee their behavior.
Targeted performance
A general-purpose compiler optimizes for the average case. Yours can optimize exactly for your domain, your data structures, your target hardware.
Safety by construction
A DSL restricts the space of possible programs: entire classes of bugs simply become impossible to write.
Independence from vendors
A proprietary dialect or a legacy tool shouldn't dictate your roadmap. We put you back in control of your compilation toolchain.
Flambda2: OCaml's optimizing backend
We develop and maintain Flambda2 together with Jane Street, one of the largest users of OCaml in the world. A concrete demonstration of our ability to evolve a production compiler at scale.
Our compiler and DSL expertise
Extending existing compilers
GCC, LLVM, GnuCOBOL: we add dialects, targets, and optimizations to compilers already running in production.
DSL design
Languages dedicated to your business domain, with formal semantics guaranteeing their behavior, as with Kopek.
Backend optimizations
Custom optimization passes, like our work on Flambda2 for the OCaml compiler.
Porting to new targets
WebAssembly, embedded architectures: we port your language wherever you need it.
Developer tooling
LSP, syntax highlighting, autocompletion: a custom language deserves the same tooling as a mainstream one.
Problems solved with a custom compiler
Unsupported proprietary dialect
Does your code depend on a proprietary extension of a legacy compiler? We implement it in the equivalent open source tool, as we did for GnuCOBOL.
Insufficient performance
A general-purpose language can't keep up with your use case? We design the language or compiler that can.
Vendor lock-in
Depending on a proprietary compiler or IDE exposes you to risk. We build open, maintainable alternatives.
Unsafe business language
Your business rules are encoded in general-purpose code, a source of errors. A DSL makes them explicit and verifiable.