Skip to content

Instantly share code, notes, and snippets.

@chronitis
Last active April 14, 2024 13:20
Show Gist options
  • Star 39 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save chronitis/682c4e0d9f663e85e3d87e97cd7d1624 to your computer and use it in GitHub Desktop.
Save chronitis/682c4e0d9f663e85e3d87e97cd7d1624 to your computer and use it in GitHub Desktop.
Updated Jupyter Kernels page

What is a kernel?

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.

Which kernels do I have installed?

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.

Available kernels

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

Discontinued or unfinished kernels

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

Creating new Jupyter kernels

Making kernels for Jupyter in the documentation.

Simple example kernel

IHaskell creator blog post

Testing kernels against message specification (work in progress)

Tool to test a kernel against specification (work in progress)

Libraries providing a generic kernel implementation:

@JohnLockwood
Copy link

Very helpful list. I linked to it from an article on Jupyter recently. Thanks!

@tangzhankun
Copy link

@shiroinekotfs
Copy link

shiroinekotfs commented Jul 14, 2023

@westurner
Copy link

@hugetim
Copy link

hugetim commented Oct 11, 2023

@dokempf
Copy link

dokempf commented Oct 27, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment