Question

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 soeurs (CPython, Jython et IronPython)? S'agit-il de vitesse, de compatibilité entre plates-formes (y compris les plates-formes mobiles), de la possibilité d'utiliser des extensions C sans GIL, ou s'agit-il davantage d'un exercice technique sur ce qui peut être fait?

Était-ce utile?

La solution

PyPy est vraiment deux projets:

  • Une chaîne d'outils de compilation d'interpréteurs vous permettant d'écrire des interprètes dans RPython (un sous-ensemble statique de Python) et de disposer d'interprètes multiplateformes compilés de manière autonome, pour la JVM, pour .NET (etc.)
  • Une implémentation de Python dans RPython

Ces deux projets permettent beaucoup de choses.

  • Maintenir Python en Python est beaucoup plus facile que de le maintenir en C
  • À partir d'une seule base de code, vous pouvez générer des interpréteurs Python s'exécutant sur la machine virtuelle Java, .NET et de manière autonome - plutôt que de multiples implémentations légèrement incompatibles
  • Une partie de la chaîne d'outils du compilateur inclut un générateur expérimental JIT (maintenant dans sa cinquième incarnation et commence à très bien fonctionner) - l'objectif est qu'un JITed PyPy exécute beaucoup beaucoup plus rapide que CPython
  • Il est beaucoup plus facile d'expérimenter les fonctionnalités de base du langage - comme supprimer GIL, améliorer la collecte des ordures, intégrer sans pile, etc.

Il y a donc vraiment beaucoup de raisons pour que PyPy soit excitant, et il commence enfin à tenir toutes ses promesses.

Autres conseils

La caractéristique la plus importante est bien sûr le compilateur JIT. Dans CPython, les fichiers sont compilés en bytecode ( .pyc ) ou en octets optimisés ( .pyo ), puis interprétés. Avec PyPy, ils seront compilés en code natif. PyPy inclut également des correctifs Stackless Python , notamment ses impressionnants fonctionnalités (sérialisation des tasklets, threads légers, etc.)

Au cas où Python obtiendrait un JIT je pense que ça va aller être aussi rapide que toute 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.

  

compatibilité inter-plateformes

Oui

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top