Question

Parrot est la machine virtuelle initialement conçue pour Perl 6.

Quelles fonctionnalités techniques la machine virtuelle Parrot offre-t-elle aux machines virtuelles concurrentes telles que la machine virtuelle Java (JVM) / VM Hotspot et Common Language Runtime (CLR) manquant?

Était-ce utile?

La solution

La réponse suivante a été écrite en 2009. Voir aussi cette mise à jour 2015 par raiph .

Pour développer @Reed et souligner quelques points forts, les opcodes de Parrot sont bien plus avancés que la plupart des machines virtuelles. Par exemple, alors que la plupart des machines stockent des entiers et des flottants, les registres de base sont des entiers, des nombres, des chaînes et des cookies Parrot Magic (PMC). Le simple fait d’avoir des chaînes intégrées est une étape supplémentaire de la JVM.

Plus intéressant est le PMC, un peu comme le type d’objet de la JVM mais beaucoup plus fongible. Les PMC sont un conteneur pour tous les autres types plus complexes dont vous avez besoin dans un vrai langage comme les tableaux, les tables, les arbres, les itérateurs, les E / S, etc. Le PMC et la grande variété d'opérations intégrées impliquent moins de travail pour l'écrivain. Parrot n'hésite pas à mettre en œuvre un langage compliqué mais nécessaire.

Mes informations sont peut-être obsolètes, mais je crois que les opcodes sont enfichables. Vous pouvez expédier une machine virtuelle Parrot contenant uniquement les opcodes dont votre langue a besoin. Ils allaient également pouvoir être hérités, si votre langue souhaitait que leurs tableaux fonctionnent un peu différemment des tableaux stock Parrot, vous pouvez le sous-classer.

Enfin, Parrot peut être écrit non seulement pour l'assembleur ( PASM ), mais Il s'agit également d'un langage de niveau légèrement supérieur, Représentation intermédiaire de Parrot (PIR) . PIR a des boucles, des sous-programmes, des variables localisées et quelques opérations de base de calcul et de comparaison, toutes les bases que les gens attendent dans un langage de programmation, sans s’éloigner trop du métal.

Dans l’ensemble, Parrot est très sympathique avec les concepteurs de langage (écrit par et pour eux) qui souhaitent concevoir un langage et laisser le plus possible la mise en œuvre possible à quelqu'un d’autre.

Autres conseils

Vous pouvez lire beaucoup de ces informations sur le Parrot VM Intro page.

Le principal avantage de Parrot par rapport à la JVM ou au CLR est qu’il est conçu pour prendre en charge d’abord les langages dynamiques et potentiellement offrir un meilleur support et de meilleures performances pour les langages à typage dynamique. La JVM et le CLR sont tous deux davantage axés sur la prise en charge des langages à typage statique, et de nombreuses décisions en matière de conception le prouvent.

Une autre chose qui distingue Parrot de la plupart des machines virtuelles (certainement de la machine virtuelle), c’est qu’il s’agit d’une machine de registre plutôt que d’une machine à pile. Mais je pense que les gens se demanderont pendant longtemps si on peut appeler cela un avantage ou un inconvénient.

Je ne connais pas suffisamment la JVM et le CLR, mais mes conseils:

  • langages dynamiques (fermetures, scalaires polymorphes, suites, co-routines) support (rapidité)
  • envoi de méthode dynamique,
  • fonctions de première classe,
  • suites de première classe,
  • paramètres (facultatif, nommé, ..),
  • base de registre
  • a une interopérabilité HLL fournie au niveau de l’assemblage
  • gamme de plates-formes

Mise à jour: Cela n’est probablement pas pertinent car la machine virtuelle Java est l’un des moteurs de Rakudo Perl 6 de nos jours. Voir Rakudo Perl 6 sur la JVM (calendrier de l'avent Perl 6 2013, jour 3).

  

Parrot est la machine virtuelle initialement conçue pour Perl 6.

Il existe maintenant deux machines virtuelles conçues à l’origine pour Perl 6; La validation de MoarVM a commencé en 2012.

  

Quelles fonctionnalités techniques la machine virtuelle Parrot offre-t-elle aux machines virtuelles concurrentes telles que la machine virtuelle Java (JVM) / Hotspot VM et le CLR (Common Language Runtime)?

Dans une autre réponse sur cette page , Reini Urban, l'actuel responsable du développement Parrot (avril 2015), fournit une brève comparaison de Parrot avec les machines virtuelles JVM et CLR.

Selon Reini , un avantage essentiel de Parrot sur MoarVM est "effectivement des threads sans verrouillage".

Le principal avantage et la différence technique par rapport à la JVM et au CLR est que les types ( classes appelés PMC) et ops ( méthodes ) peuvent être chargés dynamiquement à partir d'utilisateurs efficaces. implémentations C fournies, et le cadre d'analyse syntaxique permettant de créer et d'étendre des langues est intégré.

Cette question est obsolète. Rakudo Perl 6 ne cible plus Parrot comme back-end; MoarVM est le backend préféré, le backend JVM étant un travail en cours (fonctionne généralement, mais de nombreuses fonctionnalités de Perl 6 non implémentées ou actuellement en panne). Un travail de développement (non prêt pour les utilisateurs) est en cours d’ajout de Javascript en tant que troisième serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top