---
id: 149c0672eec2caba57477612564e9368
author: Lemon Mint
title: 'Prehľad vydania Go 1.24: Swiss Table Maps, ML-KEM, os.Root a testing/synctest'
description: 'Technický prehľad Go 1.24: vstavané mapy Swiss Table, crypto/mlkem (FIPS 203), TLS Encrypted Client Hello, runtime.AddCleanup, os.Root a testing/synctest.'
language: sk
date: 2024-12-20T00:23:21.60729Z
path: /blog/posts/whats-new-in-go-1-24-z83ff24d2
category: release
---

Go 1.24 sa rysuje ako významné vydanie, ktoré prináša rad vylepšení zameraných na výkon, bezpečnosť a skúsenosti vývojárov. Tieto zmeny majú za cieľ urobiť Go ešte výkonnejším a efektívnejším pri tvorbe moderných aplikácií.

## Zlepšenie výkonu

Všeobecné zlepšenie výkonu so znížením réžie CPU o 2–3 % naprieč súborom reprezentatívnych benchmarkov. Tieto zlepšenia zahŕňajú novú vstavanú implementáciu mapy, efektívnejšie prideľovanie pamäte pre malé objekty a novú runtime-internú implementáciu mutexu. Výsledky sa môžu líšiť v závislosti od aplikácie.

## Post-kvantová kryptografia

Zavedenie balíka `crypto/mlkem`, ktorý implementuje ML-KEM-768 a ML-KEM-1024. ML-KEM je post-kvantový mechanizmus výmeny kľúčov, predtým známy ako Kyber a špecifikovaný v norme FIPS 203. Tento doplnok pripravuje Go na budúcnosť kryptografickej bezpečnosti.

## Vylepšenie TLS

Podpora Encrypted Client Hello (ECH) v TLS. Túto funkciu je možné aktivovať naplnením poľa `Config.EncryptedClientHelloKeys`, čím sa zvyšuje súkromie a bezpečnosť TLS spojení.

## Nová mapa Swiss Table

Vylepšená implementácia mapy pre lepší výkon. Táto nová implementácia je založená na Swiss Tables a možno ju vypnúť pomocou build príznaku `GOEXPERIMENT=noswissmap`.

## Aktualizácia sync.Map

Zlepšený výkon pri modifikáciách mapy v `sync.Map`. Modifikácie disjunktných množín kľúčov sa na väčších mapách oveľa menej pravdepodobne navzájom blokujú a z mapy už nie je potrebný žiadny čas na zahriatie na dosiahnutie načítaní s nízkou mierou konkurencie. Ak narazíte na problémy, môžete sa vrátiť k pôvodnej implementácii pomocou `GOEXPERIMENT=nosynchashtriemap`.

## Vylepšené JSON marshaling

Nová možnosť značky `omitempty` pre inteligentnejšie vynechávanie polí štruktúry počas JSON marshalingu. Pri marshalingu bude pole štruktúry s možnosťou `omitempty` vynechané, ak je jeho hodnota nulová. Ak typ poľa má metódu `IsZero() bool`, použije sa táto metóda na určenie, či je hodnota nulová.

## Vyčistenie runtime

Zavedenie funkcie `AddCleanup` ako náhrady za `SetFinalizer` pre lepšiu správu zdrojov. Na rozdiel od `SetFinalizer` neobnovuje objekt, ku ktorému je pripojená, pre účely finalizácie, a k jednému objektu možno pripojiť viacero čistiacich funkcií. Nový kód by mal uprednostňovať `AddCleanup` pred `SetFinalizer`.

## Nástrojové direktívy v go.mod

Zlepšené sledovanie závislostí spustiteľných nástrojov pomocou nástrojových direktív v `go.mod`. Tým odpadá potreba predchádzajúceho riešenia, ktorým bolo pridávanie nástrojov ako prázdnych importov do súboru konvenčne nazývaného „tools.go“.

## Prístup obmedzený na adresár

Nový typ `os.Root` na riadené operácie so súborovým systémom. Typ `os.Root` umožňuje vykonávať operácie so súborovým systémom v rámci konkrétneho adresára a zabraňuje prístupu mimo určenej cesty.

## Vylepšenia testovania

Nový balík `testing/synctest` na testovanie súbežného kódu. Funkcia `synctest.Run` spustí skupinu goroutín v izolovanej „bubline“ a funkcia `synctest.Wait` čaká, kým sa všetky goroutiny v aktuálnej bubline zablokujú. Tento balík je experimentálny a musí sa povoliť nastavením `GOEXPERIMENT=synctest` pri zostavovaní.

## Build cache

Spustiteľné súbory `go run` sú teraz ukladané do cache pre rýchlejšie spúšťanie. Opakované spúšťanie je tak rýchlejšie na úkor väčšej veľkosti cache.

## Výkon Cgo

Nové anotácie `#cgo noescape` a `#cgo nocallback` pre lepší výkon Cgo. `#cgo noescape cFunctionName` informuje kompilátor, že pamäť odovzdaná C funkcii neunikne. `#cgo nocallback cFunctionName` informuje kompilátor, že C funkcia nevolá späť žiadne Go funkcie.

## Slabé ukazovatele

Podpora slabých ukazovateľov na bezpečné odkazovanie na pamäť bez toho, aby bránili jej uvoľneniu. Slabé ukazovatele sú nízkoúrovňový primitívny prvok poskytnutý na vytváranie pamäťovo úsporných štruktúr, ako sú slabé mapy na priraďovanie hodnôt, mapy kanonikalizácie a rôzne druhy cache.

## Zlepšenie benchmarkov

Nová metóda `testing.B.Loop` pre rýchlejšie a menej chybové benchmarky. Benchmarková funkcia sa vykoná presne raz na každé `-count`, takže náročné kroky nastavenia a upratovania sa vykonajú iba raz. Parametre volania funkcie a výsledky sa udržiavajú pri živote, čím sa kompilátoru bráni v úplnej optimalizácii tela cyklu.

Go 1.24 sa rysuje ako významné vydanie, ktoré prináša podstatné zlepšenia v rôznych oblastiach jazyka a jeho ekosystému.

![Prehľad Go 1.24](/assets/images/whats-new-in-go1.24/overview.webp)
