Clang-REPL kernel for Jupyter
Project description
Clang-Repl kernel for Jupyter
A simple Jupyter kernel for C/C++ using Clang-Repl. It works on Windows and Linux. (MacOS is not tested)
CAUTION
There is a problem on Windows with Clang-Repl when work with Python. You need to fix LineEditor.h file. Put ::fflush(Data->Out); after ::fprintf(Data->Out, "%s", Prompt.c_str()); in LineEditor::readLine() And rebuild it and put it on PATH or {package installed directory}/{platform}.
OR download one of windows: https://github.com/ormastes/jupyter_kernels/blob/main/clang_repl_kernel/clang_repl_kernel/Windows/clang-repl.exe linux: https://github.com/ormastes/jupyter_kernels/blob/main/clang_repl_kernel/clang_repl_kernel/Linux/clang-repl And put it on PATH or {package installed directory}/{platform}. (You may need to rename it to clang-repl.exe or clang-repl) However, you need to install windows: Visual Studio 2022 c++ (https://visualstudio.microsoft.com/downloads/) linux: build-essential (sudo apt install build-essential, git clone https://github.com/llvm/llvm-project.git)
package installed directory
- Windows: C:\Users{user}\AppData\Local\Programs\Python\Python{version}\Lib\site-packages\clang_repl_kernel
- Linux: /usr/local/lib/python{version}/dist-packages/clang_repl_kernel
- or /home/{user}/.local/lib/python{version}/site-packages/clang_repl_kernel/
- MacOS: /Library/Frameworks/Python.framework/Versions/{version}/lib/python{version}/site-packages/clang_repl_kernel
platform
- Windows: Windows
- Linux: Linux
- MacOS: Darwin
llvm/lib/LineEditor/LineEditor.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/llvm/lib/LineEditor/LineEditor.cpp b/llvm/lib/LineEditor/LineEditor.cpp
index bb408411a330..15d3ba4dc834 100644
--- a/llvm/lib/LineEditor/LineEditor.cpp
+++ b/llvm/lib/LineEditor/LineEditor.cpp
@@ -294,6 +294,7 @@ void LineEditor::loadHistory() {}
std::optional<std::string> LineEditor::readLine() const {
::fprintf(Data->Out, "%s", Prompt.c_str());
+ ::fflush(Data->Out);
std::string Line;
do {
Trouble shot
When you see
/usr/include/stdio.h:33:10: fatal error: 'stddef.h' file not found
33 | #include <stddef.h>
| ^~~~~~~~~~
Segmentation fault
put path include 'stddef.h' file like and uninstall and reinstall clang-repl-kernel (You need to change llvm-18 to your llvm)
export CPLUS_INCLUDE_PATH=/usr/lib/llvm-18/lib/clang/18/include/
pip uninstall clang_repl_kernel
pip install clang_repl_kernel
When you see
ModuleNotFoundError: No module named 'ipykernel'
Use venv or conda environment and install notebook
python -m venv venv
source venv/bin/activate
pip install notebook
pip -r requirements.txt
From Pip to install
To install clang_repl_kernel
from pip into the active Python environment
pip install clang_repl_kernel
From Git using Conda
To install clang_repl_kernel
from git into a Conda environment
git clone https://github.com/ormastes/jupyter_kernels/clang_repl_kernel.git
cd clang_repl_kernel
conda create -n ker jupyter
conda activate ker
pip install .
Using the Clang-Repl kernel
Notebook: The File > New > Notebook menu in the notebook should show an Kernel Selection for the notebook. Select kernel ''Clang-Repl (C++xx)'' to start a new notebook. (XX is the version of C++ you want to use)
Console frontends: To use it with the console frontends, add --kernel clang_repl_cppXX
to their command line arguments.
(XX is the version of C++ you want to use)
It fully checked on Windows 11 with clang 18.0.0, Python 3.11.5 and notebook 7.0.4. It fully checked on Ubuntu 20.04 with build_essential, clang 18.0.0, Python 3.10.22 and notebook 7.0.4.
Reference
https://github.com/jupyter/echo_kernel https://saturncloud.io/blog/how-to-add-a-python-3-kernel-to-jupyter-ipython/ https://github.com/takluyver/bash_kernel
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for clang_repl_kernel-0.1.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3f466a25423ff8e976efa58cd6bf5b04dfac1e85c0a2a37b0d90539ab1de8ac |
|
MD5 | 616b41dc65d37628ce4ec535b8cdeb73 |
|
BLAKE2b-256 | c4eddd1f805e655c62d5eb71ffd9610c21a8592016399813d2e34cd264f76754 |