[GSoC2025] Advanced symbol resolution and reoptimization for clang-repl

Description of the project: The Clang compiler is part of the LLVM compiler infrastructure and supports various languages such as C, C++, ObjC and ObjC++. The design of LLVM and Clang enables them to be used as libraries, and has led to the creation of an entire compiler-assisted ecosystem of tools. The relatively friendly codebase of Clang and advancements in the JIT infrastructure in LLVM further enable research into different methods for processing C++ by blurring the boundary between compile time and runtime. Challenges include incremental compilation and fitting compile/link time optimizations into a more dynamic environment. Incremental compilation pipelines process code chunk-by-chunk by building an ever-growing translation unit. Code is then lowered into the LLVM IR and subsequently run by the LLVM JIT. Such a pipeline allows creation of efficient interpreters. The interpreter enables interactive exploration and makes the C++ language more user friendly. Clang-Repl is one example.

Expected result: The project aims to develop a robust mechanism for resolving missing symbols by dynamically identifying and loading the appropriate shared objects or static archives. Additionally, it will explore use cases where adapting symbols based on execution profiles leads to measurable performance improvements, optimizing the efficiency of just-in-time compilation and dynamic execution environments.

Skills: Intermediate knowledge of C++, Understanding of LLVM and the LLVM JIT in particular

Project size:Either medium or large.

Difficulty: Medium

Confirmed Mentor: Vassil Vassilev

Hello @vvassilev , I am quite interested in the project as I am familiar with LLVM and LLVM JIT too.

I have also followed the kaleidoscope tutorial to get familiar with the project.Currently I am also doing a project using mlir to optimize matrix multiplication operation.
I went through
https://clang.llvm.org/docs/ClangRepl.html
Can you suggest me any other articles / beginner friendly issues that I can look into.
Thanks :smiley:

Hi @vvassilev – very interested in this project. Familiar with C++, and have a (reasonable) understanding of LLVM. Especially interested in LLVM JIT, which is why this project is quite exciting to me. Most recently have been updating chapter 3-5 of the LLVM JIT tutorial to be up to date, would love the opportunity to work with LLVM JIT more. Read through Clang-Repl as well. Let me know what else I should be looking at to be more familiar with the project! Thanks.

Hi @shrikardongre and @raayandhar.

Thanks for reaching out.

Apologies for the late response. This project is rather tricky and requires some past experience. I’d recommend building clang-repl and start playing with it. Maybe you can take a look at opened issues in the area and try to tackle them. This will give you an idea of what are the required skills.