Otros han dado respuestas excelentes, entonces lo que me queda es explicar qué significan los lenguajes "dinámicos".
En el contexto de una máquina virtual, significa que no se conoce el tipo de una variable 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 idiomas dinámicos puede saber 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 tipos en tiempo de compilación.
Otra importación Un punto importante para mencionar es que Parrot está basado en el registro basado en la pila, a diferencia de la JVM y la CLR. Esto puede, en teoría, facilitar la optimización ya que tenemos mucha más experiencia con los sistemas basados en registros. –
Cody: Deberías publicar eso para que pueda hacer +1 en tu comentario. :-) –
En realidad, el loro ha tenido jit, para sistemas x86 al menos, desde hace un tiempo. –