diff --git a/_gsocproposals/2025/proposal_XeusCpp-Debugging.md b/_gsocproposals/2025/proposal_XeusCpp-Debugging.md new file mode 100644 index 000000000..42a5820fc --- /dev/null +++ b/_gsocproposals/2025/proposal_XeusCpp-Debugging.md @@ -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:anutosh.bhat@quantstack.net)** +* [Johan Mabille](mailto:johan.mabille@quantstack.net) +* [Vipul Cariappa](mailto:vipulcariappa@gmail.com) +* [Aaron Jomy](mailto:aaron.jomy@cern.ch) + +## 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 \ No newline at end of file diff --git a/_gsocproposals/2025/proposal_XeusCpp-Plugins.md b/_gsocproposals/2025/proposal_XeusCpp-Plugins.md new file mode 100644 index 000000000..0558fa38b --- /dev/null +++ b/_gsocproposals/2025/proposal_XeusCpp-Plugins.md @@ -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:anutosh.bhat@quantstack.net)** +* [Johan Mabille](mailto:johan.mabille@quantstack.net) +* [Vipul Cariappa](mailto:vipulcariappa@gmail.com) +* [Aaron Jomy](mailto:aaron.jomy@cern.ch) + +## 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