PyPy

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 17.5.2022 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .
PyPy
Tyyppi Python- tulkki ja kääntäjä
Sisään kirjoitettu RPython
Käyttöjärjestelmä Poikkitaso
Ensimmäinen painos 2002
uusin versio 7.3.9 [1] ( 30. maaliskuuta 2022 )
Osavaltio Python 2.7.18, 3.6.12 ja 3.7.9 toteutus
Lisenssi MIT-lisenssit
Verkkosivusto pypy.org

PyPy  on Python - ohjelmointikielen tulkki . PyPy oli alkuaikoinaan Pythonilla kirjoitettu Python-tulkki. PyPyn nykyiset versiot käännetään RPythonista C :ksi ja. PyPyssä on sisäänrakennettu JIT -kääntäjä , joka voi muuttaa Python-koodin konekoodiksi ajon aikana.

Projektin tavoitteet

PyPy oli tarkoitus olla Pythonilla kirjoitettu Python-toteutus. Se, että PyPy on toteutettu korkean tason kielellä, tekee uusien ominaisuuksien kokeilemisesta joustavampaa ja helpompaa kuin CPythonissa , ja on helppo havaita alueita, joilla sitä voidaan parantaa.

PyPy pyrkii tarjoamaan yhden käännösmekanismin. Se tukee puitteita dynaamisten ohjelmointikielten toteuttamiseen ja varmistaa selkeän eron kielimäärittelyn ja toteutuksen välillä.

Sen tavoitteena on myös tarjota Python-ohjelmointikielen yhteensopivuus, joustavuus ja nopea käyttöönotto sekä mahdollistaa uusien ominaisuuksien toteuttamisen ilman matalan tason ohjelmointia [2] .

Lähetys

PyPy koostuu tavallisesta tulkista ja kääntäjästä.

Tulkki toteuttaa täysin Python-kielen. Itse tulkki on kirjoitettu rajoitetulla osajoukolla samaa kieltä nimeltä RPython (Restricted Python). Toisin kuin tavallinen Python, RPython kirjoitetaan staattisesti tehokkaamman kääntämisen vuoksi [3] .

Kääntäjä on joukko työkaluja, jotka jäsentävät RPython-koodin ja kääntävät sen alemman tason kielille, kuten C , Java-tavukoodi tai CIL . Se tukee myös kytkettäviä roskakeräilijöitä ja mahdollistaa Stacklessin oton valinnaisesti . Se sisältää myös JIT -kääntäjän koodin kääntämiseksi konekäskyiksi ohjelman suorittamisen aikana.

PyPy tulkkien toteuttamiskeinona

RPython-kielen kääntäjää voidaan käyttää myös muiden ohjelmointikielien tulkkien kirjoittamiseen. Lisäämällä sellaisen tulkin koodiin JitDriver- luokan tuonti ja luomalla siitä ilmentymä, ja sitten siirtämällä tähän luokkaan luettelot globaaleista muuttujista , jotka ovat muuttuvia ja muuttumattomia ohjelman suorituksen aikana, sekä tekemällä muutama selkeämpi ilmoitus , käännöksen jälkeen lipulla --opt=jit:saadaan toimiva JIT -kielinen kääntäjä [4] .

Projektihistoria

PyPy on jatkoa Psyco -projektille , joka on Armin Rigon kehittämä JIT-kääntäjä Pythonille. PyPyn tavoitteena on saada JIT-kääntäjä, jonka kattavuus ei ollut saatavilla Psycolle. PyPy aloitti tutkimusprojektina kehittäjille.

Kun projekti saavutti kypsän kehitysvaiheen ja virallisen 1.0-julkaisun vuoden 2007 puolivälissä, seuraava painopiste oli tuotantovalmis version julkaisemisessa, joka on paremmin yhteensopiva CPythonin kanssa.

Versio 1.1 julkaistiin 28. huhtikuuta 2009.

Maaliskuussa 2010 julkaistiin versio 1.2, jossa nopeuteen kiinnitettiin erityistä huomiota. Tämä versio sisältää JIT-kääntäjän, joka toimii, mutta jota ei suositella tuotantokäyttöön.

26. marraskuuta 2010 julkaistiin versio 1.4. Tämä versio ensimmäistä kertaa JIT-kääntäjätilassa ylittää CPythonin [5] nopeudella . Kehittäjät uskovat myös, että tämä versio on valmis käytettäväksi tuotannossa [6] .

PyPyssä kehitetään pypy-stm-tulkin erikoisversiota, joka toteuttaa ohjelmistotapahtumamuistin [7] [8] . Transaktiomuistin käyttäminen poistaa GIL :n ja helpottaa Python-sovellusten rinnakkaistamista moniytimisissä järjestelmissä.

9. toukokuuta 2013 julkaistiin PyPy:n toinen versio, jonka innovaatioihin kuuluu pinottava tila ja uusi käyttöliittymä ulkoisten toimintojen kanssa työskentelyyn C-kielellä  - cffi [9] .

10. maaliskuuta 2016 julkaistiin PyPyn viides versio suorituskykyparannuksilla, ja CPython API sai monia parannuksia [10] .

