PyPy

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 17. května 2022; ověření vyžaduje 1 úpravu .
PyPy
Typ Python interpret a kompilátor
Zapsáno v RPython
Operační systém Křížová platforma
První vydání 2002
Nejnovější verze 7.3.9 [1] ( 30. března 2022 )
Stát Implementace Pythonu 2.7.18, 3.6.12 a 3.7.9
Licence licence MIT
webová stránka pypy.org

PyPy  je interpret pro programovací jazyk Python . PyPy ve svých počátcích byl interpret Pythonu napsaný v Pythonu. Aktuální verze PyPy jsou přeloženy z RPythonu do C a zkompilovány. PyPy má vestavěný trace JIT , který dokáže za běhu změnit kód Pythonu na strojový kód .

Cíle projektu

PyPy bylo zamýšleno jako implementace Pythonu napsaná v Pythonu. Skutečnost, že PyPy je implementován v jazyce na vysoké úrovni, umožňuje flexibilnější a snazší experimentování s novými funkcemi než CPython a je snadné odhalit oblasti, kde jej lze zlepšit.

PyPy si klade za cíl poskytnout jediný mechanismus překladu. Podporuje rámec pro implementaci dynamických programovacích jazyků a vynucuje jasné oddělení mezi specifikací jazyka a implementací.

Jeho cílem je také poskytnout kompatibilitu, flexibilitu a rychlou implementaci programovacího jazyka Python a umožňuje implementaci nových funkcí bez nutnosti programování v jazyce nízké úrovně [2] .

Vysílání

PyPy se skládá ze standardního tlumočníka a překladatele.

Interpret plně implementuje jazyk Python. Samotný interpret je napsán v omezené podmnožině stejného jazyka zvaného RPython (Restricted Python). Na rozdíl od standardního Pythonu je RPython staticky typován pro efektivnější kompilaci [3] .

Překladač je sada nástrojů, která analyzuje kód RPythonu a překládá jej do jazyků nižší úrovně, jako je C , Java bytecode nebo CIL . Podporuje také zásuvné sběrače odpadu a umožňuje volitelně povolit Stackless . Obsahuje také JIT kompilátor pro překlad kódu do strojových instrukcí během provádění programu.

PyPy jako prostředek implementace interpretů

Kompilátor jazyka RPython lze také použít k psaní interpretů pro jiné programovací jazyky. Přidáním do kódu takového interpretu importem třídy JitDriver a vytvořením její instance a poté předáním této třídy seznamy globálních proměnných , proměnlivých a nezměněných během provádění programu, a také vytvořením několika zjevnějších deklarací , po překladu s příznakem --opt=jit:získáme funkční překladač jazyka JIT [4] .

Historie projektu

PyPy je pokračováním projektu Psyco , JIT kompilátoru pro Python, který vyvinul Armin Rigo. Cílem PyPy je mít JIT kompilátor s pokrytím, které nebylo dostupné pro Psyco. PyPy začal jako výzkumný projekt pro vývojáře.

Když projekt dosáhl zralé fáze vývoje a oficiálního vydání 1.0 v polovině roku 2007, další důraz byl kladen na vydání verze připravené pro produkční provoz s větší kompatibilitou s CPythonem.

Verze 1.1 byla vydána 28. dubna 2009.

V březnu 2010 vyšla verze 1.2, ve které byla věnována zvláštní pozornost rychlosti. Tato verze obsahuje kompilátor JIT, který funguje, ale nedoporučuje se pro produkční použití.

26. listopadu 2010 byla vydána verze 1.4. Tato verze poprvé v režimu kompilátoru JIT překonává CPython [5] v rychlosti . Vývojáři také věří, že tato verze je připravena k použití ve výrobě [6] .

V rámci PyPy se vyvíjí speciální verze interpretu pypy-stm, který implementuje softwarovou transakční paměť [7] [8] . Použití transakční paměti se zbaví GIL a usnadní paralelizaci aplikací Pythonu na vícejádrových systémech.

9. května 2013 vyšla druhá verze PyPy, mezi jejíž novinky patří bezzásobníkový režim a nové rozhraní pro práci s externími funkcemi v jazyce C  - cffi [9] .

10. března 2016 byla vydána pátá verze PyPy s vylepšeními výkonu a CPython API se dočkalo mnoha vylepšení [10] .

