@@ -11,14 +11,25 @@ includes a kernel for Python code, and people have written kernels for
11
11
At kernel startup, Jupyter passes the kernel a connection file. This specifies
12
12
how to set up communications with the frontend.
13
13
14
- There are two options for writing a kernel:
14
+ There are three options for writing a kernel:
15
15
16
16
1. You can reuse the IPython kernel machinery to handle the communications, and
17
17
just describe how to execute your code. This is much simpler if the target
18
18
language can be driven from Python. See :doc: `wrapperkernels ` for details.
19
19
2. You can implement the kernel machinery in your target language. This is more
20
20
work initially, but the people using your kernel might be more likely to
21
21
contribute to it if it's in the language they know.
22
+ 3. You can use the `xeus <https://github.com/QuantStack/xeus >`_ library that is
23
+ a C++ implementation of the Jupyter kernel protocol. Kernel authors only need to
24
+ implement the language-specific logic in their implementation
25
+ (execute code, auto-completion...). This is the simplest
26
+ solution if your target language can be driven from C or C++: e.g. if it has
27
+ a C-API like most scripting languages. Check out the
28
+ `xeus documentation <https://xeus.readthedocs.io/ >`_ for more details.
29
+ Examples of kernels based on xeus include:
30
+ - `xeus-cling <https://github.com/QuantStack/xeus-cling >`_
31
+ - `xeus-python <https://github.com/QuantStack/xeus-python >`_
32
+ - `JuniperKernel <https://github.com/JuniperKernel/JuniperKernel >`_
22
33
23
34
Connection files
24
35
================
0 commit comments