• [^] # Re: IronPython

    Posté par (site web personnel) . En réponse à la dépêche Mono passe en version 1.2. Évalué à 10.

    J'avais fait pas mal de tests (en fait, j'ai juste lancé mon script de test, run_testcase.py) des différentes implémentations de Python : CPython, Stackless, pypy, IronPython et Jython. En bien, Stackless passe sans problème les tests : normal, c'est à 98% du CPython classique. pypy a eu besoin d'un petit patch dans une bibliothèque car le comportement était légèrement différent de CPython sur un point très précis (hum, je crois la gestion des charsets). Mais après avoir été patché, ben c'est passé nickel :-) Jython a besoin de gros patchs pour traduire le code en Python 2.3. Jython étant une implémentation ancienne et incomplète de Python. Pour finir, IronPython a eu besoin de quelques patchs mais finalement s'en est bien sorti.

    Je résume : CPython, Stackless, pypy et IronPython peuvent exécuter du Python 2.4 mais avec des adaptations mineures.

    Jython est un projet mort. Si je me trompe pas, IronPython est développé par l'auteur de Jython :-)

    --

    Par contre, pour la question : IronPython est-il une implémentation complète de Python 2.4 ? La réponse est clairement non. IronPython 1.0 n'avait ni le module md5 ni le module socket. Deux exemples de modules tout de même courant. Depuis, md5 a été implémenté en C#.

    Il faut savoir que beaucoup de code de CPython est codé en... C. pypy vise à tout recoder en Python. Ce travail profite aux autres implémentations car ils peuvent offrir ces modules en pur Python avant de réaliser une implémentation "optimisée" (en C# par exemple). Pour info, pypy peut aujourd'hui être convertit en C, puis le C est compilé.

    --

    Pour ceux que ça intéresse, je maintiens un fichier de compatibilité offrant quelques outils/classes Python 2.4/2.5 pour les anciennes implémentations (ça devrait passer en Python 1.5 :-)).
    http://hachoir.org/browser/hachoir/trunk/hachoir/compatibili(...)

    Quelques infos de la compatibilité de Hachoir aves les différentes implémentations :
    http://hachoir.org/wiki/Compatibility

    Haypo