Timeline
Chat
Prospettiva

Parrot virtual machine

Da Wikipedia, l'enciclopedia libera

Remove ads

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]

Fatti in breve Parrot virual machine software, Genere ...

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]

Remove ads

Linguaggi interni a Parrot

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 ".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 ".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 ".pir".
Remove ads

Esempi

Registri

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

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
Remove ads

mod_parrot

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

Note

Collegamenti esterni

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads