---
id: 149c0672eec2caba57477612564e9368
author: Lemon Mint
title: 'Go 1.24 Sürüm Genel Bakışı: Swiss Table Maps, ML-KEM, os.Root ve testing/synctest'
description: 'Go 1.24 teknik genel bakışı: Swiss Table tabanlı yerleşik haritalar, crypto/mlkem (FIPS 203), TLS Encrypted Client Hello, runtime.AddCleanup, os.Root ve testing/synctest.'
language: tr
date: 2024-12-20T00:23:21.60729Z
path: /blog/posts/whats-new-in-go-1-24-z83ff24d2
category: release
---

Go 1.24, performans, güvenlik ve geliştirici deneyimine odaklanan bir dizi iyileştirme sunarak önemli bir sürüm olmaya hazırlanıyor. Bu değişiklikler, Go'yu modern uygulamalar geliştirmek için daha da güçlü ve verimli hale getirmeyi amaçlamaktadır.

## Performans Artışı

Temsili bir kıyaslama paketi genelinde CPU yükünde %2-3 oranında azalma sağlayan genel bir performans iyileştirmesi. Bu iyileştirmeler, yeni yerleşik bir map uygulamasını, küçük nesnelerin daha verimli bellek tahsisini ve yeni bir çalışma zamanı içi mutex uygulamasını kapsamaktadır. Sonuçlar uygulamaya göre değişebilir.

## Kuantum Sonrası Kriptografi

ML-KEM-768 ve ML-KEM-1024'ü uygulayan `crypto/mlkem` paketinin tanıtımı. ML-KEM, daha önce Kyber olarak bilinen ve FIPS 203'te belirtilen, kuantum sonrası bir anahtar değişim mekanizmasıdır. Bu ekleme, Go'yu kriptografik güvenliğin geleceğine hazırlamaktadır.

## TLS Geliştirmesi

TLS'de Şifreli Client Hello (ECH) desteği. Bu özellik, `Config.EncryptedClientHelloKeys` alanı doldurularak etkinleştirilebilir ve TLS bağlantıları için gizlilik ve güvenliği artırır.

## Yeni Swiss Table Map

Daha iyi performans için geliştirilmiş bir map uygulaması. Bu yeni uygulama Swiss Tables temelli olup, `GOEXPERIMENT=noswissmap` derleme bayrağı ile devre dışı bırakılabilir.

## Sync Map Güncellemesi

`sync.Map` içindeki map değişiklikleri için geliştirilmiş performans. Büyük map'lerde birbirinden ayrık anahtar kümelerinin değiştirilmesi çekişmeye (contention) girme olasılığı çok daha düşüktür ve map'ten düşük çekişmeli yüklemeler elde etmek için artık herhangi bir ısınma süresi gerekmemektedir. Sorunlarla karşılaşırsanız, `GOEXPERIMENT=nosynchashtriemap` kullanarak eski uygulamaya geri dönebilirsiniz.

## Geliştirilmiş JSON Marshaling

JSON marshaling sırasında struct alanlarının daha akıllı bir şekilde atlanmasını sağlayan yeni bir `omitempty` etiket seçeneği. Marshaling sırasında, `omitempty` seçeneğine sahip bir struct alanının değeri sıfır ise o alan atlanır. Alan türünün `IsZero() bool` metodu varsa, değerin sıfır olup olmadığını belirlemek için bu metot kullanılır.

## Çalışma Zamanı Temizliği

`SetFinalizer` yerine kaynak yönetimini iyileştirmek için `AddCleanup` fonksiyonunun tanıtımı. `SetFinalizer`'dan farklı olarak, bağlı olduğu nesneyi sonlandırma için yeniden canlandırmaz ve tek bir nesneye birden fazla temizleme işlemi eklenebilir. Yeni kodda `SetFinalizer` yerine `AddCleanup` tercih edilmelidir.

## go.mod'da Araç Yönergeleri

`go.mod` içindeki araç yönergeleri kullanılarak geliştirilmiş çalıştırılabilir bağımlılık takibi. Bu, araçların "tools.go" olarak adlandırılan bir dosyaya boş içe aktarmalar olarak eklenmesi yönündeki önceki geçici çözüm ihtiyacını ortadan kaldırır.

## Dizin Sınırlı Erişim

Denetimli dosya sistemi işlemleri için yeni `os.Root` türü. `os.Root` türü, belirli bir dizin içinde dosya sistemi işlemleri gerçekleştirme olanağı sağlayarak belirtilen yol dışındaki erişimi engeller.

## Test İyileştirmeleri

Eşzamanlı kodu test etmek için yeni `testing/synctest` paketi. `synctest.Run` fonksiyonu, yalıtılmış bir "balon" içinde bir grup goroutine başlatır ve `synctest.Wait` fonksiyonu, mevcut balondaki tüm goroutine'lerin bloke olmasını bekler. Bu paket deneyseldir ve derleme zamanında `GOEXPERIMENT=synctest` ayarlanarak etkinleştirilmelidir.

## Derleme Önbelleği

`go run` ile çalıştırılan programlar artık daha hızlı yürütme için önbelleğe alınmaktadır. Bu, tekrarlanan yürütmeleri hızlandırırken önbelleğin boyutunu artırmanın bedelini getirmektedir.

## Cgo Performansı

Daha iyi Cgo performansı için yeni `#cgo noescape` ve `#cgo nocallback` açıklamaları. `#cgo noescape cFunctionName`, C fonksiyonuna geçirilen belleğin kaçmadığını (escape etmediğini) derleyiciye bildirir. `#cgo nocallback cFunctionName`, C fonksiyonunun herhangi bir Go fonksiyonunu geri çağırmadığını derleyiciye bildirir.

## Zayıf İşaretçiler

Bellek geri kazanımını engellemeden belleğe güvenli bir şekilde başvurmak için zayıf işaretçi desteği. Zayıf işaretçiler, değerleri ilişkilendirmek için zayıf map'ler, kanonikleştirme map'leri ve çeşitli önbellek türleri gibi bellek açısından verimli yapıların oluşturulmasını sağlamak üzere sunulan düşük seviyeli bir ilkeldir.

## Kıyaslama İyileştirmesi

Daha hızlı ve daha az hataya açık kıyaslamalar için yeni `testing.B.Loop` metodu. Kıyaslama fonksiyonu, her `-count` için tam olarak bir kez yürütülür, bu nedenle pahalı kurulum ve temizleme adımları yalnızca bir kez çalışır. Fonksiyon çağrı parametreleri ve sonuçları canlı tutulur, böylece derleyicinin döngü gövdesini tamamen optimize etmesi engellenir.

Go 1.24, dilin ve ekosisteminin çeşitli yönlerinde önemli iyileştirmeler sunarak önemli bir sürüm olmaya hazırlanıyor.

![Go 1.24'e Genel Bakış](/assets/images/whats-new-in-go1.24/overview.webp)
