Skip to content

Commit ddd945d

Browse files
committed
Add xeus to the documentation on how to write a kernel for Jupyter
1 parent 1cec386 commit ddd945d

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

docs/kernels.rst

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,25 @@ includes a kernel for Python code, and people have written kernels for
1111
At kernel startup, Jupyter passes the kernel a connection file. This specifies
1212
how to set up communications with the frontend.
1313

14-
There are two options for writing a kernel:
14+
There are three options for writing a kernel:
1515

1616
1. You can reuse the IPython kernel machinery to handle the communications, and
1717
just describe how to execute your code. This is much simpler if the target
1818
language can be driven from Python. See :doc:`wrapperkernels` for details.
1919
2. You can implement the kernel machinery in your target language. This is more
2020
work initially, but the people using your kernel might be more likely to
2121
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>`_
2233

2334
Connection files
2435
================

0 commit comments

Comments
 (0)