www.wikidata.de-de.nina.az
PyPy ist ein Just in time Compiler fur 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 konnen macht PyPy es einfacher Bereiche zu finden in denen die Python Implementierung verbessert werden kann Daruber hinaus erlaubt PyPy den Entwicklern durch seine Flexibilitat 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 Marz 2008 erstmals gelang 4 Mittlerweile ist PyPy in einer uberwiegenden Zahl von Benchmarks schneller als CPython 5 und in Sonderfallen sogar schneller als C 6 PyPyBasisdatenEntwickler Armin Rigo Samuele Pedroni Christian Tismer Holger Krekel u a Erscheinungsjahr 2007Aktuelle Version 7 3 11 1 29 Dezember 2022 Betriebssystem Windows macOS Linux FreeBSD 2 u v m Programmiersprache Python 3 RPythonKategorie Just in time CompilerLizenz MIT Lizenzpypy orgStreng genommen akzeptiert PyPy keine Programme in Python sondern eine reduzierte Sprache namens RPython Wahrend alle RPython Programme ohne Umwandlungen als Python Programme lauffahig sind ist dies umgekehrt nicht immer der Fall Die Reduktion auf RPython wurde notwendig damit PyPy eine statische Typisierung von Python Objekten durchfuhren kann PyPy ist von Vorteil wenn die Laufzeit von Python Programmen reduziert werden soll Nachteilig ist dass nicht alle fur Python entwickelten Programmbibliotheken unterstutzt werden So gibt es etwa von NumPy eine RPython Variante die etwa 80 der Geschwindigkeit des in C implementierten Originals erreicht aber nicht voll kompatibel ist und die Alternative das Original uber eine Zwischenschicht zu nutzen was aber sehr langsam ist 7 Inhaltsverzeichnis 1 Komponenten 1 1 RPython 2 Entwicklungsgeschichte 3 Siehe auch 4 Weblinks 5 EinzelnachweiseKomponenten BearbeitenPyPy besteht aus zwei Hauptkomponenten dem Standard Interpreter einer Implementierung eines Python Interpreters in einer beschrankten Untermenge von Python einer RPython Toolchain die in der Lage ist die oben erwahnte Untermenge von Python in Assembler Code zu ubersetzen Dieser Code wird dann direkt auf dem Prozessor ausgefuhrt anstelle in einer Software RPython Bearbeiten Der PyPy Interpreter selbst ist in einer eingeschrankten Teilmenge von Python namens RPython Restricted Python geschrieben RPython erlegt der Python Sprache einige Einschrankungen auf sodass der Typ einer Variablen zur Kompilierzeit abgeleitet werden kann 8 Das PyPy Projekt hat eine Toolchain entwickelt die RPython Code analysiert und in eine Form von Byte Code ubersetzt der in C abgesenkt werden kann Fruher gab es neben C noch andere Backends Java CSharp und JavaScript aber diese litten unter bit rot und wurden entfernt Somit ist das rekursive Logo von PyPy eine Schlange die sich selbst verschluckt da das RPython von einem Python Interpreter ubersetzt wird Der Code kann zu Test und Analysezwecken auch unubersetzt ausgefuhrt werden was eine gute Testumgebung fur die Erforschung dynamischer Sprachen bietet 9 Entwicklungsgeschichte BearbeitenVon Version 1 2 an gibt es einen JIT Compiler der hauptsachlich aus Integerarithmetik bestehenden Code teilweise deutlich schneller ausfuhrt als Psyco 10 PyPy wurde von der Europaischen Union in einem Forschungsrahmenprogramm gefordert 11 Die Forderung lief im ersten Quartal 2007 nach 28 Monaten aus Wahrend Version 1 0 hauptsachlich die Ergebnisse des EU Forschungsprojektes bundelte konzentriert sich Version 1 1 auf Kompatibilitat mit CPython 2 5 sowie Stabilitat und Fehlerfreiheit 12 Version 1 5 wiederum ist kompatibel zu Python 2 7 13 Version 1 5 soll um 25 schneller als die Vorgangerversion sein 14 Von der Version 2 1 an lasst sich die Software auf der ARM Architektur ausfuhren 15 Ab Version 2 3 unterstutzt PyPy das Betriebssystem OpenBSD 16 ab Version 2 3 1 unterstutzt PyPy auch Python 3 17 und ab Version 2 4 wird Python 2 7 8 als Standardbibliothek unterstutzt 18 19 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 Unterstutzung fur SIMD mit sich 20 Version 6 0 lieferte 2018 zwei Versionen die kompatibel sind mit CPython 2 7 bzw 3 5 und ermoglichte es Entwicklern mithilfe von Hooks einen Einblick in die Rechenleistung der automatischen Speicherbereinigung zu bekommen 21 22 Versionen 7 0 0 7 3 2 7 3 6 und 7 3 8 2022 brachten Kompatibilitat mit CPython 3 6 3 7 3 8 bzw 3 9 und ab 7 3 4 wurde Windows 64 unterstutzt 23 Siehe auch BearbeitenJython IronPython Stackless Python nuitka kompiliert Python Programme nach C Numba Softwarepaket welches einzelne Python Funktionen zu Maschinencode kompiliertWeblinks BearbeitenOffizielle Website Interview mit Entwickler Holger Krekel uber Python und PyPy in CRE Podcast PyPy the new Python implementation on the block Aufzeichnung eines Vortrags uber PyPy vom Chaos Communication Congress PyPy BlogEinzelnachweise Bearbeiten www pypy org FreshPorts lang pypy In FreshPorts Abgerufen am 8 Marz 2017 The pypy Open Source Project on Open Hub Languages Page In Open Hub abgerufen am 26 September 2018 Maciej Fijalkowski As fast as CPython for carefully taken benchmarks Marz 2008 abgerufen am 26 Februar 2017 englisch How fast is PyPy Abgerufen am 26 Februar 2017 englisch Z B wenn PyPy Funktionen aus externen Dateien ladt 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 FAQ What about numpy numpypy micronumpy Abgerufen am 27 September 2022 It is a proper subset of Python restricted in a way that enables easy analysis and efficient code generation Ancona et al 2007 Zed Shaw Learn Python the hard way Addison Wesley 2017 ISBN 978 0 13 469288 3 Speed Center PyPy EU project page Abgerufen am 17 Oktober 2013 PyPy 1 1 Compatibility amp Consolidation Abgerufen am 26 Februar 2017 englisch PyPy 1 5 Released Catching Up Abgerufen am 26 Februar 2017 englisch PyPy 1 5 schliesst zu CPython 2 7 1 auf Abgerufen am 10 Mai 2011 PyPy 2 1 Considered ARMful 1 August 2013 abgerufen am 15 August 2018 englisch PyPy 2 3 Abgerufen am 15 August 2018 englisch PyPy kann nach Update auch Python 3 Abgerufen am 15 August 2018 PyPy 2 4 23 Juni 2014 abgerufen am 15 August 2018 englisch Strukturelle Anderungen beschleunigen PyPy 2 4 24 September 2014 abgerufen am 15 August 2018 CPython Altenative PyPy 4 0 0 kann SIMD Vektorisierung 30 Oktober 2015 abgerufen am 15 August 2018 PyPy 6 0 setzt auf Performance und Kompatibilitat 27 April 2018 abgerufen am 15 August 2018 PyPy2 7 and PyPy3 5 v6 0 dual release Abgerufen am 15 August 2018 englisch PyPy Releases Abgerufen am 27 September 2022 Abgerufen von https de wikipedia org w index php title PyPy amp oldid 226555025