PyPy

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. május 17-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .
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.

Projekt céljai

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] .

Adás

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.

PyPy mint a tolmácsok megvalósításának eszköze

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] .

Projekttörténet

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

Támogatott háttérprogramok

2017-től a PyPy elvetette a JVM -et , a CIL - t és a JavaScriptet [12] háttérként.

Kompatibilitás a CPython-nal

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] :

Lásd még

Jegyzetek

  1. PyPy v7.3.9 biztonsági kiadás .
  2. Samuel Pedroni. PyPy – Célok és architektúra áttekintése (hivatkozás nem érhető el) (2007. március). Az eredetiből archiválva : 2012. június 30. 
  3. "A Python megfelelő részhalmaza, oly módon korlátozva, hogy lehetővé tegye az egyszerű elemzést és a hatékony kódgenerálást", Ancona et al., 2007.
  4. Andrew Brown, Oktatóanyag: Tolmács írása PyPy segítségével, 1. rész Archiválva : 2012. március 3. a Wayback Machine -nél , 2. rész: JIT hozzáadása archiválva 2012. március 3-án a Wayback Machine -nél , Oktatóanyag: JIT
    tolmács írása PyPy segítségével (fordítás) 2016. augusztus 20. a Wayback Machine -nál , Repository ref. A kód archiválva : 2012. január 26. a Wayback Machine -en A cikk a Brainfuck RPython - on való megvalósítását írja le

  5. PyPy Speed ​​​​Center: Összehasonlítás . Letöltve: 2010. november 28. Az eredetiből archiválva : 2012. április 2.
  6. PyPy állapotblog: PyPy 1.4: Ouroboros a gyakorlatban . Letöltve: 2010. november 28. Az eredetiből archiválva : 2012. március 9..
  7. PyPy állapotblog "Global Interpreter Lock, avagy hogyan lehet megölni" . Hozzáférés dátuma: 2012. május 19. Az eredetiből archiválva : 2012. május 22.
  8. pypy-stm bevezetve . Letöltve: 2012. május 19. Az eredetiből archiválva : 2012. május 13.
  9. A PyPy 2.0 kiadása, a Python nyelven írt Python-megvalósítás (lefelé irányuló kapcsolat) . opennet.ru (2013. május 10.). Letöltve: 2013. május 21. Az eredetiből archiválva : 2013. június 7.. 
  10. PyPy állapotblog: Megjelent a PyPy 5.0 . morepypy.blogspot.ru. Letöltve: 2016. augusztus 18. Az eredetiből archiválva : 2016. március 13.
  11. PyPy állapotblog: A PyPy támogatást kap a Mozillától a Python 3.5 támogatására . morepypy.blogspot.ru. Letöltve: 2016. augusztus 18. Az eredetiből archiválva : 2017. március 18..
  12. [https://web.archive.org/web/20121009143354/http://www.mail-archive.com/pypy-dev@codespeak.net/msg03946.html Archiválva : 2012. október 9., a Wayback Machine Re: [pypy-dev] Úgy tűnik, a pypy teljesen eltávolította a javascript minden említését]
  13. Fordítás Windows rendszeren - PyPy dokumentáció . doc.pypy.org. Letöltve: 2016. november 12. Az eredetiből archiválva : 2016. november 13..
  14. 1 2 PyPy :: Python kompatibilitás . Letöltve: 2010. november 30. Az eredetiből archiválva : 2021. június 7..
  15. Megjelent a PyPy3 v5.5 . doc.pypy.org. Letöltve: 2016. augusztus 25. Az eredetiből archiválva : 2016. október 18..
  16. NumPyPy állapot . buildbot.pypy.org. Letöltve: 2016. augusztus 25. Az eredetiből archiválva : 2013. október 16..

Irodalom

Linkek