tag near and perl jit vm-implementation parrot

perl - near - ¿Qué es exactamente Parrot?



tag and title near me (7)

Aquí está The Official Parrot Wiki .

Puede encontrar mucha información y enlaces allí.

La parte inferior de la página de inicio de Parrot wiki también muestra los últimos titulares del agregador de feeds Planet Parrot .

Además de la máquina virtual, el proyecto Parrot está construyendo una poderosa cadena de herramientas para facilitar el acceso a los idiomas existentes o el desarrollo de uno nuevo.

El Parrot VM también proporcionará otros idiomas bajo las cubiertas de soporte para muchas características nuevas y eficaces de Perl 6 (consulte la Wiki oficial de Perl 6 para obtener más información sobre Perl 6).

Parrot proporcionará interoperabilidad entre módulos de diferentes idiomas, de modo que, por ejemplo, otros idiomas pueden aprovechar lo que se convertirá en la gran versión Perl 6 de CPAN (el gran archivo de módulo Perl 5, al que Perl 6 podrá acceder a través de la próxima versión). Perl 5.12).

Entiendo que Parrot es una máquina virtual, pero siento que no estoy entendiendo completamente la idea detrás de eso.

Según tengo entendido, es una máquina virtual creada para manejar múltiples idiomas. ¿Es esto correcto?

¿Cuáles son las ventajas de usar una máquina virtual en lugar de solo un intérprete?

¿Qué está haciendo específicamente Parrot que lo hace tan importante?


Chris cubrió las diferencias de cara al usuario, así que cubriré el otro lado.

Parrot se basa en registros en lugar de en la pila. Lo que eso significa es que los desarrolladores de compiladores pueden optimizar más fácilmente la forma en que los registros deben asignarse para una pieza determinada de código. Además, la compilación desde el código de bytes Parrot hasta el código máquina puede, en teoría, ser más rápido que el código basado en la pila, ya que ejecutamos sistemas basados ​​en registro y tenemos mucha más experiencia de optimización para ellos.


Honestamente, no sabía que era tan importante. Ha recorrido un largo camino, pero no está viendo mucho uso. El principal idioma de destino todavía tiene que llegar realmente, y ha perdido una gran parte de la mente entre los profesionales de la industria. Mientras tanto, otras soluciones como .Net y proyectos como Jython nos muestran que el aquí y el ahora puede vencer cualquier expectativa.


Otros han dado excelentes respuestas, así que lo que me queda es explicar qué significan las lenguas "dinámicas".

En el contexto de una máquina virtual, significa que el tipo de una variable no se conoce en tiempo de compilación. En los lenguajes "estáticos", el tipo (o al menos una clase principal) se conoce en tiempo de compilación, y muchas optimizaciones se basan en ese conocimiento.

Por otro lado, en los lenguajes dinámicos, es posible que sepa si una variable contiene un tipo de contenedor (como una matriz) o escalar (cadena, número, ...), pero tiene mucha menos información de tipo en tiempo de compilación.

Otra característica es que los lenguajes dinámicos generalmente hacen que las conversiones de tipo sean mucho más fáciles, por ejemplo, en perl y javascript si utiliza una cadena como número, se convierte automáticamente en un número.

Parrot está diseñado para hacer que tales operaciones sean fáciles y rápidas, y para permitir optimizaciones sin saber tener información de tipo en tiempo de compilación.


Parrot es un intérprete de bytecode (posiblemente con un JIT en una etapa futura). Think Java y su máquina virtual, excepto que Java está (en este momento) más orientado a los lenguajes estáticos, y Parrot está orientado hacia los lenguajes dinámicos desde el principio.

¡También vea la excelente respuesta de Cody! Muy recomendable.


Parrot es una máquina virtual específicamente diseñada para manejar varios idiomas, especialmente los lenguajes dinámicos. A pesar de la tecnología interesante que implica, dado que puede manejar más de un idioma, podrá cruzar los límites del idioma. Por ejemplo, una vez que puede compilar Ruby, Perl y Python, debería ser fácil cruzar esos límites para permitirme usar una biblioteca de Ruby en Python, una biblioteca Perl de Python, así que cualquiera que sea la combinación que me guste.

Parrot comenzó en el mundo Perl y muchas de las personas que trabajan en él son personas experimentadas de Perl. En lugar de utilizar el intérprete actual de Perl, que muestra su edad, Parrot permite que Perl tenga características como módulos precompilados distribuibles (que todos los demás han tenido durante mucho tiempo) y un recolector de basura más inteligente.


  • Parrot será lo que Java pretendía pero nunca logró: un vm para todos los sistemas operativos y plataformas
  • Parrot implementará las ideas detrás del Common Language Runtime de Microsoft para cualquier lenguaje dinámico y verdaderamente multiplataforma
  • Además de todo, Parrot es y será libre y de código abierto
  • Parrot se convertirá en el estándar de facto para la programación de código abierto con lenguajes dinámicos