Vai al contenuto

Parrot virtual machine

Da Wikipedia, l'enciclopedia libera.
Parrot virual machine
software
GenereMacchina virtuale
SviluppatoreComunità Parrot
Data prima versione17 marzo 2019
Ultima versione8.1 (16 febbraio 2016 [1])
Sistema operativoMultipiattaforma
LinguaggioC
LicenzaLicenza 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".

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 è 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]
  1. ^ New supported release 8.1.0 "Andean Parakeet", su parrot.org, Parrot Foundation, 16 febbraio 2016. URL consultato il 26 settembre 2016.
  2. ^ (EN) Parrot License, su docs.parrot.org.
  3. ^ trac.parrot.org, https://trac.parrot.org/parrot/report/14. URL consultato il 20 novembre 2008.
  4. ^ (EN) Parrot-8.1.0, su parrot.org.
  5. ^ (EN) Inctive Parrot, su parrot.org.
  6. ^ parrot.org, http://www.parrot.org/news/inactive-parrot.
  7. ^ The Parrot Bytecode (PBC) Format - parrotcode, su parrotcode.org. URL consultato il 15 luglio 2009 (archiviato dall'url originale il 24 dicembre 2008).
  8. ^ Parrot Intermediate Representation, su docs.parrot.org (archiviato dall'url originale il 20 luglio 2009).

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero