PyPy ist keine Abzweigung von CPython, daher kann es niemals direkt in CPython zusammengeführt werden.
Theoretisch könnte die Python-Community PyPy universell übernehmen, PyPy könnte als Referenzimplementierung verwendet werden und CPython könnte eingestellt werden. PyPy hat jedoch seine eigenen Schwächen:
- CPython lässt sich leicht in Python-Module integrieren, die in C geschrieben sind. Dies ist traditionell die Art und Weise, wie Python-Anwendungen CPU-intensive Aufgaben erledigt haben (siehe zum Beispiel das SciPy-Projekt).
- Der PyPy JIT-Kompilierungsschritt selbst kostet CPU-Zeit - nur durch wiederholtes Ausführen von kompiliertem Code wird er insgesamt schneller. Dies bedeutet, dass die Startzeiten höher sein können und PyPy daher nicht unbedingt so effizient für die Ausführung von Klebercode oder einfachen Skripten ist.
- Das Verhalten von PyPy und CPython ist nicht in jeder Hinsicht identisch, insbesondere wenn es um "Implementierungsdetails" geht (Verhalten, das nicht von der Sprache angegeben wird, aber auf praktischer Ebene immer noch wichtig ist).
- CPython läuft auf mehr Architekturen als PyPy und wurde erfolgreich angepasst, um in eingebetteten Architekturen auf eine Weise ausgeführt zu werden, die für PyPy möglicherweise unpraktisch ist.
- Das Referenzzählschema von CPython für die Speicherverwaltung hat wahrscheinlich vorhersehbarere Auswirkungen auf die Leistung als die verschiedenen GC-Systeme von PyPy, obwohl dies nicht unbedingt für alle "reinen GC" -Strategien gilt.
- PyPy unterstützt Python 3.x noch nicht vollständig, obwohl dies ein aktives Arbeitselement ist.
PyPy ist ein großartiges Projekt, aber die Laufzeitgeschwindigkeit bei CPU-intensiven Aufgaben ist nicht alles und in vielen Anwendungen das geringste Problem. Zum Beispiel kann Django auf PyPy ausgeführt werden, was das Templating beschleunigt, aber die Datenbanktreiber von CPython sind schneller als die von PyPy. Welche Implementierung effizienter ist, hängt letztendlich davon ab, wo sich der Engpass in einer bestimmten Anwendung befindet.
Ein weiteres Beispiel: Sie würden denken, PyPy wäre großartig für Spiele, aber die meisten GC-Strategien, wie sie in PyPy verwendet werden, verursachen spürbaren Jitter. Für CPython wird der größte Teil des CPU-intensiven Spiels in die PyGame-Bibliothek verlagert, die PyPy nicht nutzen kann, da PyGame hauptsächlich als C-Erweiterung implementiert ist (siehe jedoch: pygame-cffi). Ich denke immer noch, dass PyPy eine großartige Plattform für Spiele sein kann, aber ich habe noch nie gesehen, dass es tatsächlich verwendet wird.
PyPy und CPython haben radikal unterschiedliche Ansätze für grundlegende Designfragen und machen unterschiedliche Kompromisse, sodass keiner in jedem Fall "besser" ist als der andere.