Data Science: JupyterLite läuft auf WebAssembly und benötigt kein Backend
Jupyter veröffentlicht eine eigenständige JupyterLab-Distribution für den Browser. Grundlage ist das ursprünglich von Mozilla angestoßene Projekt Pyodide.
Das Project-Jupyter-Team hat mit JupyterLite eine Distribution von JupyterLab veröffentlicht, die eigenständig im Browser läuft. Grundlage für die Ausführung von Python-Code ist Pyodide, das wiederum auf WebAssembly aufsetzt. Neben Python lassen sich weitere Kernels für andere Programmiersprachen anbinden.
Offensichtlich existiert die Idee bereits seit geraumer Zeit: Der Beitrag im Jupyter-Blog bezeichnet das Projekt als Reboot zahlreicher Versuche, eine statische Jupyter-Distribution zu erstellen. JupyterLite läuft vollständig unabhängig im Browser und kommt ohne Anbindung an einen Python-Jupyter-Server aus. Da es zahlreiche JupyterLab-Plug-ins und -Komponenten verwendet, kann das Team Ergänzungen und Verbesserungen problemlos in JupyterLite einpflegen. Zum Lieferumfang gehört das ehemals JupyterLab Classic genannte Interface RetroLab.
Pyolite auf Pyodide
Als Python-Kernel bringt JupyterLite Pyolite mit, der wiederum auf den Python-Stack Pyodide aufsetzt. Letzteren hatte Mozilla vor zwei Jahren erstmals vorgestellt und im Frühjahr diesen Jahres in ein eigenständiges Projekt überführt. Er bietet einen Python-Interpreter für CPython 3.8 und arbeitet von Haus aus mit zahlreichen Python-Libraries wie NumPy, Pandas, SciPy und Matplotlib zusammen. Unter der Haube setzt Pyodide auf WebAssembly.
Der Interpreter bietet eine Umwandlung von Objekten zwischen JavaScript- und Python-Typen. Ursprünglich hatte Mozilla mit Iodide ein an Jupyter Notebooks angelehntes Werkzeug veröffentlicht, das im Kern auf Pyodide setzt. Im Herbst 2020 haben die Entwickler das Tool allerdings eingestellt.
Der in JupyterLite verwendete Python-Kernel Pyolite setzt auf Pyodide auf und ist als Web Worker eingebunden. Auf die Weise sind aufwändige Berechnungen in einen Hintergrund-Thread ausgelagert, um die Webanwendung nicht zu blockieren. Pyolite nutzt zusätzlich den Kommandozeileninterpreter IPython unter anderem für Autovervollständigung.
Visualisierung und Widgets
JupyterLite bring einige Visualisierungs-Libraries wie Altair und Plotly mit, die interaktiv Grafiken und Plots erstellen. Auch viele Jupyter Widgets – sowohl von Jupyter als auch von Drittanbietern – lassen sich nutzen. Das dazu verwendete Custom-Messages-System kommuniziert dabei direkt mit dem Pyolite-Kernel statt wie üblich mit dem Jupyter-Backend.
Zum Einbinden eigener Erweiterungen setzt JupyterLite auf das Anfang des Jahres in Jupyter 3.0 eingeführte Extension-System. Viele JupyterLab-Extensions sollen sich auf die Weise auch in der statischen Variante nutzen lassen.
Grundsätzlich ist JupyterLite modular aufgebaut und setzt auf einen Plug-in-Ansatz. Dadurch können Entwicklerinnen und Entwickler einzelne Module austauschen oder Plug-ins für spezielle Anforderungen ergänzen. Auch den Kernel können sie austauschen und beispielsweise auf den Basthon-Kernel setzen, der im UI-Thread als Web Worker umgesetzt ist. Langfristige Berechnungen können so potenziell die Oberfläche blockieren, aber Basthon bietet direkten Zugriff auf das DOM (Document Object Model) der Anwendung aus Python heraus.
Jenseits von Python
Auch wenn der Pyolite-Kernel in Python umgesetzt ist, lassen sich Kernels für andere Programmiersprachen nutzen. Zum Start bringt JupyterLite standardmäßig neben Pyolite einen JavaScript- und einen p5-Kernel mit. Zu Julia und R gibt es derzeit noch keine Angaben. Zusammen mit Python sind die beiden Programmiersprachen einer von drei Gründen für den Namen Jupyter.
Weitere Details zu JupyterLite lassen sich dem Jupyter-Blog entnehmen. Der Beitrag bietet unter anderem Hinweise zur Installation. Auf GitHub findet sich zudem eine interaktive Demo, die sich direkt im Browser verwenden lässt.
(rme)