Skip to content

Repository files navigation

Introduction to Go 1.26

Go 1.26, Şubat 2026'da yayınlandı. Dil değişiklikleri, performans iyileştirmeleri, yeni paketler ve araç güncellemeleri içeriyor.

Contents

Dil Değişiklikleri

  • new(expr): new artık sadece tip değil, expression da kabul ediyor — pointer oluşturmak tek satıra indi
  • Recursive Type Constraints: Generic tipler artık kendi tip parametre listelerinde kendilerine referans verebiliyor

Yeni Standart Kütüphane Özellikleri

  • errors.AsType: errors.As'ın generic, type-safe ve 3x daha hızlı versiyonu
  • slog.MultiHandler: Aynı log'u birden fazla hedefe (stdout, dosya, vb.) yazma desteği
  • bytes.Buffer.Peek: Buffer'dan pozisyonu ilerletmeden veri okuma
  • reflect Iterators: Type.Fields(), Type.Methods(), Value.Fields() gibi iterator metodları
  • netip.Prefix.Compare: IP subnet'leri kolayca sıralama

Araç Güncellemeleri

  • go fix Modernizers: Tamamen yeniden yazıldı, 20+ modernizer ile kodunuzu güncel idiomlara dönüştürün
  • Test Artifacts: T.ArtifactDir() ile test çıktı dosyalarını organize edin

Performans İyileştirmeleri

  • Green Tea GC: Go 1.25'te deneysel olan yeni garbage collector artık varsayılan — %10-40 GC overhead azalması
  • Faster cgo: cgo çağrılarında ~%30 overhead azalması
  • Faster Memory Allocation: Küçük objeler (1-512 byte) için ~%30 daha hızlı bellek tahsisi
  • io.ReadAll Optimizasyonu: ~2x daha hızlı, yarı bellek kullanımı
  • fmt.Errorf Optimizasyonu: Düz stringlerde errors.New ile aynı performans

Deneysel Özellikler

  • Goroutine Leak Profile: runtime/pprof ile sızan goroutine'leri tespit edin (GOEXPERIMENT=goroutineleakprofile)
  • SIMD Operations: simd/archsimd paketi ile vektörel işlemler (GOEXPERIMENT=simd)
  • runtime/secret: Kriptografik anahtarları bellekten güvenle temizleme (GOEXPERIMENT=runtimesecret)

Diğer Önemli Değişiklikler

  • crypto/hpke: Hybrid Public Key Encryption (RFC 9180) — post-quantum desteği
  • signal.NotifyContext: Cause olarak hangi sinyalin alındığını raporluyor
  • net.Dialer Context-aware: DialTCP, DialUDP, DialIP, DialUnix artık context destekliyor
  • httptest.Server.Client: example.com istekleri otomatik olarak test sunucusuna yönlendiriliyor
  • Heap Base Address Randomization: 64-bit platformlarda güvenlik iyileştirmesi
  • Reader-less Cryptography: Çoğu crypto API artık io.Reader parametresini yok sayıyor

Örnekler ve Kullanım

Dosya Konu
01_new_expr.go new(expr) — pointer oluşturma kolaylığı
02_recursive_type_constraints.go Recursive generic type constraints
03_errors_astype.go errors.AsType — type-safe error checking
04_slog_multihandler.go slog.MultiHandler — çoklu log hedefi
05_bytes_peek.go bytes.Buffer.Peek — non-advancing read
06_reflect_iterators.go reflect iterator metodları
07_netip_compare.go netip.Prefix.Compare — IP sıralama
08_gofix_demo.go go fix modernizer örnekleri
tests/09_artifacts_test.go Test artifact dizini (T.ArtifactDir())
tests/10_goroutine_leak_test.go Goroutine leak profili (deneysel)
# Tek bir örneği çalıştırma
go run 01_new_expr.go

# Testleri çalıştırma
go test -v ./tests/

# Test artifacts ile çalıştırma
go test -v -artifacts -outputdir=/tmp/test-output ./tests/

# Goroutine leak profili (deneysel)
GOEXPERIMENT=goroutineleakprofile go test -v ./tests/ -run TestGoroutineLeak

# go fix modernizer'ları uygulama
go fix .
go fix -diff .    # sadece farkları göster

Performans Karşılaştırmaları

Green Tea GC (varsayılan)

  • %10-40 GC overhead azalması (gerçek dünya programlarında)
  • Yeni amd64 CPU'larda (Ice Lake / Zen 4+) ek %10 iyileştirme (vektörel talimatlar)
  • Devre dışı bırakma: GOEXPERIMENT=nogreenteagc

cgo Çağrıları

CgoCall    ~30% daha hızlı (43ns → 35ns)
Syscall    ~9%  daha hızlı (195ns → 178ns)

Bellek Tahsisi

Alloc1     ~19% daha hızlı
Alloc128   ~69% daha hızlı
Alloc512   ~32% daha hızlı

io.ReadAll

sec/op     ~50% daha hızlı
B/op       ~50% daha az bellek

fmt.Errorf (düz string)

Eski: 2 alloc/op, ~64 ns/op
Yeni: 0-1 alloc/op, ~5-25 ns/op

Kaynaklar

Sunum Detayları

About

A presentation covering the new features, performance improvements, and changes introduced in Go 1.26. Includes practical examples, and migration tips for developers upgrading from previous versions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages