PyPy | |
---|---|
Típusú | Python értelmező és fordító |
Beírva | RPython |
Operációs rendszer | Cross platform |
Első kiadás | 2002 |
legújabb verzió | 7.3.9 [1] ( 2022. március 30. ) |
Állapot | A Python 2.7.18, 3.6.12 és 3.7.9 megvalósítása |
Engedély | MIT licencek |
Weboldal | pypy.org |
A PyPy a Python programozási nyelv értelmezője . A PyPy a kezdeti időkben Python nyelven írt Python-tolmács volt. A PyPy jelenlegi verzióit RPythonról C-re fordítják és lefordítják. A PyPy rendelkezik egy beépített JIT fordítóval , amely futás közben képes a Python kódot gépi kóddá alakítani.
A PyPy-t Python nyelven írt Python-megvalósításnak szánták. Az a tény, hogy a PyPy magas szintű nyelven van implementálva, rugalmasabbá és egyszerűbbé teszi az új funkciókkal való kísérletezést, mint a CPython , valamint könnyű felismerni azokat a területeket, ahol fejleszthető.
A PyPy célja egyetlen fordítási mechanizmus biztosítása. Támogatja a dinamikus programozási nyelvek megvalósításának keretrendszerét , és világosan elválasztja a nyelvi specifikációt és a megvalósítást.
Célja továbbá a Python programozási nyelv kompatibilitása, rugalmassága és gyors implementációja, valamint lehetővé teszi új funkciók megvalósítását alacsony szintű nyelvi programozás szükségessége nélkül [2] .
A PyPy szabványos tolmácsból és fordítóból áll.
Az értelmező teljes mértékben megvalósítja a Python nyelvet. Maga a tolmács ugyanannak a nyelvnek az RPython (Restricted Python) nevű korlátozott részhalmazában van megírva. A szabványos Pythontól eltérően az RPython statikusan van beírva a hatékonyabb fordítás érdekében [3] .
A fordító egy olyan eszközkészlet, amely elemzi az RPython kódot, és lefordítja azt alacsonyabb szintű nyelvekre, például C , Java bájtkód vagy CIL . Támogatja a csatlakoztatható szemétgyűjtőket is, és opcionálisan lehetővé teszi a Stackless engedélyezését . Tartalmaz egy JIT fordítót is a kód gépi utasításokká fordításához a program végrehajtása során.
Az RPython nyelv fordítója más programozási nyelvekhez is használható tolmácsok írására. Egy ilyen értelmező kódjához hozzáadva a JitDriver osztály importját, és létrehozva belőle egy példányt, majd átadva ennek az osztálynak a globális változók listáját, amelyek a program végrehajtása során változtathatók és változatlanok, valamint néhány nyilvánvalóbb deklaráció. , a zászlóval történő fordítás után --opt=jit:egy működő JIT nyelvű fordítót kapunk [4] .
A PyPy a Psyco projekt folytatása , egy JIT fordító Pythonhoz, amelyet Armin Rigo fejlesztett ki. A PyPy célja egy olyan JIT fordító létrehozása, amely a Psyco számára nem volt elérhető. A PyPy kutatási projektként indult fejlesztők számára.
Amikor a projekt 2007 közepén elérte a fejlesztés érett szakaszát és a hivatalos 1.0-s kiadást, a következő hangsúly a CPythonnal jobban kompatibilis, gyártásra kész verzió kiadásán volt.
Az 1.1-es verzió 2009. április 28-án jelent meg.
2010 márciusában megjelent az 1.2-es verzió, amelyben kiemelt figyelmet fordítottak a sebességre. Ez a verzió tartalmaz egy JIT fordítót, amely működik, de éles használatra nem ajánlott.
2010. november 26-án megjelent az 1.4-es verzió. Ez a verzió először JIT fordító módban meghaladja a CPython [5] sebességét . A fejlesztők úgy vélik, hogy ez a verzió készen áll a termelési használatra [6] .
A PyPy-n belül a pypy-stm interpreter speciális verziója fejlesztés alatt áll, amely szoftveres tranzakciós memóriát valósít meg [7] [8] . A tranzakciós memória használata megszabadul a GIL -től, és megkönnyíti a Python-alkalmazások párhuzamosítását a többmagos rendszereken.
2013. május 9-én jelent meg a PyPy második verziója, melynek újításai közé tartozik a stackless mód és egy új felület a külső függvényekkel való munkavégzéshez a C nyelvben - cffi [9] .
2016. március 10-én megjelent a PyPy ötödik verziója teljesítményjavításokkal, a CPython API pedig számos fejlesztést kapott [10] .
2016. augusztus 9-én a PyPy 200 000 dolláros támogatást kapott a Mozillától a Python 3.5 támogatására [11] .
2016. november 12-én jelent meg a PyPy2 v5.6, a legfontosabb változás a Python 2.7.12 szabványkönyvtár
2017-től a PyPy elvetette a JVM -et , a CIL - t és a JavaScriptet [12] háttérként.
Az 5.6.0-s verzió kompatibilis a Python 2.7.12-vel, és 32 bites és 64 bites platformokon is futhat (kivéve a Windowst, ahol csak a 32 bit támogatott [13] ). A PyPy teljes mértékben támogatja a tiszta Pythonban írt modulokat. A bináris kiterjesztések (.so és .pyd) használatához a PyPy jól támogatja a CPython API -t egy különálló cpyext modul formájában. Ezek a kiterjesztések újrafordítást igényelnek a megfelelő működéshez [14] .
A PyPy3 5.5-ös verziója kompatibilis a CPython 3.3.5-tel [15] .
A PyPy3.5 aktív fejlesztése is folyik, amely a Python 3.5-öt valósítja meg.
A következő könyvtárak és keretrendszerek ismertek a PyPy-ben [14] :
Piton | |
---|---|
Közösség | |
Megvalósítások | |
Egyéb |
|