Il linguaggio di programmazione GNU Guile 3.0.10 è ora disponibile

È stata pubblicata la versione GNU Guile 3.0.10, un'implementazione libera del linguaggio di programmazione funzionale Scheme, che supporta la possibilità di integrare codice in applicazioni scritte in altri linguaggi di programmazione. Guile può essere utilizzato come linguaggio per lo sviluppo di estensioni per applicazioni, definizione di configurazioni o sviluppo di componenti per collegare vari primitivi forniti dall'applicazione. Guile è il linguaggio ufficiale per lo sviluppo di estensioni del sistema operativo GNU.

Alla base di Guile c'è la macchina virtuale, che esegue un insieme di istruzioni portabili generato da un compilatore ottimizzante speciale. La macchina virtuale Guile si integra facilmente con il codice delle applicazioni scritte in C e C++. Oltre al linguaggio Scheme, per il quale è supportata la specifica R5RS, R6RS e R7RS, nel progetto Guile sono stati sviluppati compilatori anche per altri linguaggi come ECMAScript, Emacs Lisp e Lua (in fase di sviluppo). Il pacchetto include una libreria di moduli che implementano funzioni di servizio standard, come l'interazione con il protocollo HTTP, il parsing XML e l'uso di metodi di programmazione orientata agli oggetti.

Tra le novità della nuova versione:

  • È stata implementata un'interfaccia sperimentale per utilizzare backend di terze parti. Gli sviluppatori hanno la possibilità di utilizzare il frontend esistente, che trasforma il codice sorgente in una rappresentazione interna, e l'ottimizzatore Guile insieme ad altri backend che eseguono la generazione di codice.
  • È stato presentato un backend esterno hoot per la generazione di codice intermedio WebAssembly, che può essere eseguito nel browser. In futuro, non si esclude l'inclusione di WebAssembly tra gli obiettivi principali supportati per la compilazione in Guile.
  • È consentito l'uso delle definizioni «define» nel contesto delle espressioni «when», «unless», «cond», «case», «and-let*» e «with-fluids».
  • Aggiunta la supporto per il meccanismo delle porte personalizzate, descritto nel dialetto del linguaggio Scheme R6RS, che consente di collegare gestori per la trasformazione dei dati (ad esempio, compressione/decompressione o modifica della codifica dei caratteri), gestiti in funzioni come
    read, write e display. In Guile è anche proposto il modulo «(ice-9 soft-ports)», che fornisce un'interfaccia «soft port», posizionandosi come un'alternativa più semplice alle «porte personalizzate».
  • Aggiunta la supporto per una sintassi semplificata wisp, che consente di scrivere codice più leggibile, come ad esempio:

    define : factorial n
    if : zero? n
    . 1
    * n : factorial (- n 1)
    display : factorial 5
    newline

    invece di

    (define (factorial n)
    (if (zero? n)
    1
    (* n (factorial (- n 1)))))

    (display (factorial 5))
    (newline)

  • Nel compilatore è implementato un nuovo avviso, generato nel caso di importazione di moduli il cui codice non viene utilizzato.
  • Aggiunta una nuova annotazione «maybe-unused», che sopprime l'emissione di avvisi sull'uso non utilizzato delle procedure.
  • L'output della traccia dello stack di chiamate ora è troncato a 500 caratteri, anziché 80 (può essere modificato tramite il parametro default-frame-width).
  • Nella procedura «copy-file» è stato aggiunto il parametro «#:copy-on-write», che consente di utilizzare il meccanismo copy-on-write nei file system che lo supportano.
  • È stata aggiunta un'ottimizzazione che consente l'espansione inline delle chiamate di procedure con argomenti keyword.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster