Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions _gsocproposals/2025/proposal_XeusCpp-Debugging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Implementing Debugging Support
layout: gsoc_proposal
project: Xeus-Cpp
year: 2025
difficulty: medium
duration: 350
mentor_avail: June-October
organization:
- CompRes
---

## Description

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.

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.

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.

## Project Milestones

* Seamless debugging integration in Xeus-Cpp establishing reliable interactions between Xeus-CPP, a Debug Adapter Protocol (DAP) implementation, and a debugger.
* 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.
* Present the work at the relevant meetings and conferences.


## Requirements

* C/C++
* Basic understanding of Debug Adapter Protocol
* Basic understanding of the stack used by xeus-cpp: xeus, cppinterop, clang-repl
* Research on different DAP implementations like lldb_dap and debuggers like lldb/gdb that can be utilized for the project.

## Mentors
* **[Anutosh Bhat](mailto:[email protected])**
* [Johan Mabille](mailto:[email protected])
* [Vipul Cariappa](mailto:[email protected])
* [Aaron Jomy](mailto:[email protected])

## Links
* [Repo](https://github.com/compiler-research/xeus-cpp)
* [Debug Adaptor Protocol](https://microsoft.github.io/debug-adapter-protocol/)
* Debugging support through Jupyter:
- https://jupyterlab.readthedocs.io/en/stable/user/debugger.html
- https://jupyter-client.readthedocs.io/en/latest/messaging.html#debug-request
50 changes: 50 additions & 0 deletions _gsocproposals/2025/proposal_XeusCpp-Plugins.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: Enable GPU support and Python Interoperability via a Plugin System
layout: gsoc_proposal
project: Xeus-Cpp
year: 2025
difficulty: medium
duration: 350
mentor_avail: June-October
organization:
- CompRes
---

## Description

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.

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.
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.
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.

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.


## Project Milestones

* Move the currently implemented magics and reframe using xplugin
* Complete the on-going work on the Python interoperability magic
* Implement a test suite for the plugins
* Extended: To be able to execute on GPU using CUDA or OpenMP
* Optional: Extend the magics for the wasm use case (xeus-cpp-lite)
* Present the work at the relevant meetings and conferences

## Requirements

* Python
* C/C++
* GPU programming; CUDA/OpenMP


## Mentors
* **[Anutosh Bhat](mailto:[email protected])**
* [Johan Mabille](mailto:[email protected])
* [Vipul Cariappa](mailto:[email protected])
* [Aaron Jomy](mailto:[email protected])

## Links
* [Repo](https://github.com/compiler-research/xeus-cpp)
* Related Issues:
- https://github.com/compiler-research/xeus-cpp/issues/4
- https://github.com/compiler-research/xeus-cpp/issues/140