Python im Browser: Mozilla überführt Pyodide in eigenständiges Projekt
Das Projekt zum Ausführen von Python-Anwendungen im Browser mit WebAssembly steht nun in einer eigenständigen GitHub-Organisation bereit.
Mozilla hat Pyodide ausgegliedert und an eine unabhängige Organisation übertragen. Das Projekt zum Ausführen von Python-Code im Browser steht nun unter den Fittichen eines Teams aus Freiwilligen, die an der bisherigen Entwicklung maßgeblich beteiligt waren. Neben einer eigenen GitHub-Organisation existiert eine dedizierte Site, auf der sich vor allem die Dokumentation findet.
Pyodide zielt vor allem auf Data-Science-Anwendungen, die direkt im Browser laufen. Es nutzt die Emscripten-Compiler-Toolchain, um den CPython-Interpreter und Python-Pakete mit C-Extensions nach WebAssembly zu übersetzen. Mozilla hatte das Projekt vor zwei Jahren erstmals öffentlich vorgestellt.
Pyodide hat Iodide überlebt
Maßgebliche Anregung für die Python-Integration kam von dem ebenfalls bei Mozilla gestarteten Iodide-Projekt. Das webbasierte Werkzeug zur Datenanalyse sollte ähnlich wie Jupyter Notebooks arbeiten und das Erstellen interaktiver Webdokumente ermöglichen. Im Herbst 2020 stellte Mozilla Iodide jedoch offiziell ein. Seitdem liegt das zugehörige GitHub-Repository brach. Der Sourcecode ist zwar weiterhin verfügbar, aber das Readme vermeldet das Ende der Weiterentwicklung, was sich auch im Alter der jüngsten Änderungen vor vier Monaten widerspiegelt.
Pyodide ist wohl unabhängig von Iodide auf breites Interesse gestoßen. Laut der Ankündigung der Ausgliederung des Projekts auf Mozilla Hacks kommt es auch außerhalb des Unternehmens in zahlreichen Projekten zum Einsatz und wird von der Community aktiv weiterentwickelt.
Workflows mit Python im Bereich Data Science und Machine Learning stehen im Fokus des zweiten Thementags der enterPy 2021 am 6. Mai.
Eigenständige Weiterentwicklung
Die nun erfolgte Überführung in ein unabhängiges Projekt ist zumindest eine klare Ansage, dass Pyodide eine Zukunft hat. Das Readme von Iodide erklärt zwar, dass Pyodide nicht von der Einstellung des Projekts betroffen sei, aber die Sparmaßnahmen und Entlassungen bei Mozilla im August 2020 haben in diversen Bereichen und Projekten zu Verunsicherung geführt. Die Programmiersprache Rust als eines der prominentesten Projekte, die bei Mozilla ihren Anfang nahmen, steht seit Februar unter dem Schirm einer eigenen Rust Foundation.
So weit ist das Pyodide-Projekt zumindest derzeit nicht, aber neben dem GitHub-Repository existiert eine eigene Projekt-Site, die neben der Dokumentation Informationen zum Governance-Prozess enthält. Demnach steht für Entwicklungen ein "konsenssuchender" Prozess an. Für die Rollen der Projektbeteiligten unterscheidet die Seite zwischen Beitragenden, Community-Teammitgliedern und dem Kernentwicklungsteam.
Blick nach vorn
Eine Roadmap auf der Pyodide-Site zeigt die Pläne für die Weiterentwicklung des Projekts auf. Das Team will die Größe der Downloaddatei und die Startzeit von derzeit 6,4 MByte beziehungsweise vier bis fünf Sekunden reduzieren. Außerdem will es die Performance beim Ausführen von Pyodide-Python-Code verbessern. Daneben steht ein vereinfachtes System zum Laden von Paketen und die Aktualisierung des angebundenen SciPy-Pakets an, das derzeit noch den Stand von 2016 hat.
Weitere Pläne zielen in Richtung von APIs für Synchronous I/O statt Asynchronous I/O, um wichtige Teile des Python-Ökosystems, die unter anderem auf Interaktion auf der Kommandozeile ausgelegt sind, umzusetzen. Darauf aufbauend sind Web-APIs geplant, die Teile der Standard-Library umsetzen und eine http.client
ermöglichen.
Version 0.17 mit verbesserter Typübersetzung
Parallel zur Überführung des Projekts haben die Pyodide-Betreiber Version 0.17 angekündigt, die unter anderem einige Verbesserungen beim Übersetzen der Typen zwischen Python und JavaScript mitbringt. So sollen nun das Übertragen von Objekten entweder von JavaScript nach Python und wieder zurück nach JavaScript oder umgekehrt von Python nach JavaScript und zurück nach Python abgesehen von wenigen Ausnahmen jeweils das ursprüngliche Objekt ergeben.
Daneben hat das Team das Multitasking verbessert, sodass await
sowohl für JavaScript Promises in Python-Code als auch für Python Awaitables in JavaScript-Code funktioniert. Schließlich lassen sich nun Fehler beziehungsweise Exceptions sprachübergreifend abfangen und werfen.
Weitere Details zum Pyodide-Umzug von Mozilla zur eigenständigen Organisation und zum 0.17-Release finden sich auf Mozilla.hacks.
(rme)