Mitä uutta Go 1.24:ssä?
Go 1.24 on muotoutumassa merkittäväksi julkaisuksi, tuoden mukanaan joukon parannuksia, jotka keskittyvät suorituskykyyn, turvallisuuteen ja kehittäjäkokemukseen. Nämä muutokset pyrkivät tekemään Go:sta entistä tehokkaamman ja suorituskykyisemmän modernien sovellusten rakentamisessa.
Suorituskyvyn parannus
Yleinen suorituskyvyn parannus, jossa CPU-ylikuormitus vähenee 2–3 % edustavien vertailuanalyysien sarjassa. Nämä parannukset sisältävät uuden sisäänrakennetun map-toteutuksen, tehokkaamman pienten objektien muistinvarauksen ja uuden runtime-sisäisen mutex-toteutuksen. Tulokset voivat vaihdella sovelluksittain.
Post-Quantum Crypto
crypto/mlkem
-paketin käyttöönotto, joka toteuttaa ML-KEM-768:n ja ML-KEM-1024:n. ML-KEM on post-quantum-avaimenvaihtomekanismi, joka tunnettiin aiemmin nimellä Kyber ja joka on määritelty FIPS 203:ssa. Tämä lisäys valmistelee Go:ta kryptografisen turvallisuuden tulevaisuutta varten.
TLS-parannus
Tuki Encrypted Client Hellolle (ECH) TLS:ssä. Tämä ominaisuus voidaan ottaa käyttöön täyttämällä Config.EncryptedClientHelloKeys
-kenttä, mikä parantaa TLS-yhteyksien yksityisyyttä ja turvallisuutta.
Uusi Swiss Table Map
Parannettu map-toteutus paremman suorituskyvyn saavuttamiseksi. Tämä uusi toteutus perustuu Swiss Tableihin, ja sen voi poistaa käytöstä GOEXPERIMENT=noswissmap
-koontilipulla.
Sync Map -päivitys
Parannettu suorituskyky map-muokkauksille sync.Map
:ssa. Erillisten avainjoukkojen muokkaukset aiheuttavat paljon epätodennäköisemmin kilpailutilanteita suuremmissa mapeissa, eikä matalan kilpailun kuormien saavuttamiseen mapista tarvita enää käynnistysaikaa. Jos kohtaat ongelmia, voit palata vanhaan toteutukseen käyttämällä GOEXPERIMENT=nosynchashtriemap
.
Parannettu JSON Marshaling
Uusi omitempty
-tagi-asetus älykkäämpään struct-kenttien poistoon JSON marshalingin aikana. Marshalingin aikana struct-kenttä, jossa on omitempty
-asetus, jätetään pois, jos sen arvo on nolla. Jos kentän tyypillä on IsZero() bool
-metodi, sitä käytetään määrittämään, onko arvo nolla.
Suoritusajan puhdistus
AddCleanup
-funktion käyttöönotto korvaamaan SetFinalizer
paremman resurssienhallinnan vuoksi. Toisin kuin SetFinalizer
, se ei herätä takaisin objektia, johon se on liitetty lopullistamista varten, ja yhteen objektiin voidaan liittää useita puhdistuksia. Uuden koodin tulisi suosia AddCleanup
:ia SetFinalizer
:in sijaan.
Työkaludirektiivit go.mod-tiedostossa
Parannettu suoritettavien riippuvuuksien seuranta käyttämällä työkaludirektiivejä go.mod
-tiedostossa. Tämä poistaa tarpeen aiemmalle kiertotielle, jossa työkalut lisättiin tyhjinä tuonteina tiedostoon, jota perinteisesti kutsuttiin "tools.go":ksi.
Hakemistorajoitettu pääsy
Uusi os.Root
-tyyppi hallittuihin tiedostojärjestelmätoimintoihin. os.Root
-tyyppi tarjoaa mahdollisuuden suorittaa tiedostojärjestelmätoimintoja tietyssä hakemistossa, estäen pääsyn määritellyn polun ulkopuolelle.
Testauksen parannukset
Uusi testing/synctest
-paketti samanaikaisen koodin testaamiseen. synctest.Run
-funktio käynnistää goroutine-ryhmän eristetyssä "kuplassa", ja synctest.Wait
-funktio odottaa kaikkien nykyisen kuplan goroutinejen estymistä. Tämä paketti on kokeellinen, ja se on otettava käyttöön asettamalla GOEXPERIMENT=synctest
käännösaikana.
Rakennusvälimuisti
go run
-suoritettavat tiedostot tallennetaan nyt välimuistiin nopeampaa suoritusta varten. Tämä nopeuttaa toistuvia suorituksia välimuistin koon kasvamisen kustannuksella.
Cgo-suorituskyky
Uudet #cgo noescape
ja #cgo nocallback
-annotoinnit paremman Cgo-suorituskyvyn saavuttamiseksi. #cgo noescape cFunctionName
kertoo kääntäjälle, että C-funktiolle välitetty muisti ei karkaa. #cgo nocallback cFunctionName
kertoo kääntäjälle, että C-funktio ei kutsu takaisin mitään Go-funktioita.
Heikot osoittimet
Tuki heikoille osoittimille muistin turvalliseen viittaamiseen estämättä sen palauttamista. Heikot osoittimet ovat matalan tason primitiivi, joka on tarkoitettu mahdollistamaan muistitehokkaiden rakenteiden, kuten heikkojen mapien arvojen yhdistämiseen, kanonisointimappien ja erilaisten välimuistien luomisen.
Vertailuanalyysin parannus
Uusi testing.B.Loop
-metodi nopeampia ja vähemmän virhealtteita vertailuanalyysejä varten. Vertailuanalyysifunktio suoritetaan täsmälleen kerran -count
-parametria kohti, joten kalliit asennus- ja puhdistusvaiheet suoritetaan vain kerran. Funktion kutsuparametrit ja tulokset pidetään elossa, mikä estää kääntäjää optimoimasta silmukan runkoa kokonaan pois.
Go 1.24 on muotoutumassa merkittäväksi julkaisuksi, joka tarjoaa huomattavia parannuksia kielen ja sen ekosysteemin eri osa-alueilla.