The kernel lets you run code in a particular programming language using one of the Jupyter tools, such as the Notebook, Jupyterlab or nteract. Installing additional kernels will let you run code in more languages using your existing jupyter installation.
Technically, the kernel is an application which speaks the Jupyter Messaging Protocol, to receive code input from the frontend and respond with the results.
In the Notebook or JupyterLab, the list of available kernels will be shown when trying to create a new notebook.
In the terminal, you can run jupyter kernelspec list
to see the available kernels.
The default Python kernel (ipykernel
) is usually installed by default along with Jupyter.
Due to the large number of different language ecosystems, there isn't a standard way to install all kernels: read the specific kernel's documentation for details.
Language | Kernel | Notes |
---|---|---|
Python (2, 3) | IPyKernel | pip3 install ipykernel |
Julia | IJulia | Pkg.add("IJulia") |
R | IRKernel | install.packages("IRkernel") |
Javascript | IJavascript | npm install ijavascript |
Javascript | jp-babel | npm install jp-babel |
Haskell | IHaskell | |
Ruby | IRuby | gem install iruby |
APL | Dyalog Jupyter Kernel | |
SAS | sas_kernel | |
Ansible | Ansible Jupyter Kernel | |
CoffeeScript | jpCoffeescript | |
C# | ICSharp | |
SageMath | SageMath | |
F# | IFSharp | |
Go | lgo | |
Go | Gophernotes | go get github.com/gopherdata/gophernotes |
Scala | Almond | Previously called Jupyter-scala |
Elixir | IElixir | |
Erlang | ierl | |
OCaml | OCaml-Jupyter | opam install jupyter |
Perl 6 | Jupyter-Perl6 | zef install Jupyter::Kernel |
Octave | octave_kernel | pip install octave_kernel |
Scilab | scilab_kernel | pip install scilab_kernel |
MATLAB | matlab_kernel | pip install matlab_kernel |
MATLAB | imatlab | |
Bash | bash_kernel | pip install bash_kernel |
Bash | Calysto Bash | |
Zsh | zsh_kernel | pip install zsh_kernel |
Powershell | jupyer-powershell | pip install powershell_kernel |
Smalltalk | JupyterTalk | |
Clojure | CloJupyter | |
Hy | Calysto Hy | pip install calysto_hy |
Mathematica | IWolfram | |
Lua | ILua | pip install ilua |
Scheme | Calysto Scheme | |
Processing | Calysto Processing | |
Spark | Apache Toree | Supports Scala, Python, R |
C++ | cling | |
C++ | xeus-cling | |
ROOT | ROOT | |
Xonsh | xonsh | pip install xonsh |
Common Lisp | common-lisp-jupyter | |
Maxima | Maxima-Jupyter | |
Common Lisp | cl-jupyter | |
Jython | IJython | |
Gnuplot | Gnuplot Kernel | pip install gnuplot_kernel |
TCL | tcl_kernel | |
J | jkernel | |
C | jupyter-c-kernel | |
TaQL | taql-jupyter | |
Coconut | Coconut | |
SPARQL | SPARQL | |
ARMv6 | IArm | |
Typescript | ITypeScript | |
Kotlin | jupyter-kotlin | |
Singular | jupyter_kernel_singular | |
Scala | spylon-kernel | |
Scheme | mit-scheme-kernel | |
Elm | elm-kernel | |
Java | SciJava Jupyter Kernel | |
Java | IJava | |
MicroPython | MicroPython | |
CircuitPython | circuitpython_kernel | |
Guile | Guile | |
Stata | stata_kernel | |
Stata | iPyStata | |
Racket | IRacket | |
Dot | jupyter-dot-kernel | |
Teradata SQL | Teradata SQL kernel | |
HiveQL | HiveQL Kernel | |
Rust | EvCxR Jupyter Kernel | cargo install evcxr_jupyter |
StuPyd | StuPyd Kernel | |
Coq | coq_jupyter | |
Cadabra2 | Cadabra2 | |
Chapel | jupyter_kernel_chapel | |
Vimscript | vim_kernel | |
SSH | SSH Kernel | |
GAP | GAP Kernel |
These kernels may still work, but do not appear to have been actively developed for at least two years.
Language | Kernel | Notes |
---|---|---|
Go | gopherlab | |
Go | IGo | |
Scala | IScala | |
Erlang | IErlang | |
Torch | ITorch | |
Aldor | IAldor | |
OCaml | IOCaml | |
Forth | IForth | |
Perl 5 | IPerl | |
Perl 6 | Net::Jupyter | |
Perl 6 | IPerl6 | |
PHP | Jupyter-PHP | |
Clojure | CLJ-Jupyter | |
Hy | Hy Kernel | |
Redis | Redis Kernel | |
Javascript | jove | |
Javascript | jupyter-nodejs | |
Calico | ICalico | |
Mathics | IMathics | |
Lua | Lua Kernel | |
Lua | IPyLua | |
Purescript | IPurescript | |
IDL | idl_kernel | |
Mochi | Mochi Kernel | |
Skulpt | Skulpt Python Kernel | |
Brainfuck | IBrainfuck | |
Q | KDB+/Q Kernel (IKdbQ) | |
Q | KDB+/Q Kernel (KdbQ Kernel) | |
Cryptol | ICryptol | |
Prolog | Calysto Prolog | |
LC3 | Calysto LC3 | |
YACAS | Yacas | |
AIML | AIML chatbot | |
Pike | jupyter-pike-kernel | |
SBT | Isbt | |
MongoDB | iMongo |
Making kernels for Jupyter in the documentation.
Testing kernels against message specification (work in progress)
Tool to test a kernel against specification (work in progress)
Libraries providing a generic kernel implementation:
- metakernel (Python)
- xeus (C++)
- jupyter-kernel-jsr223 (Java)
Very helpful list. I linked to it from an article on Jupyter recently. Thanks!