Shed Skin is een experimentele Python-to-C ++ compiler. Shed Skin accepteert pure Python-programma's, en genereert geoptimaliseerde C ++ code. Dit betekent dat, in combinatie met een C ++ compiler, het zorgt voor vertaling van Python's in zeer efficiënt machinetaal. Voor een set van 16 niet-triviale testprogramma's, metingen tonen een typische speedup van 2-40 dan Psyco, ongeveer 12 gemiddeld, en 2-220 dan CPython, ongeveer 45 gemiddeld (zie paragraaf 5 van mijn Master Thesis aan de rechter ). Shed Skin uitgangen ook geannoteerde broncode.
De hoge prestaties en elegante benadering van Shed Skin (het is slechts 6000 lijnen!) Komen op een kostprijs. Ten eerste is het op dit moment accepteert alleen programma's die statisch zijn getypt. Dit betekent simpelweg dat variabelen, kan altijd maar één type. Dus bijv. a = 1; a = '1' is niet toegestaan. Natuurlijk kan een enkel type abstract of generieke (als in C ++), zodat bv a = A (); a = B (), waarin A en B een gemeenschappelijke basis klasse wordt toegestaan.
Tweede, Python programma's kunnen op dit moment niet vrij gebruik maken van de Python standaard bibliotheek. Er zijn echter een aantal gemeenschappelijke invoer ondersteund (zie * _. Py), en vele anderen kunnen eenvoudig worden toegevoegd. Het probleem is een praktische, want in theorie is het mogelijk om bindingen meeste library modules creëren. Een eenvoudige work-around kan zijn om alleen te compileren kritische onderdelen van een Python-programma, en met het communiceren via bv bestanden en standaard in- en uitgang. Op deze manier kan de 'belangrijkste' programma gebruikt de volledige Python dynamiek en de standaard bibliotheek, en het hele programma is geschreven in pure Python.
Shed Skin is nog steeds alpha software, en er zijn enkele andere kleine, meestal tijdelijk, beperkingen. Lees de sectie Beperkingen zorgvuldig, voordat je probeert om een programma samen te stellen. Het enige wat ik vraag, in ruil voor het maken van de software verkrijgbaar onder de GPL, is dat je me een e-mail sturen wanneer je een probleem tegenkomt, dat is niet onder deze beperkingen. Dit is de snelste manier om het krijgen van uw programma ondersteund, omdat ik meestal geen problemen ik weet niet hoe het te repareren. Kunt u ook laat het me weten als je zou willen dat ik bepaalde bibliotheek gesprekken voeren
Wat is nieuw in deze release:.
- Schaalbaarheid werd opnieuw sterk verbeterd.
- Prestaties van file I / O en complexe getallen werd sterk verbeterd.
- Drie nieuwe modules worden ondersteund.
- Zes nieuwe voorbeeld programma's werden toegevoegd.
- Er waren vele andere bugfixes en verbeteringen.
Wat is nieuw in versie 0.8:
- Ondersteuning toegevoegd voor de & quot; struct & quot; en & quot; scala & quot; modules.
- Drie nieuwe voorbeelden werden toegevoegd, voor een totaal van 57.
- De C64 voorbeeld is bijgewerkt, en is nu meer dan 3.000 lijnen (sloccount).
- Een optie is toegevoegd aan uitzondering tracebacks geven (shedskin -x).
- Veel bugs werden vastgesteld.
Wat is nieuw in versie 0.1:.
- Verbeterde ondersteuning voor 'os' (UNIX)
- De toevoeging van een JPEG-decoder (1200 lijnen) en een aantal andere programma's op de set van voorbeeld programma's. Uitbreidingsmodule fixes.
- Verbeterde compilervlaggen onder OS X.
- Een belangrijk type inference fix.
- Verbeterde variabele overbelasting.
- verbeteringen Gieten.
- Oplossingen voor setslice en delslice hoek gevallen.
- xrange een xrange object, keert niet iterator.
- Er zijn enkele kleine bugfixes.
Wat is nieuw in versie 0.0.30:.
- Door de gebruiker gedefinieerde klasse steun in uitbreidingsmodules
- Zeer snelle set implementatie (FFAO).
- Complex aantal support.
- Veel verbeteringen touwtje formatteren.
- Geen kaarten op NULL in plaats van 0, en prenten als 'Geen'.
- re.match_object.group accepteert meerdere argumenten.
- verbeteringen Gieten.
- Inheritance van ingebouwde anders dan Uitzondering uitzonderingen.
- Hashing Niets zou nu moeten werken.
- Een belangrijk type inference fix, en vele andere bugfixes.
Wat is nieuw in versie 0.0.29:.
- datetime en ConfigParser ondersteuning
- staticmethod en eigendom decorateurs.
- FreeBSD, OpenSolaris, en 64-bits ondersteuning.
- GCC 4.3 fixes.
- Ondersteuning voor het toewijzen van toetsen ('% (key) x ..'% some_dict).
- Verbeteringen aan het mechanisme import. __init__ is nu veel minder van een speciaal geval.
- Veel fixes voor het bellen voorouder methoden (bijv Parent .__ init __).
- Alle bijvoorbeeld programma's nu te compileren als uitbreidingsmodules.
- Er zijn vele bugfixes.
Reacties niet gevonden