9 puan yazan lemonmint 2025-08-13 | Henüz yorum yok. | WhatsApp'ta paylaş

[IMG] Overview

Go 1.25 sürümü resmi olarak yayımlandı. Bu sürüm; araçlar, runtime, derleyici ve standart kütüphane genelinde iyileştirmeler içeriyor ve özellikle kullanıcıların önceden deneyip geri bildirim verebileceği önemli deneysel özellikler sunuyor.

  • Başlıca özellikler:
    • Go 1 sürümüyle uyumluluğun korunması
    • Araçlar, runtime, derleyici ve kütüphaneler genelinde kapsamlı iyileştirmeler
    • Yeni deneysel özelliklerin eklenmesi (GreenTea GC, json/v2 paketi)

Temel deneysel özellikler

Go 1.25, performans ve işlevselliği iyileştirmeyi hedefleyen iki önemli deneysel özellik içeriyor; kullanıcılar bunları ortam değişkenleri üzerinden etkinleştirebilir.

Yeni GreenTea çöp toplayıcı (GC)

Amaç, çok sayıda küçük nesne işlenirken ortaya çıkan GC ek yükünü azaltarak performansı artırmaktır.

  • Çalışma şekli: 512 bayttan küçük nesneleri 8KiB boyutunda memory span birimleri hâlinde gruplayarak GC uygular. Bu sayede bellek yerelliği (locality) artar ve CPU önbelleği verimliliği en üst düzeye çıkar.
  • Beklenen etkiler:
    • Bellek sıçraması maliyetinin azalması sayesinde GC performansının artması
    • Çok çekirdekli ortamlarda verimli çalışma
    • Küçük nesne tahsis ek yükü ile bellek parçalanmasının azalması
  • Etkinleştirme yöntemi: Derleme sırasında GOEXPERIMENT=greenteagc ortam değişkenini ayarlama
Yeni encoding/json/v2 paketi

Mevcut encoding/json (v1) içindeki tutarsızlıkları, öngörülemez davranışları ve performans sorunlarını çözmek için yeniden tasarlanmış bir JSON uygulamasıdır.

  • Temel hedefler:

    • Doğruluk ve öngörülebilirliğin artırılması: Varsayılan olarak daha katı kurallar uygular (ör. büyük/küçük harf duyarlılığı, yinelenen anahtarların yasaklanması) ve beklenmedik davranışları azaltır.
    • Performans iyileştirmesi: Ayrıştırma ve kodlama altyapısı yeniden tasarlanarak verimlilik artırılmıştır.
    • Esneklik ve denetimin genişletilmesi: Geliştiricilerin JSON işleme biçimini ayrıntılı şekilde kontrol etmesini sağlayan gelişmiş bir seçenek sistemi sunar.
  • Başlıca değişiklikler (v1'e kıyasla v2):

    • Alan adı eşleştirme: v1'deki büyük/küçük harf duyarsız yaklaşımın aksine, v2 varsayılan olarak büyük/küçük harfi tam olarak ayırt eder.
    • omitempty etiketinin anlamı değişti: v1, Go değerinin “boş durumu”na (0, false, nil vb.) göre alanı atlıyordu; v2 ise kodlanmış JSON değerinin “boş durumu”na (null, "", {}, []) göre atlar.
    • nil slice ve map işleme: v1 bunları null olarak marshal ediyordu; v2 ise varsayılan olarak sırasıyla [] (boş dizi) ve {} (boş nesne) olarak marshal eder.
    • Dizi unmarshal etme: v1, JSON dizisi ile Go dizisinin uzunlukları farklı olsa da buna izin veriyordu; v2 ise uzunlukların tam olarak eşleşmesini ister, aksi durumda hata döndürür.
    • Yinelenen anahtar işleme: v1 yinelenen anahtarlara izin veriyordu (son değer üzerine yazılırdı); v2 ise varsayılan olarak hata döndürür ve doğruluk ile güvenliği güçlendirir.
    • Geçersiz UTF-8 işleme: v1 geçersiz UTF-8 karakterlerini otomatik olarak değiştiriyordu (\uFFFD); v2 ise varsayılan olarak hata döndürür ve veri bozulmasını önler.
  • Yeni özellikler ve yapı:

    • Modüler yapı: Düşük seviyeli sözdizimi ayrıştırmasını (jsontext paketi) yüksek seviyeli anlamsal dönüşümden (json/v2 paketi) ayırarak kodun açıklığını ve performansı iyileştirir.
    • Güçlü seçenek sistemi: json.Options ile çeşitli davranışlar ayrıntılı biçimde kontrol edilebilir; hatta v1 davranışı tamamen yeniden üretilebilir.
    • Harici türlerin işlenmesi: WithMarshalers, WithUnmarshalers seçenekleri sayesinde Marshaler/Unmarshaler arayüzlerini uygulamayan harici paket türleri için serileştirme/deserileştirme mantığı eklenebilir.
  • Etkinleştirme yöntemi: Derleme sırasında GOEXPERIMENT=jsonv2 ortam değişkenini ayarlama

Başlıca değişiklikler ve iyileştirmeler

Bu sürümde, geliştirme verimliliğini ve program çalışma etkinliğini artırmaya yönelik çeşitli iyileştirmeler yapıldı.

  • Runtime

    • Konteyner ortamını algılayan GOMAXPROCS: Linux ortamında cgroup CPU sınırlarını otomatik olarak algılayarak GOMAXPROCS varsayılanını ayarlar ve CPU kaynağı değiştiğinde bunu dinamik olarak günceller.
    • Trace Flight Recorder: Nadir görülen hataları ayıklamak için runtime izlerini bellekteki bir halka tamponda sürekli kaydeden hafif bir izleme özelliği sunar.
  • Araçlar ve derleyici

    • nil pointer hatası düzeltildi: Go 1.21'den beri var olan ve nil pointer denetimini geciktiren derleyici hatası düzeltildi; daha önce anormal biçimde başarılı olan kod artık beklenen şekilde panic üretir.
    • DWARF5 desteği: Hata ayıklama bilgisinde DWARF sürüm 5 kullanılarak ikili dosya boyutu ve bağlama süresi azaltıldı.
    • Yeni go.mod ignore yönergesi: go komutunun belirli dizinleri yok sayması sağlanabiliyor.
  • Standart kütüphane

    • testing/synctest paketinin eklenmesi: Eşzamanlılık kodu testlerini destekleyen yeni bir paket olup, testleri sanallaştırılmış zaman içinde yalıtılmış şekilde çalıştırabilir.
    • crypto paketinde performans artışı: FIPS modunda ecdsa ve ed25519 imza hızı 4 kat arttı; SHA hashleme hızı da iyileştirildi.
    • net/http için CrossOriginProtection eklendi: Modern tarayıcıların Fetch metadata özelliğini kullanarak CSRF saldırılarına karşı savunma sağlayan yeni bir özellik sunar.

Port ve destek değişiklikleri

  • macOS: Go 1.25 ile birlikte macOS 12 Monterey veya daha yeni bir sürüm gereklidir.
  • Windows: 32 bit windows/arm portu bu sürümle birlikte son kez desteklenecek.

Henüz yorum yok.

Henüz yorum yok.