PyPy sai 9. elokuuta 2016 200 000 dollarin rahoituksen Mozillalta Python 3.5:n tukemiseen [11] .

12.11.2016 julkaistiin PyPy2 v5.6, tärkein muutos on Python 2.7.12 -standardikirjasto

Tuetut taustaohjelmat

Vuodesta 2017 lähtien PyPy on poistanut JVM :n , CIL :n ja JavaScriptin [12] taustaohjelmina.

Yhteensopivuus CPythonin kanssa

Versio 5.6.0 on yhteensopiva Python 2.7.12:n kanssa ja sitä voidaan käyttää 32- ja 64-bittisissä alustoissa (paitsi Windows, jossa vain 32-bittistä tukea tuetaan [13] ). PyPy tukee täysin puhtaalla Pythonilla kirjoitettuja moduuleja. PyPyllä on hyvä tuki CPython API :lle erillisen cpyext-moduulin muodossa binäärilaajennusten (.so ja .pyd) käyttöä varten . Nämä laajennukset vaativat uudelleenkäännöksen toimiakseen oikein [14] .

PyPy3-versio 5.5 on yhteensopiva CPython 3.3.5:n kanssa [15] .

Aktiivisesti kehitetään myös PyPy3.5:tä, joka toteuttaa Python 3.5:n.

Seuraavien kirjastojen ja kehysten tiedetään toimivan PyPyssä [14] :

Katso myös

Muistiinpanot

  1. PyPy v7.3.9 -tietoturvajulkaisu .
  2. Samuel Pedroni. PyPy - Tavoitteiden ja arkkitehtuurin yleiskatsaus (linkki ei saatavilla) (maaliskuu 2007). Arkistoitu alkuperäisestä 30. kesäkuuta 2012. 
  3. "Se on Pythonin oikea osajoukko, joka on rajoitettu tavalla, joka mahdollistaa helpon analyysin ja tehokkaan koodin luomisen", Ancona et al., 2007.
  4. Andrew Brown, Opetusohjelma: Tulkin kirjoittaminen PyPyllä, osa 1 Arkistoitu 3. maaliskuuta 2012 Wayback Machinessa , Osa 2: JIT:n lisääminen arkistoitu 3. maaliskuuta 2012 Wayback Machinessa , opetusohjelma : JIT-
    tulkin kirjoittaminen PyPyllä (käännös) 20. elokuuta 2016 Wayback Machinessa , Repository ref. Koodi arkistoitu 26. tammikuuta 2012 Wayback Machinessa Artikkeli kuvaa Brainfuckin käyttöönottoa RPythonissa

  5. PyPy Speed ​​​​Center: Vertailu . Haettu 28. marraskuuta 2010. Arkistoitu alkuperäisestä 2. huhtikuuta 2012.
  6. PyPy Status Blog: PyPy 1.4: Ouroboros käytännössä . Haettu 28. marraskuuta 2010. Arkistoitu alkuperäisestä 9. maaliskuuta 2012.
  7. PyPy-tilablogi "Global Interpreter Lock, or how to kill it" . Käyttöpäivä: 19. toukokuuta 2012. Arkistoitu alkuperäisestä 22. toukokuuta 2012.
  8. pypy-stm otettu käyttöön . Haettu 19. toukokuuta 2012. Arkistoitu alkuperäisestä 13. toukokuuta 2012.
  9. Julkaistiin PyPy 2.0, Python-toteutus, joka on kirjoitettu Python-kielellä (downlink) . opennet.ru (10. toukokuuta 2013). Haettu 21. toukokuuta 2013. Arkistoitu alkuperäisestä 7. kesäkuuta 2013. 
  10. PyPy-tilablogi: PyPy 5.0 julkaistu . morepypy.blogspot.ru. Haettu 18. elokuuta 2016. Arkistoitu alkuperäisestä 13. maaliskuuta 2016.
  11. PyPy-tilablogi: PyPy saa rahoitusta Mozillalta Python 3.5 -tukeen . morepypy.blogspot.ru. Haettu 18. elokuuta 2016. Arkistoitu alkuperäisestä 18. maaliskuuta 2017.
  12. [https://web.archive.org/web/20121009143354/http://www.mail-archive.com/pypy-dev@codespeak.net/msg03946.html Arkistoitu 9. lokakuuta 2012 Wayback Machinessa Re: [pypy-dev] pypy näyttää poistaneen kokonaan kaikki maininnat javascriptistä]
  13. Kääntäminen Windows-PyPy-dokumentaatiossa . doc.pypy.org. Haettu 12. marraskuuta 2016. Arkistoitu alkuperäisestä 13. marraskuuta 2016.
  14. 1 2 PyPy :: Python-yhteensopivuus . Haettu 30. marraskuuta 2010. Arkistoitu alkuperäisestä 7. kesäkuuta 2021.
  15. PyPy3 v5.5 julkaistu . doc.pypy.org. Haettu 25. elokuuta 2016. Arkistoitu alkuperäisestä 18. lokakuuta 2016.
  16. NumPyPy-tila . buildbot.pypy.org. Haettu 25. elokuuta 2016. Arkistoitu alkuperäisestä 16. lokakuuta 2013.

Kirjallisuus

Linkit