PyPy - PyPy

PyPy
Pypy logo.png
První vydání polovina roku 2007 ; Před 14 lety ( 2007 )
Stabilní uvolnění
7.3.5 / 23. května 2021 ; Před 4 měsíci ( 2021-05-23 )
Úložiště
Napsáno RPython
Operační systém Cross-platform
Typ Řetězec nástrojů a překladač Pythonu
Licence MIT
webová stránka pypy .org Upravte to na Wikidata

PyPy ( / p p / ) je alternativní implementace Python programovacího jazyka do CPython (což je standardní provedení). PyPy často běží rychleji než CPython, protože PyPy je kompilátor just-in-time, zatímco CPython je interpret . Většina kódu Pythonu běží dobře na PyPy kromě kódu, který závisí na rozšíření CPython, který buď nefunguje, nebo při spuštění v PyPy způsobí určitou režii. Interně PyPy používá techniku ​​známou jako meta-tracing, která transformuje tlumočníka na trasovací kompilátor just-in-time . Protože se tlumočníci obvykle zapisují snáze než kompilátory, ale běží pomaleji, může tato technika usnadnit vytváření efektivních implementací programovacích jazyků. Řetězec nástrojů meta-trasování PyPy se nazývá RPython .

PyPy nemá úplnou kompatibilitu s novějšími verzemi ekosystému CPython. S ním pouze nárok na kompatibilitu se syntaxí Pythonu 2.7 a 3.6 a 3.7 (beta kvalita, s „několika“ chybějícími funkcemi); ztrácí na novější syntaxi v Pythonu 3.8, 3.9 atd., jako jsou výrazy přiřazení a pouze poziční parametry; a nadcházející syntaxe Pythonu 3.10, jako je shoda vzorů .

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 lze s ním snadněji experimentovat než s CPythonem .

PyPy si klade za cíl poskytnout společný překladový a podpůrný rámec pro produkci implementací dynamických jazyků 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, který umožní nové pokročilé funkce, aniž by do něj bylo nutné kódovat detaily na nízké úrovni.

RPython

Samotný interpret PyPy je napsán v omezené podmnožině Pythonu s názvem RPython (omezený Python). RPython klade na jazyk Python určitá omezení, takže typ proměnné lze odvodit v době kompilace.

Projekt PyPy vyvinula toolchain který analyzuje RPython kód a převádí jej do podoby byte kódu, který může být spuštěna do C . Kdysi existovaly kromě C: Java, CSharp a Javascript i další backendy, ale ty trpěly bitrotem a byly odstraněny. Rekurzivní logo PyPy je tedy had, který sám polyká, protože RPython je přeložen interpretem Pythonu. Kód lze také spustit nepřeložený pro testování a analýzu, což poskytuje příjemné testovací prostředí pro výzkum dynamických jazyků.

Umožňuje připojitelné popelářské koše a volitelně povoluje funkce Stackless Python . Nakonec obsahuje generátor JIT (just-in-time), který do překladače zabuduje kompilátor just-in-time s několika anotacemi ve zdrojovém kódu tlumočníka. Generovaný kompilátor JIT je trasovací JIT .

RPython se nyní používá také k psaní implementací jiných jazyků než Python, jako je Pixie .

Stav projektu

PyPy od verze 7.3.3 je kompatibilní se třemi verzemi CPython : 2.7.18, 3.6.12 a 3.7.9 (podpora kvality beta pro Python 3.7) První verze PyPy kompatibilní s CPython v3 je PyPy v2.3.1 (2014). Interpret PyPy kompatibilní s CPython v3 je také známý jako PyPy3.

PyPy má podporu kompilace JIT na 32bitových/64bitových x86 a 32bitových/64bitových procesorech ARM . Testuje se každou noc na Windows, Linux, OpenBSD a Mac OS X. PyPy dokáže spouštět čistý software Python, který nespoléhá na funkce specifické pro implementaci.