9. srpna 2016 obdržel PyPy od Mozilly finanční prostředky ve výši 200 000 $ na podporu Pythonu 3.5 [11] .

12. listopadu 2016 vyšla PyPy2 v5.6, nejdůležitější změnou je standardní knihovna Python 2.7.12

Podporované backendy

Od roku 2017 PyPy upustilo od JVM , CIL , JavaScriptu [12] jako backendů.

Kompatibilita s CPython

Verze 5.6.0 je kompatibilní s Pythonem 2.7.12 a může běžet na 32bitových i 64bitových platformách (kromě Windows, kde je podporováno pouze 32bitové [13] ). PyPy plně podporuje moduly napsané v čistém Pythonu. Pro použití binárních rozšíření (.so a .pyd) má PyPy dobrou podporu pro CPython API ve formě samostatného modulu cpyext. Tato rozšíření vyžadují rekompilaci, aby správně fungovala [14] .

PyPy3 verze 5.5 je kompatibilní s CPythonem 3.3.5 [15] .

Existuje také aktivní vývoj PyPy3.5, který implementuje Python 3.5.

Je známo, že v PyPy fungují následující knihovny a rámce [14] :

Viz také

Poznámky

  1. Bezpečnostní vydání PyPy v7.3.9 .
  2. Samuel Pedroni. PyPy – Přehled cílů a architektury (odkaz není k dispozici) (březen 2007). Archivováno z originálu 30. června 2012. 
  3. „Je to vlastní podmnožina Pythonu, omezená způsobem, který umožňuje snadnou analýzu a efektivní generování kódu“, Ancona et al., 2007.
  4. Andrew Brown, Návod: Psaní tlumočníka pomocí PyPy, 1. část archivována 3. března 2012 na Wayback Machine , Část 2: Přidání JIT archivovaného 3. března 2012 na Wayback Machine , Výukový program: Psaní tlumočníka JIT pomocí PyPy Archived
    (překlad) 20. srpna 2016 na Wayback Machine , Repository ref. Kód archivován 26. ledna 2012 na Wayback Machine Článek popisuje implementaci Brainfuck na RPythonu

  5. PyPy Speed ​​​​Centrum: Porovnání . Získáno 28. listopadu 2010. Archivováno z originálu dne 2. dubna 2012.
  6. Blog o stavu PyPy: PyPy 1.4: Ouroboros v praxi . Získáno 28. listopadu 2010. Archivováno z originálu 9. března 2012.
  7. Blog stavu PyPy „Global Interpreter Lock, aneb jak to zabít“ . Datum přístupu: 19. května 2012. Archivováno z originálu 22. května 2012.
  8. pypy-stm představen . Získáno 19. 5. 2012. Archivováno z originálu 13. 5. 2012.
  9. Vydání PyPy 2.0, implementace Pythonu napsané v jazyce Python (downlink) . opennet.ru (10. května 2013). Získáno 21. května 2013. Archivováno z originálu 7. června 2013. 
  10. Blog stavu PyPy: Vydán PyPy 5.0 . morepypy.blogspot.ru. Získáno 18. srpna 2016. Archivováno z originálu 13. března 2016.
  11. Blog o stavu PyPy: PyPy získává finanční prostředky od Mozilly na podporu Pythonu 3.5 . morepypy.blogspot.ru. Získáno 18. srpna 2016. Archivováno z originálu 18. března 2017.
  12. [https://web.archive.org/web/20121009143354/http://www.mail-archive.com/[email protected]/msg03946.html Archivováno 9. října 2012 na Wayback Machine Re: [pypy-dev] Zdá se, že pypy zcela odstranil veškeré zmínky o javascriptu]
  13. Překlad na Windows - dokumentace PyPy . doc.pypy.org. Získáno 12. listopadu 2016. Archivováno z originálu 13. listopadu 2016.
  14. 1 2 PyPy :: Kompatibilita s Pythonem . Získáno 30. listopadu 2010. Archivováno z originálu 7. června 2021.
  15. Vydán PyPy3 v5.5 . doc.pypy.org. Získáno 25. srpna 2016. Archivováno z originálu 18. října 2016.
  16. Stav NumPyPy . buildbot.pypy.org. Získáno 25. srpna 2016. Archivováno z originálu 16. října 2013.

Literatura

Odkazy