Yazılar · 11.02.26 · 3 dk

Go 1.26 yayında: Green Tea GC, yeni new() ve go fix

Go 1.26'da dil ve performans tarafında neler değişti — sade özet.

Go 1.26 yayında: Green Tea GC, yeni new() ve go fix

Kaynak (İngilizce orijinal): Go 1.26 is released · Go Blog · Şubat 2026

Bu yazıda ne anlatılıyor? Go ekibi 1.26 sürümünü yayınladı. Bu yazı, “yeni sürüm çıktı, ben ne yapmalıyım?” sorusuna cevap vermek için: dilde küçük ama günlük kodu sadeleştiren değişiklikler, runtime’da hız kazancı ve eski kodu yeni stile taşıyan araçlar.

Go 1.26

Dil: daha az ceremony, daha okunaklı generic’ler

Go’da new anahtar kelimesi tip için bellek ayırır ve sıfır değerle başlatır. Eskiden başlangıç değeri vermek isteseniz önce değişken tanımlayıp sonra adresini almanız gerekirdi:

x := int64(300)
ptr := &x

1.26 ile doğrudan yazabiliyorsunuz:

ptr := new(int64(300))

Bu, “üç satır yerine bir satır” gibi görünür ama asıl fayda okunabilirlik: pointer’a ihtiyacınız varsa niyetiniz tek bakışta anlaşılır.

İkinci değişiklik generic (tip parametreli) tarafta. Generic, aynı kodu farklı tiplerle tekrar yazmadan kullanmanızı sağlar — []int ve []string için ayrı fonksiyon yazmak yerine tek tanım. Bazı veri yapıları kendi tip listesine referans vermek isterdi; eski kurallar bunu garip hale getiriyordu. 1.26 ile recursive (kendini referanslayan) generic tanımlar daha doğal yazılıyor. Henüz generic kullanmıyorsanız şimdilik “ileride karşıma çıkarsa daha temiz olacak” diye bilmeniz yeterli.

Performans: çöp toplayıcı ve bellek

Go programları bellek ayırır; kullanılmayan bellek GC (garbage collector, çöp toplayıcı) tarafından temizlenir. GC duraklamaları latency’yi etkiler — özellikle API sunan servislerde milisaniyeler önemlidir.

Green Tea GC artık varsayılan. İsim deneysel aşamadan geliyor; pratikte “yeni nesil çöp toplayıcı açık” demek. Ek olarak derleyici, slice’ların arka plan dizisini mümkün olduğunda stack’te (yığın, kısa ömürlü bellek) tutuyor; heap’e (uzun ömürlü bellek) daha az baskı. C ile konuşan kod (cgo) yoğun projelerde de temel overhead kabaca %30 azalmış — C kütüphanesi saran Go servisleri için hissedilir.

Bunların hepsi “kodunu değiştirmeden biraz daha hızlı” sınıfında; yine de production’da ölçmeden varsaymayın.

go fix: eski kodu modernleştiren araç

go fix, eski Go sözdizimini yeni sürüme uyarlayan otomatik düzeltme aracıdır. 1.26’da baştan yazıldı; artık Go’nun statik analiz altyapısı üzerinde çalışıyor ve onlarca “modernizer” kuralı var. CI’da bir kez çalıştırmak, upgrade sonrası gözden kaçan eski kalıpları yakalar.

Ayrıca //go:fix inline yorumu ile belirli fonksiyon çağrılarının inline edilmesi (çağrı yerine gövdenin açılması) denenebiliyor — performans ve okunabilirlik trade-off’u; detaylar ayrı blog yazılarında.

Yeni paketler ve deneysel özellikler

Standart kütüphaneye şifreleme test ve HPKE gibi paketler eklendi. Bunlar çoğu uygulama geliştiricisinin günlük işi değil; crypto veya test altyapısı kuranlar için.

Deneysel (opt-in) tarafta SIMD (tek komutla çok veri işleme), güvenli bellek silme ve goroutine sızıntı profili var. Production’da açmak zorunda değilsiniz; merak ediyorsanız yan projede deneyin, geri bildirim verin.

Upgrade yapmadan önce

Release notes’taki breaking change listesini okuyun. Sonra go fix ./... çıktısına bakın. Microservice stack’iniz Go ise Green Tea + stack allocation birlikte GC profilini iyileştirebilir — ama bunu p95 latency ve heap grafikleriyle doğrulayın.

Özet — senin için ne demek? Go 1.26 “devrim” değil, “rahatlatma ve hız” sürümü. Yeni new sözdizimini öğrenin, upgrade’te go fix çalıştırın, GC ve cgo iyileştirmelerini benchmark ile ölçün. Öğrenme aşamasındaysanız release notes okuma alışkanlığı kazanın; mid-level iseniz CI’ya go fix adımı eklemek upgrade riskini düşürür.

Go 1.26 yayında: Green Tea GC, yeni new() ve go fix — Aziz Osmanoğlu