GoSuda

Mitä uutta Go 1.24:ssä?

By Lemon Mint
views ...

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.

Overview of Go 1.24