Что такое Parrot

Perl 6 идеологически отличается от предыдущих версий. Вместо того, чтобы сразу пуститься в разбор и исполнение кода, вначале инициативу берет компилятор, который преобразует perl-программу в байт-код, а уже затем виртуальная машина parrot выполняет байт-код.

Кстати, теперь есть смысл называть код на Perl не скриптом, а программой — точно так же, как называют программой код на C++. Отличие только в том, что на выходе получается байт-код — машинный код виртуальной машины.

Замечание по поводу эффективности. Я уже столкнулся с мнением о том, что подобное изощренное обращение с исходным кодом резко отражается на эффективности. Ничего подобного. Традиционное выполнение perl-скрипта (Perl 5) не дает никаких гарантий о том, будет ли промежуточный код кэширован или нет, из-за чего при выполнении всегда следует ожидать полного цикла. С программой на Perl 6 все более предсказуемо: ее всегда можно скомпилировать в байт-код и пользоваться только им, а исходный текст оставить в своих архивах. Не имеет никакого значения, что теперь код будет исполнять программа parrot, а не perl — это никак не сказывается на удобстве работы с программой и никак не давит на программиста: он точно так же пишет на Perl’е. В некотором смысле можно считать, что сбылась мечта тех, кто хотел получить exe-файл из скрипта на Perl.