Parrot (machine virtuelle)

Parrot (machine virtuelle)
Page d'aide sur l'homonymie Pour les articles homonymes, voir Parrot.
Parrot
Importez le logo de ce logiciel
Développeur Fondation Perl
Dernière version 3.9.0 (19 octobre 2011) [+/-]
Environnement GNU/Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, MS Windows, UNIX
Type Machine virtuelle
Licence Artistic License
Site web (en) Site officiel

Parrot est une machine virtuelle à base de registres développée par la communauté Perl. Parrot sera la cible de l'interpréteur de Perl 6 en cours de spécification. La plupart des autres machines virtuelles sont à base de piles. Les développeurs de Parrot considèrent comme un avantage la ressemblance avec l'architecture des processeurs actuels. Cela permettra d'utiliser la littérature sur ce sujet pour le développement de la machine virtuelle Parrot. Parrot est aussi destiné à supporter d'autres langages dynamiques tels que Ruby, Python, Tcl ou JavaScript.

Conformément à la tradition de cette communauté, Parrot est un logiciel libre distribué sous licence artistique (Perl) et sur de nombreuses plates-formes logicielles, parmi lesquelles GNU/Linux.

Sommaire

Historique

Le projet a commencé comme un poisson d'avril. Simon Cozens a annoncé que Larry Wall et Guido van Rossum (les auteurs respectifs de Perl et de Python) unifiaient leurs efforts pour créer Parrot un langage synthèse de Perl et de Python. Ce nom fut ensuite adopté pour un projet au but similaire. Déjà, des petits langages sont supportés par Parrot et permettent de tester ses capacités.

Il est probable que Parrot vient du Sketch "Dead Parrot" des "Monty Python" (Comme le langage)

Techniques

Parrot utilise des techniques éprouvées mais peu répandues en dehors du monde Lisp telles que le COW (ou Copy-On-Write), les continuations. Le Copy-On-Write, c’est-à-dire copie sur écriture, permet de partager la mémoire d'objets différents tant qu'ils gardent la même valeur.

Extensibilité

Parrot est conçu pour être extensible et pour être la cible de divers langages. On peut inclure l'interpréteur Parrot dans du code C. On peut appeler du code C de l'interpréteur. On pourra étendre dynamiquement les opérateurs. Parrot supportera l'objet.

Parrot Polymorphic Containers

Parrot supporte dynamiquement et de manière efficace de nouveaux types grâce aux PMC (Parrot Polymorphic Containers). Lorsqu'on crée un type nouveau que l'on veut implémenter en C, on implémente les méthodes nécessaire pour ce type supportées par l'interface PMC. Certaines méthodes ont un nom et interface prédéfini. Elles sont accessibles rapidement car le PMC se comporte alors comme une vtable à la C++. Mais un PMC peut avoir des méthodes qui lui sont propres et définir des attributs. Chaque instance d'un PMC contiendra lesdits attributs. Il ne faut pas confondre les PMC avec le support objet de plus haut niveau dont l'implémentation sera spécifique à tel ou tel langage utilisant Parrot mais qui utilisera des PMC prédéfinis par Parrot ou chargés dynamiquement.

Assembleurs

Parrot comprend actuellement deux assembleurs : PASM (Parrot ASseMbly - Assembleur Parrot) et PIR (Parrot Intermediate Representation - Représentation Intermédiaire Parrot). Ces assembleurs sont partiellement orientés objet pour permettre de supporter nativement un nombre indéfini de types. Historiquement, le premier assembleur sur Parrot, PASM est destiné à terme à devenir une représentation lisible du format binaire PBC (Parrot Bytecode). PIR, un macro assembleur est l'assembleur de choix.

PIR est de plus haut niveau que PASM car il expose la fiction d'un nombre illimité de registres soulageant le programmeur qui n'a plus à associer manuellement variables et registres. Les registres peuvent être de type entier, numérique, chaîne de caractères ou PMC.

Exemples

Opérations arithmétiques:

set I1, 10
inc I1        # I1 is now 11
inc I1, 2     # I1 is now 13
set N1, 42.0
dec N1        # N1 is now 41.0
dec N1, 2.0   # N1 is now 39.0
print I1
print ", "
print N1
print "\
"
end

Chaîne de compilation

Parrot supporte une chaîne de compilation assez complète. La classe HLLCompiler pilote cette compilation. Le programmeur peut définir les passes de la compilation. Une passe peut être appelée plusieurs fois de manière consécutive.

Passes typiques de compilations

Patrick Michaud a écrit un moteur d'analyse syntaxique appelé PGE (Parrot/Perl Grammar Engine) qui implante l'essentiel des règles Perl 6 telles que spécifiées dans le synopsis 6. PGE génère typiquement un arbre syntaxique en format PAST (Parrot Abstract Syntax Tree). Cet arbre sera typiquement transformé par TGE (Tree Grammar Engine), outil de manipulation d'arbre. Finalement du code PIR sera émis.

Voir aussi

Articles connexes

  • Perl 6 : le langage pour lequel Parrot est développé.
  • PGE : le moteur d'analyse de grammaire de Parrot.
  • Pugs, une implantation de Perl 6 en Haskell.
  • Rakudo, le compilateur Perl 6 (en cours de développement).
  • NQP, le compilateur de bootstrap de Rakudo.
  • The Perl Foundation : La fondation en charge de la promotion et du développement de Perl.

Liens externes


Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Machine Virtuelle — Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Machine virtuelle (informatique) — Machine virtuelle Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Machine virtuelle — Pour les articles homonymes, voir VM. machine virtuelle des assistants personnels Palm En informatique, une machine virtuelle (anglais virtual machine, abr. VM …   Wikipédia en Français

  • Parrot virtual machine — Parrot Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.  Pour l’article homophone, voir Parot. Sommaire 1 …   Wikipédia en Français

  • Parrot — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.  Pour l’article homophone, voir Parot. Sommaire 1 …   Wikipédia en Français

  • Parrot — ● np. m. ►PERL Runtime de Perl, pour la version 6. En fait, c est une machine virtuelle, que ses concepteurs veulent ouvertes à d autres langages …   Dictionnaire d'informatique francophone

  • Parrot VM — Parrot Logo Parrot ist eine in Entwicklung befindliche registerbasierte virtuelle Maschine, die vor allem auf die Bedürfnisse dynamischer Programmiersprachen wie Perl oder Python ausgerichtet ist. Parrot wurde von Dan Sugalski vor allem als… …   Deutsch Wikipedia

  • Virtuelle Maschine — in VirtualBox Eine virtuelle Maschine, kurz VM, ist ein virtueller Computer. Eine solche Maschine besteht nicht aus Hardware, sondern aus Software. Auf einem physischen Computer können gleichzeitig mehrere virtuelle Maschinen betrieben werden.… …   Deutsch Wikipedia

  • Virtual Machine — Machine virtuelle Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Virtual Machine — virtuelle Maschine in VirtualBox Eine virtuelle Maschine, kurz VM, ist ein virtueller Computer. Auf einem realen Computer können gleichzeitig mehrere virtuelle Maschinen betrieben werden. Virtuelle Maschinen werden als Betriebssystem ausgeführt,… …   Deutsch Wikipedia

Share the article and excerpts

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