Il rilascio del linguaggio di programmazione Go 1.13

Presentato rilascio del linguaggio di programmazione Go 1.13, sviluppato da Google con la collaborazione della comunità come una soluzione ibrida che combina l'alta performance dei linguaggi compilati con i vantaggi dei linguaggi di scripting, come la semplicità nella scrittura del codice, la velocità di sviluppo e la protezione contro gli errori. Il codice del progetto distribuito con licenza BSD.

La sintassi di Go si basa su elementi familiari del linguaggio C con alcune adozioni dal linguaggio Python. Il linguaggio è abbastanza conciso, ma il codice è facilmente leggibile e comprensibile. Il codice in Go viene compilato in file eseguibili binari separati, eseguiti nativamente senza l'uso di una macchina virtuale (i moduli di profilazione, debug e altri sistemi di rilevamento dei problemi durante l'esecuzione sono integrati come componenti runtime), consentendo di raggiungere prestazioni paragonabili a quelle dei programmi in linguaggio C.

Il progetto è stato inizialmente sviluppato tenendo conto della programmazione multithreading e dell'efficiente utilizzo di sistemi multicore, fornendo anche strumenti implementati a livello di operatore per organizzare calcoli paralleli e interazioni tra metodi eseguiti in parallelo. Il linguaggio offre anche strumenti integrati per proteggere dalla fuga di memoria e garantisce la possibilità di utilizzare un garbage collector.

Principali novità, presentati nel rilascio di Go 1.13:

  • Nel pacchetto crypto/tls è inclusa di default il supporto per il protocollo TLS 1.3. È stato aggiunto un nuovo pacchetto "crypto/ed25519" con supporto per le firme digitali Ed25519;
  • È stata aggiunta la supporto per i nuovi prefissi dei literali numerici per definire numeri binari (ad esempio, 0b101), ottali (0o377), complessi (2.71828i) e esadecimali in virgola mobile (0x1p-1021), e anche la possibilità di utilizzare il simbolo «_» per una separazione visiva delle cifre nei numeri grandi (1_000_000);
  • Rimossa la limitazione sull'uso esclusivo di contatori senza segno nelle operazioni di shift, evitando così conversioni superflue nel tipo uint prima di utilizzare gli operatori «‹‹» e «››»;
  • Aggiunto il supporto per la piattaforma Illumos (GOOS=illumos). Garantita la compatibilità con la piattaforma Android 10. Aumentati i requisiti minimi per le versioni di FreeBSD (11.2) e macOS (10.11 «El Capitan»)
  • È proseguito il perfezionamento del nuovo sistema di moduli, che può essere utilizzato come alternativa a GOPATH. Contrariamente ai piani annunciati in precedenza, in Go 1.13 questo sistema non è stato attivato di default e richiede l'attivazione tramite la variabile GO111MODULE=on o l'utilizzo di un contesto in cui i moduli vengano applicati automaticamente. Il nuovo sistema di moduli si distingue per il supporto integrato alla gestione delle versioni, strumenti di consegna dei pacchetti e un migliorato sistema di gestione delle dipendenze. Grazie ai moduli, gli sviluppatori non sono più vincolati a lavorare all'interno della struttura di GOPATH, possono definire esplicitamente le dipendenze tenendo conto delle versioni e creare build ripetibili.

    A differenza delle versioni precedenti, l'applicazione automatica del nuovo sistema ora si attiva quando nel directory di lavoro corrente o nella directory padre è presente un file go.mod, anche quando ci si trova nella directory GOPATH/src. Sono state aggiunte nuove variabili ambientali: GOPRIVATE, che definisce i percorsi dei moduli non pubblicamente accessibili, e GOSUMDB, che stabilisce i parametri di accesso al database delle somme di controllo dei moduli non elencati nel file go.sum;

  • Nel comando «go» è abilitato di default il caricamento dei moduli e il controllo della loro integrità, utilizzando il mirror dei moduli e il database di checksum forniti da Google (proxy.golang.org, sum.golang.org e index.golang.org);
  • Il supporto per i pacchetti binari è stato interrotto, la costruzione di un pacchetto in modalità «//go:binary-only-package» ora genera un messaggio di errore;
  • Nel comando «go get» è stato aggiunto il supporto per il suffisso «@patch», che indica che il modulo deve essere aggiornato all'ultima release correttiva, senza cambiare la versione principale o intermedia attuale;
  • Quando estrae moduli dai sistemi di controllo delle versioni, il comando «go» ora esegue un controllo aggiuntivo sulla stringa del numero di versione, cercando di abbinare i numeri di pseudo-versione con i metadati del repository;
  • Aggiunto supporto per ispezione degli errori (error wrapping) tramite la creazione di wrapper che consentono l'uso di gestori di errori di tipo. Ad esempio, un errore «e» può essere avvolto attorno all'errore «w» fornendo il metodo Unwrap, restituendo «w». Entrambi gli errori «e» e «w» sono disponibili nel programma e le decisioni vengono prese sulla base dell'errore «w», ma «e» fornisce un contesto aggiuntivo a «w» o lo interpreta in modo diverso;
  • Ottimizzazione delle prestazioni dei componenti runtime (si segnala un aumento della velocità fino al 30%) e una gestione della memoria più aggressiva verso il sistema operativo (precedentemente la memoria veniva restituita dopo cinque o più minuti, ora viene restituita subito dopo la riduzione della dimensione dell'heap).

Fonte: opennet.ru

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