Papegoja | |
---|---|
Sorts | virtuell maskin |
Utvecklaren | Perl Foundation [d] |
Skrivet i | Xi |
Operativ system | Programvara för flera plattformar |
senaste versionen |
|
Licens |
Artistic License och GNU GPL (Engelsk) |
Hemsida | parrot.org |
Parrot ( papegoja eller papegoja ; från engelska parrot - parrot) är en virtuell maskin som används av tolkade språk för effektiv exekvering av bytekod. Namnet kommer från ett aprilskämt [3] när ett nytt språk tillkännagavs som kombinerade Perl och Python .
En viktig anledning till att utveckla den nya virtuella maskinen var skillnaden mellan språk med statiska och dynamiska datatyper. Dagens vanliga virtuella maskiner, som Java VM och .NET CLR , designades för språk med statiska datatyper, medan språken som Parrot strävar efter att stödja använder dynamiska typer. Den virtuella maskinen Parrot är baserad på användningen av register , inte stacken , eftersom detta enligt utvecklarna ökar hastigheten och bättre återspeglar strukturen hos moderna processorer.
Parrot var tänkt att vara grunden för Perl- tolken , såväl som målplattformen för att kompilera Perl 6 -kod . Förutom den implementerade delen av Perl 6 kan program på andra språk kompileras till bytekod, inklusive APL , BASIC , Befunge , Brainfuck , Cola , Forth , Jako , Lisp , m4 , Miniperl , Ook! , Parakeet , OpenComal , PHP , Plot , Pheme , Punie , Python , Ruby , Scheme , Span , Tcl , URM och YAL , men de flesta av implementeringarna av dessa språk för Parrot är ofullständiga och i ett experimentellt tillstånd.
2014, på grund av utvecklingsproblem med Parrot, släpptes MoarVM [4] som en alternativ virtuell maskinimplementering för Perl 6 .
Parrot är baserad på användningen av register , till skillnad från de flesta stackbaserade virtuella maskiner. Parrot tillhandahåller 4 typer av register:
Till och med version 0.3.0, brukade Parrot tillhandahålla program med 32 register av varje typ, med möjlighet att öka detta antal till 64. Senare versioner började ge ett obegränsat antal register; varje funktion kan begära så många register som den behöver.
Förutom bytekoden i sig har Parrot ett speciellt lågnivåspråk som kallas Parrot Assembly Language (PASM). Nedan är ett exempel på ett litet program på den:
ställ in I1, 4 # Skriv 4 för att registrera I1 inc I1 # Inkrement I1 lägg till I1, 2 # Lägg till 2 till I1; värdet i I1 blir 7 set N1, 42,0 # Skriv till N1 värdet 42,0 dec N1 # Minska N1, nytt värde blir 41,0 sub N1, 2.0 # N1 blir 39.0 print I1 # Skriv ut innehållet i I1 skriv ut ", " # Utdatasträng ", " print N1 # Skriv ut värdet på N1 skriv ut "\n" # Skriv ut nyradstecken slutetParrot kompilerar och körs på en mängd olika plattformar, inklusive alla de vanligaste, inklusive Linux ( x86 ), Cygwin , Win32 , Tru64 , OpenVMS (Alpha), Solaris ( Sparc ), FreeBSD (x86).
Perl | |
---|---|
människor |
|
Saker | |
Ramar |
|
|
Lua | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
PHP | |
---|---|
människor | |
Resurser |
|
Genomföranden | |
Ramar |
|
Testning |
|
ORM | |
ID | |
Kompilator | Phalanger |
verktygslåda | |
Kategori |