Rilascio del linguaggio di programmazione Go 1.15

Introdotto rilascio del linguaggio di programmazione Andare 1.15, che viene sviluppato da Google con la partecipazione della community come soluzione ibrida che combina le elevate prestazioni dei linguaggi compilati con i vantaggi dei linguaggi di scripting come facilità di scrittura del codice, velocità di sviluppo e protezione dagli errori. Codice del progetto distribuito da sotto licenza BSD.

La sintassi di Go si basa su elementi familiari del linguaggio C con alcuni prestiti dal linguaggio Python. Il linguaggio è abbastanza conciso, ma il codice è facile da leggere e comprendere. Il codice Go è compilato in eseguibili binari autonomi che vengono eseguiti in modo nativo senza utilizzare una macchina virtuale (profilazione, debug e altri sottosistemi di rilevamento dei problemi di runtime sono integrati come componenti di esecuzione), che consente di ottenere prestazioni paragonabili ai programmi C.

Il progetto è inizialmente sviluppato con un occhio alla programmazione multi-thread e al funzionamento efficiente su sistemi multi-core, inclusa la fornitura di mezzi a livello operatore per organizzare il calcolo parallelo e l'interazione tra metodi eseguiti in parallelo. Il linguaggio fornisce inoltre una protezione integrata contro i blocchi di memoria sovraallocati e offre la possibilità di utilizzare un garbage collector.

Il principale innovazioniintrodotto nella versione Go 1.15:

  • Il lavoro del linker è stato notevolmente migliorato, sia aumentando la velocità di funzionamento e riducendo il consumo di memoria, sia nella direzione di semplificare la manutenzione del codice. Durante i test su sistemi operativi che utilizzano il formato di file eseguibile ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), un tipico set di applicazioni Go di grandi dimensioni è stato creato il 20% più velocemente e il consumo di memoria è stato ridotto in media del 30%. L'aumento della produttività è stato reso possibile passando a un nuovo formato di file oggetto e rielaborando le fasi interne per aumentare il livello di parallelizzazione del lavoro. Il linker nativo è ora utilizzato per impostazione predefinita sui sistemi linux/amd64 e linux/arm64 in "-buildmode=pie", che non richiede più l'uso di un linker C.
  • In runtime la distribuzione dei piccoli oggetti sui sistemi con un gran numero di core della CPU è stata notevolmente migliorata e la latenza è stata ridotta. In caso di guasti, invece dell'indirizzo vengono visualizzati valori di tipo numerico e stringa. Quando si inviano segnali SIGSEGV, SIGBUS e SIGFPE a un'applicazione Go, in assenza di un gestore os/signal.Notify, l'applicazione uscirà con un output di traccia dello stack (in precedenza il comportamento era imprevedibile).
  • Il compilatore è stato ottimizzato per ridurre la dimensione dei file eseguibili generati in media del 5% interrompendo l'inclusione di alcuni metadati per il garbage collector e una pulizia più aggressiva dei metadati inutilizzati.
  • Il flag "-spectre" è stato aggiunto al compilatore e all'assemblatore per abilitare la protezione contro gli attacchi della classe Spectre (per la maggior parte dei programmi questo non è richiesto; abilitare l'opzione può essere giustificato solo per alcuni casi molto specifici).
  • Nei certificati X.509 è stato deprecato il campo CommonName, che non viene più trattato come nome host se manca il campo Nomi alternativi soggetto.
  • Il comando "go" nella variabile di ambiente GOPROXY ora può elencare più proxy, separati da una virgola o "|". Se il primo proxy nell'elenco restituisce un errore (404 o 410), verrà effettuato un tentativo di contatto tramite il secondo proxy, ecc.
  • L'utilità vet ha aggiunto un avviso sul tentativo di conversione da string(x) se "x" è un tipo intero diverso da rune o byte.
  • Il flag "-gnu" è stato aggiunto all'utilità objdump per supportare il disassemblaggio della sintassi dell'assemblatore GNU.
  • Nuovo pacchetto aggiunto ora/tzdata, che consente di integrare nel programma un database con i dati del fuso orario.
  • Dai testi originali e dalla documentazione RIMOSSO le frasi whitelist/blacklist e master/slave, che ora sono sostituite da "allowlist", "blocklist", "process", "pty", "proc" e "control".
  • Alla libreria standard sono stati apportati numerosi miglioramenti minori.
  • Aggiunto il supporto per OpenBSD 6.7 nelle modalità GOARCH=arm e GOARCH=arm64 (in precedenza erano supportati solo GOARCH=386 e GOARCH=amd64).
  • È proseguito lo sviluppo della piattaforma RISC-V a 64 bit (GOOS=linux, GOARCH=riscv64).
  • Per i sistemi x32 a 86 bit, la prossima versione aumenterà i requisiti minimi di sistema: continueranno a essere supportati solo i processori con SSE2. Per compilare in modalità GOARCH=386 avrai bisogno di almeno un Intel Pentium 4 (rilasciato nel 2000) o un AMD Opteron/Athlon 64 (rilasciato nel 2003).

Fonte: opennet.ru

Aggiungi un commento