Parrot

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.

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à de petits langages sont supportés par Parrot et permettent de tester ses capacités.

Parrot utilise des techniques éprouvées mais peu répandues en dehors du monde Lisp telles que le COW, 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.

Parrot comprend actuellement deux macro-assembleurs: PASM et IMCC. Ces Assembleurss sont partiellement orientés objet pour permettre de supporter nativement un nombre indéfini de types.

IMMC 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.

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 supporte dynamiquement et de manière efficiente de nouveaux types grâce aux PMC (Parrot Magic Cookies). Lorsqu'on crée un type nouveau que l'on veut implémentér en C, on implémente les méthodes supportées par l'interface PMC nécessaire pour ce type. 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.

Exemples

Opérations artihmé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

Liens externes