PyPy

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
PyPy

Pypy logo.png
Basisdaten

Entwickler Armin Rigo, Samuele Pedroni, Christian Tismer, Holger Krekel u. a.
Erscheinungsjahr 2002
Aktuelle Version 7.2.0[1]
(14. Oktober 2019)
Betriebssystem Windows, macOS, Linux, FreeBSD[2], u. v. m.
Programmiersprache Python[3], RPython
Kategorie Just-in-Time-Compiler
Lizenz MIT-Lizenz
pypy.org

PyPy ist ein Just-in-Time-Compiler für die Programmiersprache Python, der selbst in Python geschrieben ist. Da die Programmierer mit einer Python-Implementierung in Python selbst (und nicht in C, wie dies bei der Referenzimplementierung CPython der Fall ist) experimentieren können, macht PyPy es einfacher, Bereiche zu finden, in denen die Python-Implementierung verbessert werden kann. Darüber hinaus erlaubt PyPy den Entwicklern durch seine Flexibilität, mit mehreren Implementierungen eines speziellen Features zu experimentieren. Eines der Ziele des Projektes war es, einen Python-Interpreter zu entwickeln, der schneller als CPython ist, was im März 2008 erstmals gelang.[4] Mittlerweile ist PyPy in einer überwiegenden Zahl von Benchmarks schneller als CPython,[5] – und in Sonderfällen sogar schneller als C.[6]

Streng genommen akzeptiert PyPy keine Programme in Python, sondern eine reduzierte Sprache namens RPython. Während alle RPython-Programme ohne Umwandlungen als Python-Programme lauffähig sind, ist dies umgekehrt nicht immer der Fall. Die Reduktion auf RPython wurde notwendig, damit PyPy eine statische Typisierung von Python-Objekten durchführen kann. PyPy ist von Vorteil, wenn die Laufzeit von Python-Programmen reduziert werden soll. Nachteilig ist, dass nicht alle für Python entwickelte Programmbibliotheken unterstützt werden.

Komponenten[Bearbeiten | Quelltext bearbeiten]

PyPy besteht aus zwei Hauptkomponenten:

  1. dem Standard Interpreter, einer Implementierung eines Python-Interpreters in einer beschränkten Untermenge von Python.
  2. einer RPython-Toolchain, die in der Lage ist, die oben erwähnte Untermenge von Python in Assembler-Code zu übersetzen. Dieser Code wird dann direkt auf dem Prozessor ausgeführt, anstelle in einer Software.

Entwicklungsgeschichte[Bearbeiten | Quelltext bearbeiten]

Von Version 1.2 an gibt es einen JIT-Compiler, der hauptsächlich aus Integerarithmetik bestehenden Code teilweise deutlich schneller ausführt als Psyco.[7]

PyPy wurde von der Europäischen Union in einem Forschungsrahmenprogramm gefördert.[8] Die Förderung lief im ersten Quartal 2007 nach 28 Monaten aus.

Während Version 1.0 hauptsächlich die Ergebnisse des EU-Forschungsprojektes bündelte, konzentriert sich Version 1.1 auf Kompatibilität mit CPython 2.5 sowie Stabilität und Fehlerfreiheit.[9] Version 1.5 wiederum ist kompatibel zu Python 2.7.[10] Version 1.5 soll um 25 % schneller als die Vorgängerversion sein.[11]

Von der Version 2.1 an lässt sich die Software auf der ARM-Architektur ausführen.[12]

Ab Version 2.3 unterstützt PyPy das Betriebssystem OpenBSD[13], ab Version 2.3.1 unterstützt PyPy auch Python 3[14] und ab Version 2.4 wird Python 2.7.8 als Standardbibliothek unterstützt.[15][16]

Um sich von den aktuellen Versionen des Python-Interpreters CPython besser zu unterscheiden, sprang PyPy nach dem Release der Version 2.4 auf die Version 4.0. Diese Version brachte als wichtigste Neuerung Unterstützung für SIMD mit sich.[17]

Die aktuelle Version 6.0 ermöglicht es Entwicklern mithilfe von Hooks einen Einblick in die Rechenleistung der automatischen Speicherbereinigung zu bekommen.[18][19]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. morepypy.blogspot.com. (abgerufen am 24. Oktober 2019).
  2. FreshPorts -- lang/pypy.
  3. The pypy Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 26. September 2018).
  4. Maciej Fijalkowski: As fast as CPython (for carefully taken benchmarks). März 2008, abgerufen am 26. Februar 2017 (englisch).
  5. How fast is PyPy? Abgerufen am 26. Februar 2017 (englisch).
  6. Z. B., wenn PyPy Funktionen aus externen Dateien lädt; diese werden dann ins Hauptprogramm aufgenommen. Ein statischer Compiler wie C integriert jedoch in der Regel keine Funktionen aus externen Dateien. PyPy faster than C on a carefully crafted example. In: morepypy-Blog. 4. Februar 2011, abgerufen am 27. August 2018.
  7. Speed Center
  8. PyPy EU project page. Abgerufen am 17. Oktober 2013.
  9. PyPy 1.1: Compatibility & Consolidation. Abgerufen am 26. Februar 2017 (englisch).
  10. PyPy 1.5 Released: Catching Up. Abgerufen am 26. Februar 2017 (englisch).
  11. PyPy 1.5 schließt zu CPython 2.7.1 auf. Abgerufen am 10. Mai 2011.
  12. PyPy 2.1 - Considered ARMful. 1. August 2013, abgerufen am 15. August 2018 (englisch).
  13. PyPy 2.3. Abgerufen am 15. August 2018 (englisch).
  14. PyPy kann nach Update auch Python 3. Abgerufen am 15. August 2018.
  15. PyPy 2.4. 23. Juni 2014, abgerufen am 15. August 2018 (englisch).
  16. Strukturelle Änderungen beschleunigen PyPy 2.4. 24. September 2014, abgerufen am 15. August 2018.
  17. CPython-Altenative PyPy 4.0.0 kann SIMD-Vektorisierung. 30. Oktober 2015, abgerufen am 15. August 2018.
  18. PyPy 6.0 setzt auf Performance und Kompatibilität. 27. April 2018, abgerufen am 15. August 2018.
  19. PyPy2.7 and PyPy3.5 v6.0 dual release. Abgerufen am 15. August 2018 (englisch).