Parrot virtual machine
Parrot virual machine software | |
---|---|
Genere | Macchina virtuale |
Sviluppatore | Comunità Parrot |
Data prima versione | 17 marzo 2019 |
Ultima versione | 8.1 (16 febbraio 2016 [1]) |
Sistema operativo | Multipiattaforma |
Linguaggio | C |
Licenza | Licenza Artistica 2.0 (licenza libera) |
Sito web | www.parrot.org. |
Parrot era un progetto open source volto a creare una macchina virtuale progettata specificamente per eseguire linguaggi di programmazione dinamici in modo efficiente. A differenza di molte altre macchine virtuali basate sullo stack, Parrot utilizzava un'architettura a registri, che offriva maggiore flessibilità e potenziali vantaggi in termini di prestazioni. Parrot compilava il codice sorgente dei linguaggi di programmazione in un bytecode intermedio (PIR), che veniva poi eseguito dalla macchina virtuale. Parrot era un software open source rilasciato sotto Licenza Artistica 2.0.[2]
Parrot è stato un progetto nato e sviluppato principalmente dalla comunità Perl ma che nel tempo ha saputo attrarre a sé molti altri sviluppatore della comunità open source. La Licenza Artistica 2.0 è stata adottata principalmente per ragioni legate alla necessità di bilanciare gli interessi degli autori con quelli della comunità di sviluppatori e utenti. La piattaforma era compatibile con un'ampia gamma di sistemi e con la maggior parte dei processori moderni. La sua flessibilità e le sue caratteristiche avanzate lo rendevano un'ottima scelta per linguaggi come Raku. Era però in grado di supportare altri linguaggi dinamici come Python, Ruby, PHP e molti altri.
La versione 1.0, con un'API (Application programming interface) stabile per lo sviluppo, è stata rilasciata il 17 marzo 2009.[3] L'ultima versione è la release 8.1.0 "Andean Parakeet".[4]
Parrot è stato ufficialmente interrotto nell'agosto 2021 [5], dopo essere stato soppiantato da MoarVM nel suo utilizzo principale (Raku) e non essere mai diventato una VM mainstream per nessuno degli altri linguaggi supportati.[6]
Linguaggi interni a Parrot
[modifica | modifica wikitesto]Esistono tre forme di codice programma in Parrot:
- Bytecode:[7] codice binario interpretato nativamente da Parrot. Il bytecode viene solitamente memorizzato in file con l'estensione del nome file ".pbc".
- Parrot Assembly Language (PASM): linguaggio di basso livello che veniva compilato in bytecode. Il codice PASM viene solitamente memorizzato in file con l'estensione del nome file ".pasm".
- Parrot intermediate representation (PIR): [8] PIR si colloca a un livello più alto rispetto a PASM, offrendo un'interfaccia più intuitiva e vicina a linguaggi di programmazione ad alto livello ed è più facile da leggere e comprendere rispetto al codice PASM. Anch'esso viene compilato in bytecode per essere eseguito. Il codice PIR viene solitamente memorizzato in file con l'estensione del nome file ".pir".
Esempi
[modifica | modifica wikitesto]Registri
[modifica | modifica wikitesto]Parrot è una macchina virtuale basata sui registri. Questo lo avvicina concettualmente al modello delle moderne CPU più che al modello delle virtual machine basate su stack. Parrot fornisce quattro tipi di registri:
- I: Tipo intero nativo
- N: Numeri in virgola mobile
- S: Registri tipo stringa avanzati con supporto Unicode
- P: PMC o contenitore polimorfico: tipo di oggetto Parrot
A differenza di molte altre architetture, Parrot non impone un numero fisso di registri che possono essere utilizzati in un programma ma sarà il compilatore ad assegnare un numero qualsiasi di registri a una subroutine, a seconda delle sue esigenze specifiche.
Operazioni aritmetiche
[modifica | modifica wikitesto]In PASM
set I1, 4
inc I1 # I1 is now 5
add I1, 2 # I1 is now 7
set N1, 42.0
dec N1 # N1 is now 41.0
sub N1, 2.0 # N1 is now 39.0
print I1
print ', '
print N1
print "\n"
end
In PIR
.sub 'main' :main
$I1 = 4
inc $I1 # $I1 is now 5
$I1 = 2 # $I1 is now 7
$N1 = 42.0
dec $N1 # $N1 is now 41.0
$N1 -= 2.0 # $N1 now 39.0
print $I1
print ', '
print $N1
print "\n"
.end
mod_parrot
[modifica | modifica wikitesto]mod_parrot è un modulo opzionale per il server web Apache che crea un ponte per la Parrot Virtual Machine (PVM) direttamente all'interno di un ambiente web. In questo modo il codice Parrot esegue le sue operazioni e genera la risposta HTTP che verrà inviata al client.
Voci correlate
[modifica | modifica wikitesto]Note
[modifica | modifica wikitesto]- ^ New supported release 8.1.0 "Andean Parakeet", su parrot.org, Parrot Foundation, 16 febbraio 2016. URL consultato il 26 settembre 2016.
- ^ (EN) Parrot License, su docs.parrot.org.
- ^ trac.parrot.org, https://trac.parrot.org/parrot/report/14 . URL consultato il 20 novembre 2008.
- ^ (EN) Parrot-8.1.0, su parrot.org.
- ^ (EN) Inctive Parrot, su parrot.org.
- ^ parrot.org, http://www.parrot.org/news/inactive-parrot .
- ^ The Parrot Bytecode (PBC) Format - parrotcode, su parrotcode.org. URL consultato il 15 luglio 2009 (archiviato dall'url originale il 24 dicembre 2008).
- ^ Parrot Intermediate Representation, su docs.parrot.org (archiviato dall'url originale il 20 luglio 2009).
Collegamenti esterni
[modifica | modifica wikitesto]- Sito ufficiale, su parrot.org.
- Perl 6 and Parrot links.