PyPy

Un article de Wikipédia, l'encyclopédie libre.

PyPy est une mise en oeuvre du langage Python écrite elle-même en Python, flexible et facile pour expérimenter.

Sommaire

[modifier] PyPy

En permettant aux développeurs de Python de jouer avec l'implémentation de Python en Python lui-même (plutôt qu'en C), PyPy facilite l'identification des zones où l'implémentation de Python peut être améliorée. Il permet également aux développeurs d'expérimenter avec de multiples implémentations de fonctions spécifiques. Un des buts du projet est de générer une implémentation Python optimisée à partir de PyPy qui tournera plus rapidement que l'implémentation en C actuelle (CPython),[1] bien que ce but ne soit pas encore atteint.

Il faut noter que PyPy est principalement un projet de recherche et développement et ne se focalise pas en lui-même sur obtenir une implémentation de Python prête pour la production, pour le moment.

PyPy est constitué de deux composants principaux :

  • l'interpréteur standard, qui est une implémentation de l'interpréteur Python en un sous-ensemble restreint de Python
  • une chaine d'outils qui analyse ce sous-ensemble de Python (RPython) et le traduit en un langage bas niveau tel que C

Un des développeurs principaux de PyPy est Armin Rigo, qui a développé Psyco, un compileur just-in-time spécialisé pour Python qui accélère le code Python de 4 à 100 fois presque sans intervention de l'utilisateur.

PyPy s'inspire du langage Oz pour l'utilisation d'espace d'objets. Cela permet de combiner les aspects orientation objet et mutabilité, concurrence et distribution, etc. dans le même langage.

Pour la gestion de la mémoire (ramasse-miettes), on a le choix entre 3 sous-systèmes différents :

  • boehm : ramasse miettes « Boehm-Demers-Weiser[2] »
  • ref : compteur de reférence implémenté en RPython
  • framework / stacklessgc : implémentation en RPython d'un ramasse miettes avec collecteur « mark and sweep »

La traduction de l'interpréteur PyPy écrit en RPython peut se faire dans différents langages :

[modifier] Paradigmes de programmation

Un autre objectif de PyPy est d'étendre Python à d'autres paradigmes de programmation, en particulier :

[modifier] RPython

Le langage RPython est un sous-ensemble du langage Python qui a comme principales contraintes :

  • Une variable ne peut contenir qu'un seul type de valeur (on ne pas stocker un entier puis une chaîne de caractères dans la même variable) ;
  • Les variables globales d'un module sont considérées comme constantes ;
  • La définition dynamique de classe ou de fonction n'est pas supportée ;
  • Les générateurs ne sont pas supportés ;
  • Les méthodes et les autres attributs d'une classe ne changent pas durant l'exécution ;
  • La clé d'un dictionnaire ne peut être que d'un seul type (hashable).

[modifier] Références

  1. Jacob Hallén, « PyPy - an implementation of Python in Python », March 2004
  2. Ramasse miettes Boehm-Demers-Weiser

[modifier] Voir aussi

[modifier] Articles connexes

[modifier] Liens externes