Autor | Parrot Foundation |
---|---|
Aktualna wersja stabilna | 8.1.0 – 16 lutego 2016; ponad 8 lat temu[1] |
Platforma sprzętowa | wieloplatformowość |
System operacyjny | wieloplatformowość |
Rodzaj | maszyna wirtualna |
Licencja | Licencja Artystyczna |
Strona internetowa |
Parrot – maszyna wirtualna przeznaczona do języków dynamicznie typowanych, takich jak Perl, Ruby i Python.
Nazwa Parrot pochodzi od primaaprilisowego żartu Simona Cozensa, który w 2001 roku napisał artykuł Programming Parrot na Perl.com (O'Reilly Network), pisząc o tym, iż Larry Wall i Guido van Rossum planują rzekomo połączenie języków Perl i Python[2]. Wbrew burzy negatywnych komentarzy, jakie wówczas wywołał, żart ów – jak się później okazało – zawierał więcej prawdy, niż ktokolwiek mógł wtedy sądzić.
Projekt Parrot powstał na listach dyskusyjnych Perla jako maszyna wirtualna przeznaczona dla Perla 6 (do dziś lista dyskusyjna projektu Parrot nosi nazwę perl6-internals, lecz wkrótce zmieniona zostanie na parrot-internals, pozostając jednak na serwerach perl.org), jednak prawdopodobnie wcześniej będzie można wykonywać za jej pomocą programy w języku Python lub Perl 5 (projekt Pony) niż Perl 6 (projekt Rakudo). Poza nimi trwają już prace nad wykorzystaniem projektu Parrot dla języków BASIC, Befunge, Brainfuck, Cola, Forth, Jako, m4, Miniperl, Ook, OpenComal, PHP, Plot, Ruby, Scheme, Tcl, URM, LOLCODE i YAL. Wewnętrznymi językami dla projektu Parrot są PASM i IMC (PIR).
Duże zainteresowanie projektem przejawiają środowiska związane z Ruby, podczas gdy twórcy Pythona są bardziej zainteresowani pracami nad własnym projektem PyPy.
Parrot jest maszyną rejestrową z operacjami wysokiego poziomu, takimi jak (podobnie jak aktualny kod bajtowy Perla) operacje na całych łańcuchach.
Parrot ma po 32 rejestry czterech typów:
W przeciwieństwie do kodu bajtowego Perla, natywne perlowe typy (skalar, tablica, hasz i inne) są tu traktowane jako obiekty, a maszyna wirtualna operuje na znacznie prostszych typach.