---
id: 149c0672eec2caba57477612564e9368
author: Lemon Mint
title: 'Go 1.24 kiadási áttekintés: Swiss Table Maps, ML-KEM, os.Root és testing/synctest'
description: 'A Go 1.24 műszaki áttekintése: Swiss Table alapú beépített leképezések (maps), crypto/mlkem (FIPS 203), TLS Encrypted Client Hello, runtime.AddCleanup, os.Root és testing/synctest.'
language: hu
date: 2024-12-20T00:23:21.60729Z
path: /blog/posts/whats-new-in-go-1-24-z83ff24d2
category: release
---

Go 1.24 jelentős kiadássá válik, amely a teljesítmény, a biztonság és a fejlesztői élmény javítására összpontosító fejlesztések sorát vezeti be. Ezek a változtatások célja, hogy a Go még hatékonyabbá és erősebbé váljon modern alkalmazások fejlesztéséhez.

## Teljesítménynövelés

Általános teljesítményjavulás, amely a reprezentatív benchmarkok csoportján mérve 2-3%-os CPU-terhelés-csökkenést eredményez. A javulások között szerepel egy új, beépített map-implementáció, a kis objektumok hatékonyabb memóriafoglalása, valamint egy új, a futtatókörnyezeten belül használt mutex-implementáció. Az eredmények alkalmazásonként eltérhetnek.

## Posztkvantum kriptográfia

A `crypto/mlkem` csomag bevezetése, amely az ML-KEM-768 és ML-KEM-1024 algoritmusokat implementálja. Az ML-KEM egy posztkvantum kulcscsere-mechanizmus, korábban Kyber néven ismert, és a FIPS 203 szabvány határozza meg. Ez a kiegészítés felkészíti a Go-t a kriptográfiai biztonság jövőjére.

## TLS-fejlesztés

Támogatás a titkosított Client Hello (ECH) funkcióhoz TLS-ben. Ez a funkció a `Config.EncryptedClientHelloKeys` mező feltöltésével engedélyezhető, és növeli a TLS-kapcsolatok adatvédelmét és biztonságát.

## Új Swiss Table alapú map

A teljesítmény javítása érdekében továbbfejlesztett map-implementáció. Ez az új implementáció Swiss Tables-en alapul, és a `GOEXPERIMENT=noswissmap` buildelési jelzővel letiltható.

## Sync Map frissítés

Javult a `sync.Map` módosítási teljesítménye. Nagyobb méretű map-eken a diszjunkt kulcshalmazok módosításai sokkal kisebb valószínűséggel versenyeznek egymással, és a map alacsony versenyhelyzetű terhelés eléréséhez már nincs szükség felfutási időre. Ha problémákkal találkozik, a `GOEXPERIMENT=nosynchashtriemap` segítségével visszaállhat a korábbi implementációra.

## Továbbfejlesztett JSON-kódolás

Új `omitempty` tagopció a struktúramezők okosabb kihagyásához JSON-kódolás során. Kódoláskor a `omitempty` opcióval rendelkező struktúramező kimarad, ha az értéke nulla. Ha a mező típusának van `IsZero() bool` metódusa, akkor ezt használja fel annak eldöntésére, hogy az érték nulla-e.

## Futtatókörnyezeti takarítás

Az `AddCleanup` függvény bevezetése az erőforrás-kezelés javítása érdekében, a `SetFinalizer` helyettesítésére. A `SetFinalizer`-rel ellentétben nem élesztgeti újra a hozzá csatolt objektumot a finalizáláshoz, és egy objektumhoz több takarítófüggvény is csatolható. Az új kódban az `AddCleanup` használata javasolt a `SetFinalizer` helyett.

## Eszközdirektívák a go.mod-ban

Továbbfejlesztett futtatható függőségkövetés a `go.mod`-ban található eszközdirektívák segítségével. Ez megszünteti azt a korábbi megoldást, amikor az eszközöket üres importként kellett felvenni egy hagyományosan „tools.go” nevű fájlba.

## Könyvtárra korlátozott hozzáférés

Az `os.Root` típus új bevezetése a szabályozott fájlrendszer-műveletekhez. Az `os.Root` típus lehetővé teszi, hogy a fájlrendszer-műveleteket egy meghatározott könyvtáron belül végezzük, megakadályozva a megadott útvonalon kívüli hozzáférést.

## Tesztelési fejlesztések

Új `testing/synctest` csomag párhuzamos kód teszteléséhez. A `synctest.Run` függvény goroutine-csoportot indít el egy elkülönített „buborékban”, a `synctest.Wait` függvény pedig megvárja, amíg az aktuális buborékban lévő összes goroutine blokkolttá válik. Ez a csomag kísérleti jellegű, és a build időben a `GOEXPERIMENT=synctest` beállításával engedélyezhető.

## Build-gyorsítótár

A `go run` futtatható fájljai mostantól gyorsítótárazásra kerülnek a gyorsabb végrehajtás érdekében. Ez az ismételt futtatásokat gyorsabbá teszi, a gyorsítótár méretének növekedése árán.

## Cgo teljesítmény

Új `#cgo noescape` és `#cgo nocallback` annotációk a jobb Cgo teljesítmény érdekében. A `#cgo noescape cFunctionName` azt jelzi a fordítónak, hogy a C függvénynek átadott memória nem szökik meg. A `#cgo nocallback cFunctionName` azt jelzi a fordítónak, hogy a C függvény nem hív vissza egyetlen Go függvényt sem.

## Gyenge mutatók

Támogatás a gyenge mutatókhoz, amelyek lehetővé teszik a memória biztonságos hivatkozását anélkül, hogy az megakadályozná annak felszabadítását. A gyenge mutatók alacsony szintű primitívek, amelyek memóriahatékony struktúrák létrehozását teszik lehetővé, például értékek társítására szolgáló gyenge map-eket, kanonikalizáló map-eket és különféle típusú gyorsítótárakat.

## Benchmark-fejlesztés

Új `testing.B.Loop` metódus gyorsabb, kevésbé hibaérzékeny benchmarkokhoz. A benchmark függvény `-count` futtatásonként pontosan egyszer hajtódik végre, így a költséges beállítási és takarítási lépések csak egyszer futnak le. A függvényhívások paraméterei és eredményei életben maradnak, megakadályozva, hogy a fordító teljesen optimalizálja ki a ciklus törzsét.

Go 1.24 jelentős kiadássá válik, amely a nyelv és az ökoszisztéma számos területén érdemi fejlesztéseket kínál.

![Overview of Go 1.24](/assets/images/whats-new-in-go1.24/overview.webp)
