GNU Guile 3.0 è stato rilasciato

ha avuto luogo rilasciare GNU Guile 3.0, un'implementazione gratuita di un linguaggio di programmazione funzionale schema, che supporta la capacità di incorporare codice in applicazioni in altri linguaggi di programmazione. Guile può essere utilizzato come linguaggio per sviluppare estensioni dell'applicazione, definire la configurazione o sviluppare componenti per connettere le varie primitive fornite dall'applicazione. Guile è il linguaggio ufficiale di sviluppo delle estensioni per il sistema operativo GNU.

Al centro di Guile c'è un'efficiente macchina virtuale che esegue un set portatile di istruzioni generate da uno speciale compilatore di ottimizzazione. La macchina virtuale Guile si integra facilmente con il codice dell'applicazione in C e C++. Oltre al linguaggio Scheme, per il quale è implementato il supporto delle specifiche R5RS, R6RS и R7RS, il progetto Guile ha sviluppato compilatori 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 il lavoro con il protocollo HTTP, l'analisi XML e l'uso di metodi di programmazione orientati agli oggetti.

L'innovazione chiave in GNU Guile 3.0 è stata l'introduzione di un compilatore JIT, oltre all'interprete e al compilatore bytecode precedentemente offerti, eseguito in una speciale macchina virtuale collegata all'applicazione sotto forma di libreria. JIT ti consente di generare codice macchina al volo e accelera significativamente l'esecuzione delle applicazioni Guile (i test mostrano un aumento della velocità fino a 4 volte). Il compilatore JIT supporta le architetture x86-64, i686, ARMv7 e AArch64.

Alcuni altri miglioramenti:

  • Supporto per la nuova specifica del linguaggio Scheme R7RS e i moduli della libreria definiti in esso;
  • La macchina virtuale Guile fornisce supporto per bytecode di livello inferiore, consentendo ottimizzazioni avanzate;
  • Supporto per la combinazione di definizioni ed espressioni interne (ad esempio, "(define _ (begin (foo) #f))");
  • Viene proposta un'implementazione unificata di un tipo di dati strutturati (“record”);
  • Le primitive di gestione delle eccezioni (throw e catch) sono state rielaborate;
  • Collegamenti definiti per la sintassi estesa "else", "=>", "..." e "_";
  • Nelle procedure http-request, http-get e altre procedure legate al web client è stata aggiunta la possibilità di scaricare contenuti su un canale di comunicazione crittografato utilizzando TLS con corretta verifica del certificato.

Fonte: opennet.ru

Aggiungi un commento