Remise peau est un compilateur C ++ expérimentale Python-to-C. Cabanon peau accepte programmes Python purs, et génère le code C optimisé de. Cela signifie que, en combinaison avec un compilateur C ++, il permet de traduire les programmes Python en langage machine très efficace. Pour un ensemble de 16 programmes de test non triviales, les mesures montrent une accélération typique de 2-40 sur Psyco, environ 12 en moyenne, et 2-220 CPython plus, environ 45 en moyenne (voir la section 5 de mon mémoire de maîtrise sur le droit ). Peau Cabanon renvoie également le code source annoté.
La haute performance et une approche élégante de peau Cabanon (il est à seulement 6000 lignes!) Ont un coût. Première, actuellement, il ne accepte que les programmes qui sont statiquement typé. Cela signifie simplement que les variables ne peuvent jamais avoir un seul type. Donc, par exemple a = 1; a = '1' ne est pas autorisé. Bien entendu, un seul type peut être abrégé ou générique (comme dans C ++), de sorte que par exemple, a = A (); a = B (), où A et B ont une classe de base commune, est autorisé.
Deuxièmement, les programmes Python ne peuvent actuellement utiliser librement la bibliothèque standard de Python. Cependant, certaines importations communes sont pris en charge (voir * _. Py), et bien d'autres peuvent être facilement ajoutés. Le problème est d'ordre pratique, car en théorie, il est possible de créer des liaisons pour la plupart des modules de la bibliothèque. Un travail autour simple peut être seulement de compiler les parties critiques d'un programme de Python, et de communiquer avec elle par le biais par exemple fichiers et in- standard et la sortie. De cette façon, le programme «principal» peut utiliser la pleine dynamique de Python et de la bibliothèque standard, et l'ensemble du programme est écrit en Python pur.
Remise peau est encore une version alpha, et il ya quelques autres limitations mineures, la plupart temporaires,. Se il vous plaît lisez la section Limitations attentivement, avant de tenter de compiler un programme. La seule chose que je demande en retour pour faire le logiciel disponible sous licence GPL, ce est que vous me envoyez un e-mail lorsque vous rencontrez un problème, qui ne figure pas parmi ces limitations. Ce est le moyen le plus rapide pour obtenir votre programme a soutenu, depuis que je généralement ne résoudre les problèmes que je ne connais pas. Se il vous plaît laissez-le moi savoir aussi si vous voulez me mettre en œuvre certaines des appels de bibliothèque
Ce qui est nouveau dans cette version:.
- Évolutivité a de nouveau été grandement améliorée.
- Performance du fichier I / O et les nombres complexes été grandement amélioré.
- Trois nouveaux modules sont pris en charge.
- Six nouveaux programmes d'exemple ont été ajoutés.
- Il y avait beaucoup d'autres corrections de bogues et améliorations.
Ce qui est nouveau dans la version 0.8:
- Support a été ajouté pour le & quot; struct & quot; et & quot; éventail & quot; modules.
- Trois nouveaux exemples ont été ajoutés, pour un total de 57.
- L'exemple C64 a été mis à jour et est maintenant plus de 3000 lignes (sloccount).
- Une option a été ajoutée pour afficher tracebacks d'exception (shedskin -x).
- De nombreux bugs ont été corrigés.
Quoi de neuf dans la version 0.1:.
- Amélioration de soutien pour 'os' (UNIX)
- L'ajout d'un décodeur JPEG (1200 lignes) et d'autres programmes à l'ensemble des programmes d'exemple. corrections de module d'extension.
- Amélioration compilateur drapeaux sous OS X.
- Une importante correction d'inférence de types.
- Amélioration de surcharge variable.
- amélioration de fonderie.
- Correction pour les cas de setslice et delslice coin.
- xrange renvoie un objet xrange, pas iterator.
- Il ya plusieurs corrections de bugs mineurs.
Quoi de neuf dans la version 0.0.30:.
- défini par l'utilisateur un soutien de classe dans les modules d'extension
- ensemble la mise en œuvre très rapide (FFAO).
- le soutien de nombre complexe.
- De nombreuses améliorations de mise en forme de chaîne.
- Aucun mappe NULL au lieu de 0 et gravures que 'None'.
- re.match_object.group accepte plusieurs arguments.
- amélioration de fonderie.
- Héritage exceptions builtin autres que Exception.
- hachage Aucun devrait maintenant fonctionner.
- Une importante correction d'inférence de types, et bien d'autres corrections de bugs.
Ce qui est nouveau dans la version 0.0.29:.
- datetime et ConfigParser support
- staticmethod et décorateurs propriété.
- FreeBSD, OpenSolaris, et le support 64 bits.
- GCC 4.3 correctifs.
- Support pour les clés de cartographie ('% (clé) x ..'% de some_dict).
- Les améliorations apportées au mécanisme d'importation. __init__ est beaucoup moins d'un cas particulier maintenant.
- Beaucoup de correctifs pour appeler des méthodes ancestrales (par exemple Parent .__ init __).
- Tous les programmes d'exemple compilent maintenant comme modules d'extension.
- Il ya beaucoup de corrections de bogues.
Commentaires non trouvées