“A complete compiler pipeline (Lexing to IR) featuring a custom memory management strategy to ensure zero-leak stability under high-stakes testing constraints.”
The Tiger Compiler is one of the most rigorous projects at EPITA. Developed over two months in a team of four, the goal was to build a robust pipeline capable of translating Tiger source code into executable logic.
Because of the project’s complexity, we were limited to only four official submissions to pass a suite of 100+ hidden test cases. A single segmentation fault or memory leak would result in an immediate failure for that submission, requiring a level of precision far beyond standard academic exercises.
I focused on the core architecture and the transition between semantic analysis and code generation:
One of the primary challenges was ensuring zero memory leaks across thousands of lines of complex C++ logic. With limited submissions and no error logs from the grading server if any memory leaks occurred, we couldn’t rely on simple trial and error.
I developed a custom internal memory manager dubbed “Baballoc”.
Instead of standard raw pointers, I implemented a wrapper around malloc and free that tracked every active allocation in a specialized linked list.
This project was my first deep dive into LLVM and industrial-grade C++. It taught me how to manage high-pressure deadlines where “close enough” isn’t an option. More importantly, it taught me that sometimes the best engineering solution is to build your own tooling (like Baballoc) to guarantee the reliability of the main system.
We achieved a score of 16/20, passing all test cases without a single memory leak or segmentation fault. Unfortunately, due to academic policies, the source code cannot be publicly shared to prevent plagiarism since it is a pivot project of the EPITA curriculum. But some people shared it nonetheless for example here, this can help you get a grasp of the complexity of the project: tiger-compiler
Go back to projects