PyPy

PyPy

PyPy est une mise en œuvre du langage Python écrite elle-même en Python, avec une architecture flexible.

Sommaire

Le projet

Un des buts du projet est d'obtenir une version de Python plus rapide que l'implémentation en C actuelle (CPython)[1], ce but est atteint depuis la version 1.2[2].

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.

Historique

Un des développeurs principaux de PyPy est Armin Rigo, qui a développé Psyco, un compilateur à la volée 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.

PyPy

PyPy est constitué de deux composants principaux :

  • un interpréteur Python, écrit lui-même en un sous-ensemble restreint de Python
  • une chaîne d'outils qui analyse ce sous-ensemble de Python (RPython), le traduit en un langage bas niveau tel que C et le compile.

Ces deux composants sont indépendants : l'interpréteur Python peut lui-même s'exécuter au sein d'un autre interpréteur Python existant, et la chaîne de traduction peut s'appliquer à tout programme écrit en RPython.

Implémentation de Python

L'interpréteur Python de PyPy, tel que proposé par la version 1.6, est semblable à une version Python 2.7.1.

Différences avec le Python standard

PyPy s'approche le plus possible de l'interpréteur standard, avec quelques différences[3] :

  • Par défaut, PyPy utilise un ramasse-miettes automatique, différent du comptage de références ; il est plus performant, mais certaines ressources peuvent être libérées plus tard que d'habitude.
  • Quelques modules n'ont pas été portés, en particulier ceux dont le code d'origine est le C.
  • L'interface de programmation en C n'est pas encore considérée comme assez stable par ses développeurs.

Le langage RPython

RPython (R pour "Restreint") se définit à partir du langage Python, en deux phases successives:

  • La phase d'initialisation consiste à importer le code avec un interpréteur Python standard, et autorise toutes les méthodes de développement, y compris la méta-programmation et la génération dynamique de fonctions et de classes.
  • La phase d'analyse part des fonctions et classes présentes en mémoire, et leur impose certaines restrictions.

Les contraintes principales des objets analysés sont :

  • Une variable ne peut contenir qu'un seul type de valeur (on ne peut 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).

La chaîne d'analyse et de traduction

Parce qu'il est écrit dans un langage dynamique, PyPy facilite la séparation des différents aspects d'un interpréteur, et permet 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.

Aspects paramétrables

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[4] »
  • ref : compteur de réfé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 :

Références

Voir aussi

Articles connexes

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article PyPy de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • PyPy — Тип Интерпретатор и компилятор Python Написана на Python Операционная система Кроссплатформенный Последняя версия 1.9 (8 июня 201 …   Википедия

  • PyPy — Entwickler Armin Rigo, Samuele Pedroni, Christian Tismer, Holger Krekel u. a. Aktuelle Version 1.6 (19. August 2011) Betriebssystem Windows, Mac OS X, Linux, u. v. m. Kategorie …   Deutsch Wikipedia

  • PyPy — Saltar a navegación, búsqueda PyPy Desarrollador Proyecto PyPy Sitio Oficial …   Wikipedia Español

  • PyPy — Infobox Software name = PyPy caption = developer = programming language = Python latest release version = 1.0 latest release date = March 27, 2007 operating system = Cross platform genre = Python interpreter and compiler toolchain license = MIT… …   Wikipedia

  • pypynė — pypỹnė sf. (2), pỹpynė (1) NdŽ, pypìnė (2) [K]; N, pipỹnė (2) BŽ504,605 1. SD251, P, D.Pošk dūdelė, švilpynė: Pypynė (orig. pipine), kurią skersai nasrump pridėtą pučia SD53. Kokia te jo dūdelė: pasdarė pypynę ir birbia Trgn. Turėjo… …   Dictionary of the Lithuanian Language

  • pypytiniai — sm. pl. (1) NdŽ; LBŽ, P.Snar bot. tokia augalų šeima (Cannaceae) …   Dictionary of the Lithuanian Language

  • pypytė — sf. (1) NdŽ; P, EncIV1380 bot. pypytinių šeimos augalas (Canna): Indijinė (indinė NdŽ) pypytė (darželiuose auginamas iš Vidurio Amerikos kilęs dekoratyvinis augalas; C. indica) LBŽ …   Dictionary of the Lithuanian Language

  • Пайтон — Python Класс языка: функциональный, объектно ориентированный, императивный, аспектно ориентированный Тип исполнения: интерпретация байт кода, компиляция в MSIL, компиляция в байт код Java Появился в: 1990 г …   Википедия

  • Python — У этого термина существуют и другие значения, см. Python (значения). Python Класс языка: му …   Википедия

  • Python (programming language) — infobox programming language name = Python paradigm = multi paradigm: object oriented, imperative, functional year = 1991 designer = Guido van Rossum developer = Python Software Foundation latest release version = 2.6 latest release date =… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”