Zum Hauptinhalt Zur Navigation

Cinder: Facebook legt Instagrams internen Python-Fork offen

Wie schon bei PHP setzt das Entwicklungsteam von Facebook auch bei Python auf interne Optimierung. Der Code von Instagram steht nun bereit.
/ Sebastian Grüner
6 Kommentare News folgen (öffnet im neuen Fenster)
Instagram hat seinen internen Python-Fork Cinder offengelegt. (Bild: Pixabay)
Instagram hat seinen internen Python-Fork Cinder offengelegt. Bild: Pixabay

Das Entwicklungsteam von Instagram, das zu Facebook gehört, hat Cinder als Open Source veröffentlicht(öffnet im neuen Fenster) . Dabei handelt es sich laut der Selbstbeschreibung um "Instagrams interne leistungsorientierte Produktivversion von CPython 3.8" . Cinder ist demnach ein interner Fork der Standardimplementierung der Programmiersprache Python.

Zu den im Vergleich zum Standard-Python umgesetzten Leistungsverbesserungen gehören das Inline-Caching von Bytecode, eine strikte Auswertung ( Eager Evaluation(öffnet im neuen Fenster) ) von Koroutinen, ein Method-at-a-Time JIT-Compiler sowie "ein experimenteller Bytecode-Compiler, der Typ-Annotationen verwendet, um typspezialisierten Bytecode auszugeben, der im JIT besser funktioniert" .

Der nun vorgestellte Code mit den Optimierungen für Python sei explizit kein klassisches Open-Source-Projekt und werde von dem Entwicklungsteam auch explizit nicht für andere unterstützt. Mit der Offenlegung der Verbesserungen zielten die Beteiligten jedoch darauf ab, "Gespräche über ein mögliches Upstreaming einiger dieser Arbeiten in CPython zu erleichtern und um doppelte Arbeit unter den Leuten zu reduzieren, die an der CPython-Performance arbeiten."

Keine Alternative zu CPython geplant

Ein ähnliches Vorgehen hatte das Team von Facebook vor einigen Jahren bereits mit der Sprache Hack, der HHVM sowie seinen Optimierungen für die Sprache PHP umgesetzt, die PHP letztlich massiv beschleunigt haben. HHVM und Hack haben sich aber von PHP weg entwickelt und PHP wird dort nicht mehr unterstützt . Mit Cinder solle Ähnliches wohl vermieden werden, immerhin verspricht das Team noch, dass das Projekt keine Alternative zu CPython werden soll.

Weitere Details zu den einzelnen Verbesserungen in Cinder finden sich in der Projektbeschreibung auf Github. Um den Code selbst zu testen, empfiehlt das Team Fedora 32, da dies auch intern selbst verwendet wird. Die Beteiligten stellen ebenso einige Benchmarks bereit(öffnet im neuen Fenster) , in denen Cinder fast immer besser abschneidet als CPython.


Relevante Themen