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.
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] .
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.
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] .
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
Vuodesta 2017 lähtien PyPy on poistanut JVM :n , CIL :n ja JavaScriptin [12] taustaohjelmina.
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] :
Python | |
---|---|
Yhteisö | |
Toteutukset | |
Muut |
|