Parrot ist eine Open-Source Virtuelle Maschine, welche auf Sprachunabhängigkeit ausgelegt ist. Das heißt, es ist möglich, in beliebigen Sprachen für Parrot zu programmieren.
Parrot befindet sich seit mehreren Jahren in aktiver Entwicklung. Die aktuelle Version ist 0.5.0 "Caulked Snack", welche am 20. November 2007 freigegeben wurde.
Die Architektur von Parrot wurde so entwickelt, dass es möglich ist, Parrot mit beliebigen Sprachen benutzen zu können. Hierfür muß "nur" ein Übersetzer für eine Hochsprache geschrieben werden, welcher diese in den Bytecode von Parrot übersetzt.
Parrot ist, im Gegensatz zur JavaVM, eine registerbasierte VM. Dem Programmierer stehen je 32 Register von verschiedenen Typen zur Verfügung. Man erhofft sich dadurch eine bessere Performanz, da dies reellen Prozessoren ähnelt.
Zur Performanz beitragen soll auch der "Just-In-Time-Compiler". Dieser übersetzt den Bytecode zur Laufzeit in nativen Maschinencode.
Natürlich bietet Parrot auch die Eigenschaften moderner VMs wie Objektorientierung, Exceptions Garbage-Collection und Threads.
Natürlich fragt man sich, wo die Motivation hinter Parrot liegt. Aktuelle VMs wie die JavaVM und die CLR sind auf statische Typisierung ausgelegt. Parrot hingegen ist für Sprachen mit dynamischer Typisierung optimiert und kann diese auch schneller ausführen.
Parrot ist außerdem dafür ausgelegt mehrere Sprachen (über den Bytecode) mischen zu können. Dies ist mit der JavaVM nur eingeschränkt möglich. Dies ist zwar mit der .NET-Platform von Microsoft möglich, jedoch ist Parrot freie Software.
Erstellt von Johannes Barop