PyPy - PyPy

PyPy
Pypy logo.png
Ensimmäinen julkaisu vuoden 2007 puoliväli ; 14 vuotta sitten ( 2007 )
Vakaa julkaisu
7.3.5 / 23. toukokuuta 2021 ; 4 kuukautta sitten ( 2021-05-23 )
Varasto
Kirjoitettu sisään RPython
Käyttöjärjestelmä Monialustainen
Tyyppi Python -tulkin ja kääntäjän työkaluketju
Lisenssi MIT
Verkkosivusto pypy .org Muokkaa tätä Wikidatassa

PYPY ( / p p / ) on vaihtoehtoinen toteutus Python ohjelmointikieli CPython (joka on vakio toteutus). PyPy toimii usein nopeammin kuin CPython, koska PyPy on oikea -aikainen kääntäjä, kun taas CPython on tulkki . Useimmat Python -koodit toimivat hyvin PyPy -ohjelmassa lukuun ottamatta CPython -laajennuksista riippuvaa koodia, joka joko ei toimi tai aiheuttaa jonkin verran lisäkustannuksia PyPy -ajossa. Sisäisesti PyPy käyttää tekniikkaa, joka tunnetaan nimellä meta-tracing, joka muuttaa tulkin jäljitettäväksi oikea-aikaiseksi kääntäjäksi . Koska tulkkeja on yleensä helpompi kirjoittaa kuin kääntäjiä, mutta ne toimivat hitaammin, tämä tekniikka voi helpottaa ohjelmointikielien tehokkaiden toteutusten tuottamista. PyPyn metatyökalutyökalua kutsutaan RPythoniksi .

PyPy ei ole täysin yhteensopiva CPython -ekosysteemin uusimpien versioiden kanssa. Se väittää vain yhteensopivuutta Python 2.7: n ja 3.6: n syntaksin ja 3.7: n (beta -laatu, "muutamia" puuttuvia ominaisuuksia) kanssa; se menettää Python 3.8: n, 3.9: n jne. uudemman syntaksin, kuten määrityslausekkeet ja vain sijaintiparametrit; ja tuleva Python 3.10 -syntaksi, kuten kuvioiden täsmäys .

Yksityiskohdat ja motivaatio

PyPy suunniteltiin toteutukseksi Pythonista, joka on kirjoitettu samankaltaisella ohjelmointikielellä kuin Python. Tämä helpottaa alueiden tunnistamista, joilla sitä voidaan parantaa, ja tekee PyPystä joustavamman ja helpommin kokeiltavan kuin CPython .

PyPy pyrkii tarjoamaan yhteisen käännös- ja tukikehyksen dynaamisten kielten toteutusten tuottamiseksi korostaen kielen spesifikaation ja toteutusnäkökohtien puhdasta erottamista. Se pyrkii myös tarjoamaan yhteensopivan, joustavan ja nopean Python -ohjelmointikielen toteutuksen yllä olevan kehyksen avulla, jotta uudet lisäominaisuudet voidaan ottaa käyttöön ilman, että siihen tarvitsee koodata matalan tason yksityiskohtia.

RPython

PyPy -tulkki itse on kirjoitettu Pythonin rajoitettuun osajoukkoon nimeltä RPython (Rajoitettu Python). RPython asettaa Python -kielelle joitain rajoituksia siten, että muuttujan tyyppi voidaan päätellä käännösaikana.

PyPy -projekti on kehittänyt työkaluketjun, joka analysoi RPython -koodin ja muuntaa sen tavukoodiksi, joka voidaan laskea C: ksi . Aiemmin C: n lisäksi oli muita taustaohjelmia: Java, CSharp ja Javascript, mutta ne kärsivät bitrotista ja on poistettu. PyPyn rekursiivinen logo on siis käärme, joka nielee itsensä, koska RPython on käännetty Python -tulkilla. Koodi voidaan myös suorittaa kääntämättä testausta ja analysointia varten, mikä tarjoaa mukavan testialustan dynaamisten kielten tutkimukselle.

Se mahdollistaa kytkettävien roskat kerääjät , sekä valinnaisesti mahdollistaa Rajaton Python ominaisuuksia. Lopuksi se sisältää Just-in-time (JIT) -generaattorin, joka rakentaa juuri oikea-aikaisen kääntäjän tulkkiin, koska tulkin lähdekoodissa on muutama huomautus. Luotu JIT -kääntäjä on jäljittävä JIT .

RPython käytetään nyt myös kirjoittaa kuin Python toteutuksia kuten Pixie .

Projektin tila

PyPy versiosta 7.3.3 alkaen on yhteensopiva kolmen CPython -version kanssa: 2.7.18, 3.6.12 ja 3.7.9 (Python 3.7: n beta -laadun tuki) Ensimmäinen CPython v3: n kanssa yhteensopiva PyPy -versio on PyPy v2.3.1 (2014). CPython v3: n kanssa yhteensopiva PyPy -tulkki tunnetaan myös nimellä PyPy3.

PyPylla on JIT-kääntämistuki 32-bittisille/64-bittisille x86- ja 32-bittisille/64-bittisille ARM- prosessoreille. Sitä testataan iltaisin Windows-, Linux-, OpenBSD- ja Mac OS X -käyttöjärjestelmissä. PyPy pystyy käyttämään puhdasta Python-ohjelmistoa, joka ei luota toteutuskohtaisiin ominaisuuksiin.

