PyPy - PyPy
![]() | |
První vydání | polovina roku 2007 |
---|---|
Stabilní uvolnění | 7.3.3 / 21. listopadu 2020[1] |
Úložiště | ![]() |
Napsáno | RPython |
Operační systém | Cross-platform |
Typ | Krajta tlumočník a překladač řetězec nástrojů |
Licence | MIT |
webová stránka | pypy![]() |
PyPy je alternativní implementace Krajta programovací jazyk[2] na CPython (což je standardní implementace). PyPy často běží rychleji než CPython, protože PyPy je kompilátor just-in-time zatímco CPython je tlumočník.[3] Většina kódu Pythonu běží dobře na PyPy, s výjimkou kódu, který závisí na rozšířeních CPython, které buď nefungují, nebo při běhu v PyPy způsobují nějaké režijní náklady. PyPy interně používá techniku známou jako meta-tracing, která transformuje tlumočníka na trasování kompilátoru just-in-time. Vzhledem k tomu, že tlumočníci se obvykle snáze zapisují než kompilátoři, ale běží pomaleji, může tato technika usnadnit produkci efektivních implementací programovacích jazyků. Je volán PyPy meta-tracing toolchain RPython.
Podrobnosti a motivace
PyPy byl koncipován jako implementace Pythonu napsaná v programovacím jazyce, který je podobný Pythonu. Díky tomu je snadné identifikovat oblasti, kde je možné jej vylepšit, a PyPy je flexibilnější a snáze se s ním experimentuje CPython.[Citace je zapotřebí ]
Cílem PyPy je poskytnout společný rámec pro překlad a podporu pro výrobu implementací dynamické jazyky, s důrazem na čisté oddělení mezi specifikací jazyka a aspekty implementace. Jeho cílem je také poskytnout kompatibilní, flexibilní a rychlou implementaci programovacího jazyka Python pomocí výše uvedeného rámce, aby se umožnily nové pokročilé funkce, aniž byste do něj museli kódovat podrobnosti na nízké úrovni.[4][5]
RPython
Samotný překladač PyPy je napsán v omezené podmnožině Pythonu zvané RPython (omezený Python).[6] RPython klade na jazyk Python určitá omezení, aby mohl být typ proměnné odvozeno v době kompilace.[7]
Projekt PyPy vyvinul a řetězec nástrojů který analyzuje kód RPython a překládá jej do podoby bajtového kódu spolu s tlumočníkem napsaným v souboru C programovací jazyk. Velká část tohoto kódu je poté zkompilována do strojového kódu a bajtový kód běží na kompilovaném tlumočníkovi.
Umožňuje připojení sběrači odpadků, stejně jako volitelně povolení Stackless Python funkce. Nakonec obsahuje generátor just-in-time (JIT), který sestaví kompilátor just-in-time do tlumočníka, vzhledem k několika poznámkám ve zdrojovém kódu tlumočníka. Vygenerovaný kompilátor JIT je a sledování JIT.[8]
RPython se nyní také používá k psaní implementací jiných jazyků než Python, jako je Skřítek.[9]
Stav projektu
PyPy je kompatibilní s CPython 2.7.13.[10] PyPy3, vydané od verze 2.3.1,[11] je kompatibilní s CPython 3.6.9 od verze 7.2.[10] Obě verze mají Kompilace JIT podpora na 32-bit / 64-bit x86 a 32bitový / 64bitový PAŽE procesory.[12] Testuje se každou noc na Windows, Linux, OpenBSD a Mac OS X. PyPy je schopen spouštět čistý software Pythonu, který se nespoléhá na funkce specifické pro implementaci.[13]
Pro rozšíření CPython C API s názvem CPyExt existuje vrstva kompatibility, ale je neúplná a experimentální. Upřednostňovaný způsob propojení s C sdílené knihovny je přes vestavěný C. rozhraní cizí funkce (CFFI) nebo typy knihovny.
Dějiny
PyPy navazuje na Psyco projekt, a právě včas specializující překladač pro Python, vyvinutý Arminem Rigo v letech 2002 až 2010. Cílem PyPy je mít specializovaný kompilátor just-in-time s rozsahem, který nebyl pro Psyco k dispozici.[je zapotřebí objasnění ] Zpočátku mohl být RPython také kompilován Bajtový kód Java, CIL a JavaScript, ale tyto backendy byly odstraněny z důvodu nezájmu.
PyPy byl původně projekt zaměřený na výzkum a vývoj. Dosažení vyspělého stavu vývoje a oficiálního vydání 1.0 v polovině roku 2007, jeho dalším zaměřením bylo vydání verze připravené k produkci s větší kompatibilitou CPython. Mnoho změn PyPy bylo provedeno během kódování sprinty.
- V srpnu 2008 mohla PyPy provozovat některé oblíbené knihovny Pythonu, jako je Stožáry,[14] Pyglet,[15] Nevow[16] a Django.[17]
- Dne 12. března 2010 byla vydána verze PyPy 1.2 se zaměřením na rychlost. Zahrnoval funkční, i když ještě ne stabilní kompilátor just-in-time.[18]
- Dne 30. dubna 2011 byla vydána verze PyPy verze 1.5, která dosáhla kompatibility s CPythonem 2.7.[19]
- Dne 9. května 2013 byla vydána verze PyPy 2.0, která zavedla podporu alfa kvality pro kompilaci JIT na ARMv6 a ARMv7 JIT a zahrnula CFFI do standardní knihovny.[20][21]
- Dne 20. června 2014 byla PyPy3 prohlášena za stabilní[11] a představil kompatibilitu s modernějším Pythonem 3. Byl vydán společně s PyPy 2.3.1 a nese stejné číslo verze.
- Dne 21. března 2017 vydal projekt PyPy verzi 5.7 jak PyPy, tak PyPy3, přičemž ta druhá zavedla podporu beta kvality pro Python 3.5.[22]
- Dne 26. dubna 2018 byla vydána verze 6.0 s podporou Pythonu 2.7 a 3.5 (stále v beta kvalitě pro Windows).[23]
- 11. února 2019 byla vydána verze 7.0 s podporou Pythonu 2.7 a 3.5.[24]
- Dne 14. října 2019 byla vydána verze 7.2 s podporou Pythonu 3.6.9.[25]
- 24. prosince 2019 byla vydána verze 7.3 s podporou Pythonu 3.6.9.[26]
Financování
PyPy byl financován z Evropská unie být Specifický cílený výzkumný projekt[27] mezi prosincem 2004 a březnem 2007. V červnu 2008 společnost PyPy oznámila, že financování je součástí Google Programy s otevřeným zdrojovým kódem a souhlasil, že se zaměří na zvýšení kompatibility PyPy CPython. V roce 2009 se společnost Eurostars, agentura pro financování Evropské unie, speciálně zaměřila na Malé a střední podniky,[28] přijal návrh členů projektu PyPy s názvem „PYJIT - rychlá a flexibilní sada nástrojů pro dynamické programovací jazyky založené na PyPy“. Financování Eurostars trvalo do srpna 2011.[29]Na PyCon USA 2011 Softwarová nadace Python poskytl PyPy grant 10 000 $, aby mohl pokračovat v práci na výkonu a kompatibilitě s novějšími verzemi jazyka.[30]Port k architektuře ARM byl částečně sponzorován Raspberry Pi Foundation.[20]
Projekt PyPy také přijímá dary prostřednictvím svých stránek blogu o stavu.[31] Od roku 2013 měla financování řada podprojektů: kompatibilita verzí Pythonu 3, integrovaná optimalizace NumPy podpora numerických výpočtů a softwarová transakční paměť podpora umožňující lepší paralelismus.[20]
Viz také
- Bootstrapping (překladače)
- Cython
- GraalVM
- Částečné hodnocení
- Psyco
- Vlastní hostování
- Vlastní tlumočník
- Prázdná vlaštovka
Poznámky
- ^ „PyPy Status Blog“. Citováno 23. listopadu 2020.
- ^ „Interview Maciej Fijalkowski PyPy“.
- ^ "Rychlost PyPy". speed.pypy.org. Citováno 2019-12-01.
- ^ Samuele Pedroni (březen 2007). „PyPy - přehled cílů a architektury“. Archivovány od originál dne 30.06.2012.
- ^ „PyPy - přehled cílů a architektury - prohlášení o poslání“. Citováno 11. října 2013.
- ^ Náš běhový tlumočník je „RPython“ Průvodce kódováním - dokumentace PyPy
- ^ „Je to správná podmnožina jazyka Python, omezená způsobem, který umožňuje snadnou analýzu a efektivní generování kódu,“ Ancona et al., 2007.
- ^ Bolz, Carl; Cuni, Antonio; Fijalkowski, Maciej; Rigo, Armin. Tracing the Meta-Level: PyPy’s Tracing JIT Compiler. ICOOOLPS '09. doi:10.1145/1565824.1565827.
- ^ Rozhovor Timothy Balridge.
- ^ A b "PyPy - kompatibilita s Pythonem". pypy.org. Citováno 2016-04-21.
- ^ A b tým PyPy (20. června 2014). „PyPy3 2.3.1 - Fulcrum“. Blog PyPy.
- ^ „PyPy v7.2.0: vydání 2.7 a 3.6“. pypy.org. 16. října 2019.
- ^ "PyPy - kompatibilita s Pythonem".
- ^ "Běh pylony na PyPy".
- ^ "Spuštění Pygletu nad PyPy".
- ^ "Běh Nevow nad PyPy".
- ^ "PyPy provozuje nemodifikovaný django 1.0 beta".
- ^ „Představujeme vydání PyPy 1.2“.
- ^ „Vydáno PyPy 1.5: Dohánění“.
- ^ A b C Jake Edge (15. května 2013). „Pohled na vydání PyPy 2.0“. LWN.net.
- ^ „PyPy 2.0 - Einstein Sandwich“.
- ^ „PyPy2.7 and PyPy3.5 v5.7 - two in one release“.
- ^ „Duální vydání PyPy2.7 a PyPy3.5 v6.0“.
- ^ Cuni, Antonio (11.02.2019). „PyPy Status Blog: PyPy v7.0.0: trojité vydání 2.7, 3.5 a 3.6-alpha“. Blog o stavu PyPy. Citováno 2020-08-17.
- ^ Mattip (2019-10-14). „PyPy Status Blog: PyPy v7.2 vydán“. Blog o stavu PyPy. Citováno 2020-08-17.
- ^ Mattip (2019-12-24). „Blog stavu PyPy: Vydána verze PyPy v7.3.0“. Blog o stavu PyPy.
- ^ „Vstup do informačních služeb Společenství pro výzkum a vývoj“.
- ^ „Eurostars - cíl vyšší“.
- ^ „Stránka projektu v síti Eureka“.
- ^ „Děkuji PSF“.
- ^ „PyPy Status Blog: Ach, a btw: PyPy získává financování prostřednictvím“ Eurostars"".
Reference
- Davide Ancona, Massimo Ancona, Antonio Cuni, Nicholas D. Matsakis, 2007. RPython: krok k sladění dynamicky a staticky napsaných OO jazyků[trvalý mrtvý odkaz ]. V Proc. Dynamic Language Symposium (DLS), 2007. ACM Press.
- Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, 2009. Trasování metaúrovně: PyPy's Tracing JIT Compiler. V Proc. ICOOOLPS, 2009. ACM Press.
- Corbet, Jonathan (11. května 2011). „Krátký experiment s PyPy“. LWN.net.
- von Eitzen, Chris (21. listopadu 2011). "PyPy 1.7 rozšiřuje výkon" sladké místo"". H. Heinz Heise.
- Rose, John (2. prosince 2011). „Den s PyPy“. Věštec blog vývojáře.
- "Rozhovor Maciej Fijalkowski pypy". Blog Decisionstats.