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.

Das Entwicklungsteam von Instagram, das zu Facebook gehört, hat Cinder als Open Source veröffentlicht. 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) 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, in denen Cinder fast immer besser abschneidet als CPython.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Python ist langsam genug, dass man noch viel an der Single-Thread-Performance optimieren...
Ich hab mal kurz in die Benchmarks reingeschaut. Na ja, sieht jetzt nicht wirklich toll...