CPython C -sovellusliittymälaajennuksille on olemassa yhteensopivuuskerros nimeltä CPyExt, mutta se on epätäydellinen ja kokeellinen. Edullinen tapa muodostaa yhteys C- jaettujen kirjastojen kanssa on sisäänrakennetun CFI- funktiokäyttöliittymän (CFFI) tai ctypes- kirjastojen kautta.

Historia

PyPy on jatkoa Psyco- projektille, joka on juuri oikeaan aikaan erikoistunut kääntäjä Pythonille ja jonka on kehittänyt Armin Rigo vuosina 2002–2010. PyPyn tavoitteena on saada juuri oikeaan aikaan erikoistunut kääntäjä, jonka laajuus ei ollut käytettävissä Psyco. Alun perin RPython voitiin kääntää myös Java -tavukoodiksi , CIL: ksi ja JavaScriptiksi , mutta nämä taustaohjelmat poistettiin kiinnostuksen puutteen vuoksi.

PyPy oli alun perin tutkimus- ja kehityshakuinen projekti. Kehittyneessä kehitysvaiheessa ja virallinen 1.0-versio vuoden 2007 puolivälissä sen seuraava painopiste oli tuotantovalmiiden versioiden julkaiseminen, joissa on enemmän CPython-yhteensopivuutta. Monet PyPyn muutoksista on tehty sprinttikoodauksen aikana .

  • Elokuussa 2008 PyPy pystyi ylläpitämään suosittuja Python -kirjastoja, kuten Pylons , Pyglet , Nevow ja Django .
  • PyPy 1.2 julkaistiin 12. maaliskuuta 2010, ja siinä keskityttiin nopeuteen. Se sisälsi toimivan, vaikkakaan vielä vakaan, juuri oikea-aikaisen kääntäjän.
  • 30. huhtikuuta 2011 julkaistiin PyPy -versio 1.5, joka on yhteensopiva CPython 2.7: n kanssa.
  • 9. toukokuuta 2013 julkaistiin PyPy 2.0, joka esitteli alfa-laadun tuen JIT-kokoamiselle ARMv6: ssa ja ARMv7 JIT: ssä ja sisällytti CFFI: n vakiokirjastoon.
  • 20. kesäkuuta 2014 PyPy3 julistettiin vakaaksi ja esitteli yhteensopivuuden nykyaikaisemman Python 3: n kanssa. Se julkaistiin PyPy 2.3.1: n rinnalla ja sillä on sama versionumero.
  • PyPy-projekti julkaisi 21. maaliskuuta 2017 sekä PyPy- että PyPy3-version 5.7, ja jälkimmäinen esitteli beta-laadun tuen Python 3.5: lle.
  • 26. huhtikuuta 2018 julkaistiin versio 6.0, joka tukee Python 2.7- ja 3.5-versioita (edelleen beta-laatu Windowsissa).
  • 11. helmikuuta 2019 julkaistiin versio 7.0, joka tukee Python 2.7- ja 3.5 -versioita.
  • 14. lokakuuta 2019 julkaistiin versio 7.2, joka tukee Python 3.6.9 -versiota.
  • 24. joulukuuta 2019 julkaistiin versio 7.3 ja tuki Python 3.6.9: lle.
  • PyPy -tiimi ilmoitti 16. helmikuuta 2020 lähdekoodin isännöinnin siirtämisestä Bitbucketista osoitteeseen heptapod.net CFFI (C Foreign Function Interface ) -projektin arkistojen kanssa . Myös uusi logo ja verkkosivujen suunnittelu julkaistaan. Uuden logon tekijää ja lisenssiä ei kuitenkaan tiedetä.

Rahoitus

PYPY rahoittivat Euroopan unionin ollessa kohdennetut tutkimushankkeet joulukuun 2004 ja maaliskuun 2007 Kesäkuussa 2008 PYPY ilmoittanut myöntäneensä on osa Googlen Open Source ohjelmat ja päätti keskittyä tekemään PYPY paremmin yhteen CPython . Vuonna 2009 Eurostars, joka on erityisesti pk -yrityksiin keskittynyt Euroopan unionin rahoituslaitos , hyväksyi PyPy -hankkeen jäsenten ehdotuksen "PYJIT - nopea ja joustava työkalupakki dynaamisille ohjelmointikielille, jotka perustuvat PyPy -ohjelmaan". Eurostars -rahoitus jatkui elokuuhun 2011. PyCon US 2011 -palvelussa Python Software Foundation myönsi PyPylle 10 000 dollarin apurahan, jotta se voisi jatkaa suorituskykyä ja yhteensopivuutta uusien kieliversioiden kanssa. Porttia ARM -arkkitehtuuriin sponsoroi osittain Raspberry Pi -säätiö .

PyPy -projekti ottaa vastaan ​​lahjoituksia myös tilablogisivujensa kautta. Vuodesta 2013 lähtien rahoitusta myönnettiin useille aliprojekteille: Python 3 -version yhteensopivuus, sisäänrakennettu optimoitu NumPy- tuki numeerisille laskelmille ja ohjelmistojen tapahtumamuistituki paremman rinnakkaisuuden mahdollistamiseksi.

Katso myös

Huomautuksia

Viitteet

Ulkoiset linkit