- Go 1.22 sürümü, Go 1.21'den 6 ay sonra yayımlandı.
- Değişikliklerin çoğu araç zinciri, çalışma zamanı ve kütüphanelerin uygulanmasında yer alıyor.
- Go 1 uyumluluk sözü korunuyor ve neredeyse tüm Go programlarının eskisi gibi derlenip çalışması bekleniyor.
Dil değişiklikleri
for döngüsüyle ilgili iki değişiklik var.
- Önceden
for döngüsü tarafından tanımlanan değişkenler bir kez oluşturulup her yinelemede güncelleniyordu; Go 1.22'de ise döngünün her yinelemesi yeni bir değişken oluşturarak yanlışlıkla paylaşılmasından kaynaklanan hataları önlüyor.
for döngüsü artık tamsayılar üzerinde aralık belirtebiliyor.
Araçlar
Go komutu
- Çalışma alanında
vendor dizini kullanılarak bağımlılıklar yönetilebiliyor.
go get, artık modül olmayan eski GOPATH modunda desteklenmiyor.
go mod init, artık diğer vendoring araçlarının yapılandırma dosyalarından modül gereksinimlerini içe aktarmaya çalışmıyor.
go test -cover, artık kendi test dosyası olmayan paketler için de kapsam özetini çıktı olarak veriyor.
Trace
trace aracının web arayüzü, yeni tracer'ı desteklemek için kısmen yeniden tasarlandı.
Vet
vet aracının döngü değişkenlerine yönelik davranışı değişti.
append çağrısına değer eklenmediğinde yeni bir uyarı eklendi.
time.Since ifadesinin defer deyiminde kullanılmasıyla ortaya çıkan sorun için yeni bir uyarı eklendi.
log/slog çağrılarında anahtar-değer çiftleri eşleşmediğinde yeni bir uyarı eklendi.
Çalışma zamanı
- Tür tabanlı çöp toplama meta verilerinin heap nesnelerine daha yakın tutulmasıyla CPU performansı %1-3 artırıldı.
Derleyici
- Profil güdümlü optimizasyon (PGO) derlemeleri artık öncekine göre daha fazla çağrıyı devirtualize edebiliyor.
Bağlayıcı
- Bağlayıcının
-s ve -w bayrakları, tüm platformlarda daha tutarlı çalışacak şekilde değiştirildi.
Bootstrap
- Go 1.22, bootstrap için Go 1.20'nin son nokta sürümünü veya daha yenisini gerektiriyor.
Çekirdek kütüphaneler
Yeni math/rand/v2 paketi
math/rand/v2, standart kütüphanenin ilk “v2” paketi ve math/rand ile karşılaştırıldığında birçok önemli değişiklik içeriyor.
Yeni go/version paketi
- Go sürüm dizelerini doğrulayan ve karşılaştıran işlevleri uygulayan yeni
go/version paketi eklendi.
Geliştirilmiş yönlendirme kalıpları
- Standart kütüphanedeki HTTP yönlendirmesi daha ifade gücü yüksek olacak şekilde geliştirildi.
Kütüphanelerde küçük değişiklikler
- Çeşitli kütüphanelerde küçük değişiklikler ve performans iyileştirmeleri bulunuyor.
Portlar
Darwin
- macOS'ta 64 bit x86 mimarisinde (
darwin/amd64 portu) Go araç zinciri artık varsayılan olarak position-independent executable (PIE) üretiyor.
Arm
GOARM ortam değişkeni kullanılarak yazılım ya da donanım kayan nokta seçilebiliyor.
Loong64
loong64 portu artık işlev argümanlarını ve sonuçlarını register'lar üzerinden iletiyor.
OpenBSD
- OpenBSD'de big-endian 64 bit PowerPC (
openbsd/ppc64) için deneysel bir port eklendi.
GN⁺ görüşü
- Bu Go 1.22 sürümünde özellikle
for döngüsündeki değişiklikler ve yeni math/rand/v2 paketinin eklenmesi dikkat çekiyor. Bu değişiklikler Go geliştiricilerine daha iyi performans ve kararlılık sağlarken, yeni özellikler de Go dilinin gelişimini yansıtıyor.
math/rand/v2 paketi, daha hızlı algoritmalar ve yeni API ile daha iyi rastgele sayı üretimi sunuyor; bu da kriptografi ve rastgeleliğe bağlı diğer uygulamalar için önemli bir iyileştirme anlamına geliyor.
- Go 1.22'nin, uyumluluğu korurken performansı ve geliştirici deneyimini iyileştiren çeşitli optimizasyonlar ve yeni özellikler sunarak Go topluluğu üzerinde olumlu bir etki yaratması bekleniyor.
1 yorum
Hacker News görüşleri
io.Copy, TCPConn'dan UnixConn'a kopyalama yaparken artık Linux'unsplice(2)sistem çağrısını kullanabiliyor.iopaketinde bu tür kalıplarla elde edilebilen kazanımlar takdir ediliyor.httpmuxgo121alanı üzerinden kontrol edilebiliyor.sql.Null[T]eklemesi memnuniyetle karşılanıyor. Daha öncesqlboileriçindekinullkullanılıyordu; bu yapısql.Nullile benzer bir API sunuyor, ayrıca bir değerin açıkça ayarlanıp ayarlanmadığını gösterenIsSet() boolmetodunu da içeriyor.chikütüphanesinin kaldırılıp kaldırılamayacağı değerlendiriliyor.anyanahtar kelimesinin kullanımı hakkında da görüşler paylaşılıyor.