Existuje vrstva kompatibility pro rozšíření CPython C API s názvem CPyExt, ale je neúplná a experimentální. Preferovaný způsob propojení se sdílenými knihovnami C je prostřednictvím vestavěného rozhraní C cizí funkce (CFFI) nebo knihoven ctypes .

Dějiny

PyPy navazuje na projekt Psyco , specializovaný překladač just-in-time pro Python, vyvinutý společností Armin Rigo v letech 2002 až 2010. Cílem PyPy je mít specializovaný překladač just-in-time s rozsahem, který nebyl k dispozici pro Psyco. Zpočátku mohl být RPython také kompilován do Java bytecode , CIL a JavaScript , ale tyto backendy byly odstraněny kvůli nezájmu.

PyPy byl původně projekt zaměřený na výzkum a vývoj. Dosažení zralého stavu vývoje a oficiální verze 1.0 v polovině roku 2007, jeho další zaměření bylo na vydání produkční verze s větší kompatibilitou CPython. Mnoho změn PyPy bylo provedeno během kódovacích sprintů .

  • V srpnu 2008, PyPy byl schopen běžet některé populární knihovny Python jako pylony , Pyglet , Nevow a Django .
  • Dne 12. března 2010 byl vydán PyPy 1.2 se zaměřením na rychlost. Zahrnoval fungující, i když ještě ne stabilní, kompilátor just-in-time.
  • Dne 30. dubna 2011 byla vydána verze PyPy 1.5, která dosáhla kompatibility s CPythonem 2.7.
  • Dne 9. května 2013 byl vydán PyPy 2.0, který zavedl podporu alfa kvality pro kompilaci JIT na ARMv6 a ARMv7 JIT a zahrnoval CFFI do standardní knihovny.
  • Dne 20. června 2014 byl PyPy3 prohlášen za stabilní a zavedl 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 projekt PyPy vydal verzi 5.7 pro PyPy i PyPy3, přičemž ta druhá zavádí podporu beta kvality pro Python 3.5.
  • 26. dubna 2018 byla vydána verze 6.0 s podporou pro Python 2.7 a 3.5 (stále beta kvalita v systému Windows).
  • Dne 11. února 2019 byla vydána verze 7.0 s podporou pro Python 2.7 a 3.5.
  • Dne 14. října 2019 byla vydána verze 7.2 s podporou pro Python 3.6.9.
  • 24. prosince 2019 byla vydána verze 7.3 s podporou Pythonu 3.6.9.
  • Dne 16. února 2020 oznámil tým PyPy přesun hostitele zdrojového kódu z Bitbucketu na heptapod.net s úložišti projektu CFFI (C Foreign Function Interface ). Zveřejněno je také nové logo a design webových stránek. Autor a licence nového loga však nejsou známy.

Financování

PyPy byl financován Evropskou unií jako specifický cílený výzkumný projekt v období od prosince 2004 do března 2007. V červnu 2008 společnost PyPy oznámila financování jako součást programů Google Open Source a souhlasila se zaměřením na zajištění větší kompatibility PyPy s CPythonem . V roce 2009 Eurostars, agentura Evropské unie pro financování zaměřená na malé a střední podniky , přijala návrh členů projektu PyPy s názvem „PYJIT - rychlý a flexibilní soubor nástrojů pro dynamické programovací jazyky založené na PyPy“. Financování Eurostars trvalo až do srpna 2011. Na PyCon USA 2011 poskytla Python Software Foundation pro PyPy grant ve výši 10 000 $ na pokračování prací na výkonu a kompatibilitě s novějšími verzemi jazyka. Architektura portu ARM byla částečně sponzorována nadací Raspberry Pi Foundation .

Projekt PyPy také přijímá dary prostřednictvím svých stavových blogových stránek. Od roku 2013 byla financována celá řada dílčích projektů: kompatibilita s verzí Pythonu 3, vestavěná optimalizovaná podpora NumPy pro numerické výpočty a podpora softwarové transakční paměti pro lepší paralelismus.

Viz také

Poznámky

Reference

externí odkazy