D'après ce que j'ai vu et lu sur les blogs, PyPy est un projet très ambitieux. Quels sont les avantages qu'il apportera à la table par rapport à ses frères et sœurs (CPython, Jython et IronPython)? Est-ce la vitesse, la compatibilité multiplateforme (y compris les plates-formes mobiles), la possibilité d'utiliser des extensions c sans le GIL, ou s'agit-il davantage d'un exercice technique sur ce qui peut être fait?
Réponses
Trop de publicités?PyPy est vraiment deux projets:
- Un interprète compilateur ensemble d'outils vous permettant d'écrire des interprètes dans RPython (statique sous-ensemble de Python) et avoir de la croix-plate-forme des interprètes compilé autonome, pour la JVM, pour .NET (etc)
- Une implémentation de Python dans RPython
Ces deux projets permettent beaucoup de choses.
- Le maintien de Python en Python est beaucoup plus facile que de le maintenir dans C
- À partir d'une seule base de code, vous pouvez générer des interpréteurs Python qui s'exécutent sur la machine virtuelle java .NET et autonome - plutôt que d'avoir de multiples légèrement incompatible implémentations
- Partie de le compilateur comprend un ensemble d'outils expérimentaux JIT générateur (maintenant dans sa cinquième incarnation et de commencer à travailler vraiment bien) - le but est pour un JITed PyPy de courir beaucoup plus vite que Disponible
- Il est beaucoup plus facile d'expérimenter avec le langage fondamental de fonctionnalités, comme la suppression de la GIL, une meilleure collecte des ordures, de l'intégration stackless et ainsi de suite
Donc il y a vraiment beaucoup de raisons pour PyPy être passionnant, et il commence enfin à vivre à la hauteur de ses promesses.
Ceci est un lien vers la présentation que l'un des auteurs de PyPy a donnée à PyCon 2009. Il est très instructif.
La caractéristique la plus importante est bien sûr le compilateur JIT. Dans Disponible, les fichiers sont compilés en bytecode (.pyc
) ou optimisé bytecode (.pyo
), puis interprété. Avec PyPy ils vont être compilé en code natif. PyPy comprend également Stackless Python patchs, dont c'est impressionnant de fonctionnalités (tasklet la sérialisation, la lumière threads, etc.)
Dans le cas où Python obtient un vrai JIT, je pense que ça va être aussi rapide que n'importe quelle autre implémentation.
L'avantage est qu'il est beaucoup plus facile d'implémenter de nouvelles fonctionnalités. On peut le voir aujourd'hui en observant la bibliothèque. Souvent, les modules sont d'abord écrits en Python, puis traduits en C.