Zbavit se kůže - Shed Skin - Wikipedia
Původní autoři | Mark Dufour, další |
---|---|
První vydání | 2005 |
Stabilní uvolnění | 0.9.4 / 16. června 2013 |
Úložiště | ![]() |
Napsáno | Krajta, C ++ |
Operační systém | Cross-platform: Linux, Mac OS X, Okna |
K dispozici v | Krajta |
Typ | Kompilátor zdroj-zdroj |
Licence | GPL 3, BSD, MIT |
webová stránka | shedskin |
Zbavit se kůže je Krajta na C ++ programovací jazyk překladač. Je experimentální a může přeložit čistý, ale implicitně staticky napsané Programy v Pythonu do optimalizovaného C ++. Může generovat samostatné programy nebo rozšiřující moduly, které lze importovat a použít ve větších programech Pythonu.
Shed Skin je open source projekt s přispěním mnoha lidí, nicméně hlavním autorem je Mark Dufour. Práce se vrhají do Shed Skin od roku 2005.[1]
Funkce
Kromě omezení psaní[2] programy nemohou volně používat standardní knihovnu Pythonu, i když asi 20 běžných modulů, jako např náhodný
, itertools
a re
(regulární výrazy ), jsou podporovány od roku 2011. Rovněž ne všechny funkce Pythonu, například vnořené funkce a proměnný počet argumentů. Mnoho introspektivních dynamických částí jazyka není podporováno. Například funkce jako getattr a hasattr nejsou podporovány.
V květnu 2011 Unicode není podporováno.[3]
Od června 2016 pro soubor 75 netriviálních testovacích programů (celkem na více než 25 000 řádcích (sloccount)),[4] měření ukazují typické zrychlení 2–20krát Psyco a 2–200krát CPython.[5][6][7][8] Shed Skin je stále v rané fázi vývoje, takže mnoho dalších programů nebude kompilováno beze změn.[9]
Shed Skin lze použít ke generování samostatných spustitelných souborů, které potřebují pouze běhové knihovny C ++. Lze jej také použít ke generování modulů CPython. To umožňuje kompilaci částí větších programů pomocí Shed Skin, zatímco ostatní části běžíte pomocí běžného CPythonu.
Dalším využitím bylo zabalení tříd C ++ pomocí Shed Skin, aby bylo možné třídy C ++ použít jako třídy Pythonu.[10]
Licence zdrojového kódu Shed Skin je rozdělena na dvě části. Hlavní kód kompilátoru je pod GNU General Public License (GPL). Podpůrný kód, který používá jako knihovnu běhu, je pod a BSD nebo MIT licence v závislosti na modulu. To umožňuje kompilaci programů, které jsou považovány za GPL nebo které nejsou považovány za GPL.
Odvození typu
Shed Skin kombinuje Ole Agesenův kartézský produktový algoritmus (CPA) s datově polymorfní částí Iterativní analýzy toku (IFA) Johna Plevyaka.[11] Verze 0.6 představila vylepšení škálovatelnosti, která opakovaně analyzují větší verze programu (kromě výše zmíněných technik), dokud není plně analyzována. To umožňuje Shed Skin dělat odvození typu na větších programech než dříve. Začíná to v podstatě prázdným callgrafem a pomalu se k němu přidává, dokud nebude přidán celý graf volání. Autor publikoval graf, který ukazuje časy analýzy pro 50 ukázkových programů, celkem kolem 15 000 řádků.[12]
Moduly
U verze 0.9 je následujících 25 modulů do značné míry podporováno[13]. Několik z nich, například os.path, bylo zkompilováno do C ++ pomocí Shed Skin.
- pole
- binascii
- půlit
- sbírky (defaultdict, deque)
- ConfigParser (bez SafeConfigParser)
- kopírovat
- colorsys
- csv (žádný dialekt, čichač)
- čas schůzky
- fnmatch
- getopt
- glob
- heapq
- itertools (no starmap)
- matematika
- mmap
- os
- os. cesta
- náhodný
- re
- zásuvka
- tětiva
- struct (no Struct, pack_into, unpack_from)
- sys
- čas
Všimněte si, že jakýkoli jiný modul, jako je pygame, pyqt nebo pickle, lze použít v kombinaci s generovaným Shed Skin rozšiřující modul. Příklady toho najdete v Shed Skin příklady.
Viz také
Reference
- ^ první vydání Shed Skin
- ^ Sekce Learning Python Book on Shed Skin
- ^ Výukový program Shed Skin (část „Omezení podmnožiny Pythonu“)
- ^ https://github.com/shedskin/shedskin
- ^ Urychlete svůj Python: Unladen vs. Shed Skin vs. PyPy vs. Cython vs. C.
- ^ Vezmeme si Shed-Skin
- ^ Urychlení kódu Pythonu pomocí Shed Skin
- ^ MiniLight, minimální měřítko vykreslování globálního osvětlení
- ^ Webová stránka Shed Skin
- ^ Zabalení tříd C ++ pomocí Shed Skin
- ^ Diplomová práce Mark Dufour, "Shed Skin. An Optimizing Python-to-C ++ Compiler", 19. dubna 2006
- ^ Škálovatelnost odvození typu, 2010-12
- ^ Poznámky k verzi Shedskin 0.9