Liberazione di a lingua di prugrammazione Go 1.18

A liberazione di a lingua di prugrammazione Go 1.18 hè presentata, chì hè sviluppata da Google cù a participazione di a cumunità cum'è una soluzione hibrida chì combina l'altu rendiment di e lingue compilate cù tali vantaghji di linguaggi di scrittura cum'è facilità di scrittura codice, sviluppu rapidu è prutezzione di errore. U codice di u prugettu hè distribuitu sottu a licenza BSD.

A sintassi di Go hè basatu annantu à l'elementi familiari di a lingua C cù qualchi prestiti da a lingua Python. A lingua hè abbastanza cuncisa, ma u codice hè faciule da leghje è capisce. U codice Go hè compilatu in file eseguibili binari separati chì funzionanu nativamente senza l'usu di una macchina virtuale (profiling, debugging, è altri sottosistemi di rilevazione di prublemi di runtime sò integrati cum'è cumpunenti di runtime), chì permette di ottene prestazioni paragunabili à i prugrammi C.

U prugettu hè inizialmente sviluppatu cun un ochju nantu à a prugrammazione multi-threaded è l'operazione efficiente nantu à i sistemi multi-core, cumprese i mezi implementati à u livellu di l'operatore per l'urganizazione di l'informatica parallela è l'interazzione trà i metudi paralleli. A lingua furnisce ancu una prutezzione integrata contr'à l'overruns di blocchi di memoria allocati è furnisce a capacità di utilizà u cullettore di basura.

A nova versione aghjunghjenu supportu per e funzioni è i tipi generichi (generici), cù l'aiutu di quale un sviluppatore pò definisce è aduprà funzioni pensate per travaglià cù parechji tipi à una volta. Hè ancu pussibule di utilizà interfacce per creà tipi cumminati chì spannu parechji tippi di dati. U supportu per i generici hè implementatu senza rompe a cumpatibilità inversa cù u codice esistente. // Sum set values, travaglia per i tipi int64 è float64 func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Un'altra opzione cù una definizione di tipu genericu: type Number interface { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V {var s V for _, v := range m { s += v } return s }

Altri miglioramenti:

  • L'utilità per a prova di codice fuzzing sò integrate in u toolkit standard. Durante a prova di fuzzing, un flussu di tutte e pussibuli cumminazzioni aleatorii di dati di input hè generatu è i pussibuli fallimenti durante u so processu sò registrati. Se una sequenza falla o ùn currisponde à a risposta prevista, allora stu cumpurtamentu hè assai prubabile di indicà un bug o vulnerabilità.
  • Aggiuntu supportu per spazii di travagliu multi-modulari, chì vi permette di eseguisce cumandamenti nantu à parechji moduli à una volta, chì vi permette di custruisce è eseguisce simultaneamente codice in moduli multipli.
  • Ottimisazioni di rendiment significativu sò stati fatti per i sistemi basati nantu à i prucessori Apple M1, ARM64 è PowerPC64. Abilitatu l'abilità di utilizà i registri invece di a pila per passà argumenti à e funzioni è rinvià u risultatu. Un rolling inline miglioratu di i loops da u compilatore. A verificazione di tipu in u compilatore hè stata completamente riprogettata. Certi testi mostranu un aumentu di 20% in u rendiment di u codice cumparatu cù a versione precedente, ma a compilazione stessu dura circa 15% più longu.
  • In runtime, l'efficienza di rinvià a memoria liberata à u sistema operatore hè stata aumentata è u funziunamentu di u cullettivu di basura hè statu migliuratu, u cumpurtamentu di quale hè diventatu più prevedibile.
  • Novi pacchetti net/netip è debug/buildinfo sò stati aghjuntu à a biblioteca standard. U supportu per TLS 1.0 è 1.1 hè disattivatu per difettu in u codice cliente. U modulu crypto/x509 hà cessatu di processà i certificati firmati cù l'hash SHA-1.
  • I requisiti per l'ambiente in Linux sò stati suscitati; per travaglià, avà bisognu di avè un kernel Linux di almenu a versione 2.6.32. In a prossima versione, cambiamenti simili sò previsti per FreeBSD (u supportu per u ramu FreeBSD 11.x serà discontinuatu) è almenu FreeBSD 12.2 serà necessariu di travaglià.

Source: opennet.ru

Add a comment