Project Tricarbon is my attempt at making a cleaner compiler ecosystem. It is meant to be useful for any compiler projects, in any language, and features components such as: an in-memory assembler; low-level code generation; IR parsers for LLVM, QBE, and more; an IR generalizer providing a common structure
Despite the name (compiler components), it's also useful for emulation via dynamic code generation using the same tools as the standard compilation pipeline.
Project Tricarbon is a fun way of referring to Cimple Compiler Components, or C3 (I couldn't think of a good name for Sulphur Dicarbon). I was going to call it Project Cyclopropatriene (a hypothetical tri-carbon element), but that is... not an easy name to remember.
In some places, the project is referred to as Operation Tricabon, or O3. Both of those are incorrect, and are from before I had settled on the current name. Cyclopropatriene is still used for the mailing lists, and that will only be changed if there is a real demand to do so.
Currently, there's a few projects which are complete or partly finished:
Currently, all of Project Tricarbon is implemented in Zig. As such, working with Project Tricarbon pieces is easiest using Zig. However, the goal of this project is to create a useful ecosystem for any language. C bindings for Zig components is a long-term goal, and I explicitly support implementing other components in C.
Most other languages, such as Rust or C++, can only be used for implementations if a C binding is exposed from the start with all critical functionality usable.
Components are allowed to provide extra features to programs in their native language, so long as core features are usable from any language over the C layer.