Skip to content

Commit 8d8bdff

Browse files
committed
Add xeus-cpp GSoC projects
1 parent 7f46051 commit 8d8bdff

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: xeus-cpp: Implementing Debugging Support
3+
layout: gsoc_proposal
4+
project: Xeus-Cpp
5+
year: 2025
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
---
12+
13+
## Description
14+
15+
Xeus-Cpp is an interactive execution environment for C++ in Jupyter notebooks, built on top of Clang-Repl via CppInterOp. While it provides a seamless workflow for running C++ code interactively, the lack of an integrated debugging experience remains a gap, especially when dealing with dynamically compiled code through LLVM’s JIT (Just-In-Time) execution.
16+
17+
Jupyter’s debugging system follows the Debug Adapter Protocol (DAP), enabling seamless integration of debuggers into interactive kernels. Existing Jupyter kernels, such as the IPython & the xeus-python kernel, have successfully implemented debugging workflows that support breakpoints, variable inspection, and execution control, even in dynamically executed environments. These implementations address challenges such as symbol resolution and source mapping for dynamically generated code, ensuring that debugging within Jupyter remains intuitive and user-friendly.
18+
19+
However, debugging C++ inside an interactive environment presents unique challenges, particularly due to Clang-Repl’s use of LLVM’s ORC JIT to compile and execute code dynamically. To integrate debugging into Xeus-Cpp, the project will explore existing solutions for DAP implementations like `lldb_dap` and debuggers like lldb that can interface with Jupyter while effectively supporting the execution model of Clang-Repl.
20+
21+
## Project Milestones
22+
23+
* Seamless debugging integration in Xeus-Cpp establishing reliable interactions between Xeus-CPP, a Debug Adapter Protocol (DAP) implementation, and a debugger.
24+
* Implement a testing framework through xeus-zmq to thoutest the debugger thoroughly testing everything that is supposed to work. Already done for xeus-python and we can take inspiration from there.
25+
* Present the work at the relevant meetings and conferences.
26+
27+
28+
## Requirements
29+
30+
* C/C++
31+
* Basic understanding of Debug Adapter Protocol
32+
* Basic understanding of the stack used by xeus-cpp: xeus, cppinterop, clang-repl
33+
* Research on different DAP implementations like lldb_dap and debuggers like lldb/gdb that can be utilized for the project.
34+
35+
## Mentors
36+
* **[Anutosh Bhat](mailto:[email protected])**
37+
* [Johan Mabille](mailto:[email protected])
38+
* [Vipul Cariappa](mailto:[email protected])
39+
* [Aaron Jomy](mailto:[email protected])
40+
41+
## Links
42+
* [Repo](https://github.com/compiler-research/xeus-cpp)
43+
* [Debug Adaptor Protocol](https://microsoft.github.io/debug-adapter-protocol/)
44+
* Debugging support through Jupyter:
45+
- https://jupyterlab.readthedocs.io/en/stable/user/debugger.html
46+
- https://jupyter-client.readthedocs.io/en/latest/messaging.html#debug-request
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: xeus-cpp: Enable GPU support and Python Interoperability via a Plugin System
3+
layout: gsoc_proposal
4+
project: Xeus-Cpp
5+
year: 2025
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
---
12+
13+
## Description
14+
15+
Xeus-Cpp integrates [Clang-Repl](https://clang.llvm.org/docs/ClangRepl.html) with the Xeus protocol via CppInterOp, providing a powerful platform for C++ development within Jupyter Notebooks.
16+
17+
This project aims to introduce a plugin system for magic commands (cell, line, etc.), enabling a more modular and maintainable approach to extend Xeus-Cpp. Traditionally, magic commands introduce additional code and dependencies directly into the Xeus-Cpp kernel, increasing its complexity and maintenance burden. By offloading this functionality to a dedicated plugin library, we can keep the core kernel minimal while ensuring extensibility. This approach allows new magic commands to be developed, packaged, and deployed independently—eliminating the need to rebuild and release Xeus-Cpp for each new addition.
18+
Initial groundwork has already been laid with the Xplugin library, and this project will build upon that foundation. The goal is to clearly define magic command compatibility across different platforms while ensuring seamless integration.
19+
A key objective is to reimplement existing features, such as the LLM cell magic and the in-development Python magic, as plugins. This will not only improve modularity within Xeus-Cpp but also enable these features to be used in other Jupyter kernels.
20+
21+
As an extended goal, we aim to develop a new plugin for GPU execution, leveraging CUDA or OpenMP to support high-performance computing workflows within Jupyter.
22+
23+
24+
## Project Milestones
25+
26+
* Move the currently implemented magics and reframe using xplugin
27+
* Complete the on-going work on the Python interoperability magic
28+
* Implement a test suite for the plugins
29+
* Extended: To be able to execute on GPU using CUDA or OpenMP
30+
* Optional: Extend the magics for the wasm use case (xeus-cpp-lite)
31+
* Present the work at the relevant meetings and conferences
32+
33+
## Requirements
34+
35+
* Python
36+
* C/C++
37+
* GPU programming; CUDA/OpenMP
38+
39+
40+
## Mentors
41+
* **[Anutosh Bhat](mailto:[email protected])**
42+
* [Johan Mabille](mailto:[email protected])
43+
* [Vipul Cariappa](mailto:[email protected])
44+
* [Aaron Jomy](mailto:[email protected])
45+
46+
## Links
47+
* [Repo](https://github.com/compiler-research/xeus-cpp)
48+
* Related Issues:
49+
- https://github.com/compiler-research/xeus-cpp/issues/4
50+
- https://github.com/compiler-research/xeus-cpp/issues/140

0 commit comments

Comments
 (0)