/ OSS / Grumpy: Google erstellt Python-Runtime in Go

Grumpy: Google erstellt Python-Runtime in Go

125414-132913-i_rc.jpg
Gerfried Steube an Januar 6, 2017 - 8:50 am in OSS

Eigenen Angabe zufolge nutzt Google „Millionen Zeilen Python-Code“. Das umfasse vor allem die Frontend-Server von Youtube sowie die APIs für den Videostreamingdienst. Insbesondere mit der Standardimplementierung CPython sei es für das Team allerdings sehr schwierig, nebenläufige Programme zu verfassen, die sehr leistungsfähig arbeiten. In Anbetracht mangelnder Alternativen hat das Team deshalb eine eigene Laufzeitumgebung für Python 2.7 in Go erstellt.

Das entstandene Projekt heißt Grumpy und steht unter der Apache-Lizenz als Open Source auf Github zur Verfügung. Die Entscheidung für die Sprache Go zur Umsetzung einer eigenen Python-Laufzeitumgebung sei für die Beteiligten eine „offensichtliche“ Wahl gewesen. Immerhin passten die typischen Merkmale von Go gut zu dem Anwendungsfall von Youtube und die Type-Reflection der Go-Laufzeitumgebung ermögliche eine erstklassige Sprachinteroperabilität.

Keine C-Module, dafür einfache Go-Integration

Ziel von Grumpy sei es, einen vollständigen Ersatz der Laufzeitumgebung für reine Python-Projekte bereitstellen zu können. Die dabei wohl größte Einschränkung im Vergleich zu CPython ist allerdings, dass Grumpy auf die Unterstützung für C-Erweiterungen verzichtet. Existierende C-Module für Python können mit Grumpy also nicht genutzt werden, dem Team habe das aber eine große Flexibilität beim Design der Software gegeben.

So könne Grumpy auf einen Global Interpreter Lock verzichten und das System verwende den Garbage Collector von Go für die Verwaltung der Objektlebensdauer statt einer Referenzzählung. Darüber hinaus ist Grumpy explizit kein Python-Interpreter. Stattdessen wird der Python-Code mit Hilfe eines Transpilers in Go übersetzt. Dazu heißt es: „Grumpy-Programme werden kompiliert und verlinkt wie jedes andere Go-Programm“. Python-Code, der für die Verwendung mit Grumpy vorgesehen sei, könne damit sämtliche verfügbaren Go-Pakete importieren und diese weiterverwenden.

Noch wird das Projekt als Alpha-Software beschrieben, so dass bei einem Einsatz noch mit vielen Problemen zu rechnen ist. Das Team fordert Interessierte aber dazu auf, sich an der Entwicklung zu beteiligen. So könne das Team die noch ausstehenden Arbeiten besser priorisieren.

Read more on: Source

Kommentare sind deaktiviert