Fiche technique | |
---|---|
Type de produit : | Langage de programmation |
Auteur : | Armin Rigo (Python Software Foundation) |
Système d'exploitation : | Windows, Linux, macOS |
Date de publication : | 2007 à maintenant |
Licence : | MIT |
Site Web : | https://pypy.org/ |
Introduction
Le langage de programmation PyPy est un compilateur de langage de programmation Python écrit lui-même en Python. Ainsi, un programme écrit en Python devrait donc fonctionner normalement avec PyPy, bien qu'il ne recommande pas son utilisation pour la production. Il se distingue depuis la version 1.2 de 2000, par le fait que les performances sont meilleures que le CPython. L'un des développeurs clefs de ce projet fut Armin Rigo.
Le PyPy est une implémentation alternative de Python se distinguant par son utilisation d'un compilateur Just-In-Time (JIT), permettant ainsi d'améliorer significativement les performances d'exécution des programmes Python. Contrairement à l'implémentation standard de Python, appelée CPython, PyPy se concentre sur l'optimisation dynamique du code Python, en particulier pour les programmes longs ou intensifs en calcul.
Voici les caractéristiques principales de PyPy :
- Compilateur Just-In-Time (JIT) :
- PyPy utilise un compilateur JIT analysant et optimisant le code à la volée. Cela signifie qu'au lieu de simplement interpréter le code Python ligne par ligne (comme le fait CPython), PyPy compile et optimise certaines parties du code pendant l'exécution, ce qui peut améliorer les performances de manière significative pour certains types d'applications.
- En particulier, les programmes effectuant des calculs intensifs ou exécutant des boucles répétitives bénéficient le plus du JIT.
- Compatibilité avec Python :
- PyPy est hautement compatible avec la version standard de Python (CPython). Il prend en charge les versions de Python 2.7, 3.6, 3.7, 3.8, et 3.9 (selon la version de PyPy utilisée), et il est capable d'exécuter la plupart des programmes Python sans modification.
- Il prend également en charge la majorité des bibliothèques Python populaires, en particulier celles écrites en pur Python.
- Gestion de la mémoire : PyPy dispose d'un ramasse-miettes plus avancé que CPython, ce qui lui permet de gérer plus efficacement la mémoire, en particulier dans les programmes nécessitant une gestion intensive des objets.
- Performance : Dans de nombreux cas, PyPy est plus rapide que CPython (souvent de 4 à 10 fois plus rapide selon le type d'application). Cependant, les gains réels dépendent de la nature du programme : les applications avec beaucoup de calculs répétitifs ou des boucles complexes bénéficient grandement du JIT, tandis que les scripts plus simples peuvent voir peu d'améliorations.
- Support des extensions C : L'un des défis historiques de PyPy a été la compatibilité avec les extensions C utilisées par de nombreuses bibliothèques Python (comme NumPy). Bien que PyPy ait fait des progrès significatifs dans la prise en charge de ces extensions, certaines bibliothèques C peuvent encore nécessiter des ajustements spécifiques.
- Projet RPython : PyPy est construit à l'aide d'un sous-ensemble de Python appelé RPython (Restricted Python), étant utilisé pour implémenter l'interpréteur de PyPy. RPython est un langage de programmation statiquement typé permettant de générer des interpréteurs optimisés pour différents langages.