[Contents] [TitleIndex] [WordIndex


Jupyter project provides a way to perform scientific/mathematical computations with several different programming languages using the same user interface. It achieves that by distributing the processing between a front-end (Jupyter clients, like the web based Jupyter Notebook) and a back-end (Jupyter kernels, written in Python, R, Java, etc.), that communicate among themselves with standardized format messages, transmitted through ZeroMQ connections.

Besides the ability to switch across different kernels from the same common interface, another advantage of this approach is the possibility to run the two software components on different machines, e.g., offloading the heavier backend processing to a remote server while sending commands and visualizing data from a mobile device running the frontend.

For Scilab, there is currently a kernel that uses a compatibility layer with file access data exchange and numpy calls to communicate with clients through the Python reference implementation. This project aims to create it a truly native kernel, adding ZeroMQ messages processing directly to and Scilab executable.

Initial Development Reports

Personal Student Blog (XML feed)

Development Repository

Scilab-Jupyter-Kernel (GitHub)

Current Codereview Submission


Building and Running (Linux)

As the Jupyter kernel functionality adds new dependencies (namely ZeroMQ and native operating system UUID generation libraries), the compilation of the extra executable (jupyter-scilab-kernel) is hidden behind a configure option:

./configure --enable-jupyter

enables the building of the kernel when running make.

Supposing that your Scilab binaries are installed at the default PATH, and Jupyter tools are installed as well, you need to create a entry for the Scilab kernel at one of Jupyter kernel specs default directories, like:


Now, just create a <path_to_kernel_dir>/kernel.json file containing something like this:

 "argv": [ "jupyter-scilab-kernel", "{connection_file}" ],
 "display_name": "Scilab Native",
 "language": "scilab"

The first line is the most important: first argument gives the kernel executable path, and the "{connection_file}" file argument is replaced for the connection configuration file, which is automatically generated by jupyter command and processed by the kernel.

To make sure everything was done right, you can list the available kernels:

$ jupyter kernelspec list
Available kernels:
  python3          /usr/lib/python3.5/site-packages/ipykernel/resources
  scilab           /home/leonardojc/.local/share/jupyter/kernels/Scilab

And call it from a local console with:

jupyter qtconsole --kernel scilab

Or choose it from a Jupyter Notebook after starting a server:

jupyter notebook

2022-09-08 09:27