- Go dilinin açık kaynak olarak yayımlanmasının 16. yılı vesilesiyle, son 1 yıldaki başlıca teknik gelişmeler ve gelecek planları özetleniyor
- Go 1.24 ve 1.25 sürümlerinde test, güvenlik ve performans genelinde büyük çaplı iyileştirmeler yapıldı
synctest, container-aware scheduling, flight recorder gibi özelliklerle üretim ortamında güvenilirlik ve verimlilik güçlendirildi
- Kriptografi paketleri için FIPS 140-3 sertifikasına hazırlık, Green Tea GC gibi gelişmelerle güvenlik ve performans artırıldı
- Go ekosistemi yapay zeka entegrasyonlu geliştirme ve modern kod otomasyonu ile genişliyor; gelecekte büyük ölçekli donanım ve yapay zeka desteğinin daha da güçlendirilmesi planlanıyor
Go'nun 16. yılı ve son sürümlere genel bakış
- 10 Kasım'da Go'nun açık kaynak olarak yayımlanmasının 16. yılı kutlandı
- 2024 Şubat'ta Go 1.24, Ağustos'ta ise Go 1.25 düzenli sürüm takvimine uygun olarak yayımlandı
- Bu iki sürüm, yüksek güvenilirlikli yazılım geliştirme için API'ler, güvenlik güçlendirmeleri ve çalışma zamanı performans iyileştirmeleri içeriyor
- Go ekibi, üretken yapay zeka çağındaki değişime yanıt olarak Go tabanlı yapay zeka entegrasyonu, ajanlar ve altyapı geliştirme çalışmalarını ilerletiyor
Temel dil ve standart kütüphane iyileştirmeleri
- Go 1.24'te deneysel olarak sunulan ve 1.25'te resmileştirilen
testing/synctest paketi, asenkron ve paralel kod testlerini basitleştiriyor
- Zaman sanallaştırması sayesinde yavaş veya kararsız testleri güvenilir ve anında çalışan testlere dönüştürüyor
- Go çalışma zamanı ve standart kütüphane ile derin biçimde entegre bir yapıya sahip
testing.B.Loop API'si, mevcut benchmark API'sinin (B.N) kullanım kolaylığını artırıyor ve geleneksel tuzakları ortadan kaldırıyor
Context tabanlı test temizleme ve log çıktısı API'leri eklendi; böylece test yönetimi daha verimli hale geldi
- Go 1.25, container-aware scheduling sunarak konteyner içindeki paralel işlemeyi otomatik olarak ayarlıyor
- CPU throttling'i önlüyor ve gecikmeyi iyileştiriyor
- flight recorder özelliği, yürütme izleyicisini genişleterek hata oluştuktan önceki olayların ayrıntılı biçimde kaydedilmesini sağlıyor
Güvenlik odaklı yazılım geliştirme
- Go'nun kriptografi paketlerinde, bağımsız güvenlik şirketi Trail of Bits tarafından yapılan denetimde yalnızca düşük önem derecesine sahip tek bir sorun bulundu
- Go Security Team ile Geomys iş birliği sayesinde CAVP sertifikası alındı ve FIPS 140-3 sertifikası için hazırlık tamamlandı
- Bu durum, düzenlemeye tabi ortamlarda Go'nun kullanılabilirliğini artırıyor ve mevcut gayriresmî çözümlere bağımlılık sorununu azaltıyor
- Go standart kütüphanesi, varsayılan olarak güvenli tasarım (safe by default) yönünde gelişiyor
- Go 1.24'teki
os.Root API'si, dosya sistemi erişiminde yol geçişi zafiyetlerini önlüyor
İç yapı ve performans iyileştirmeleri
- Go 1.24'te
map uygulaması tamamen yeniden tasarlandı ve modern hash tablosu tasarımları benimsendi
- Performans arttı, gecikme azaldı ve bellek verimliliği iyileşti
- Go 1.25'teki Green Tea çöp toplayıcısı, GC ek yükünü %10 ila %40 azalttı
- Modern donanıma uygun yeni algoritmalar uygulandı
- Go 1.26'da AVX-512 destekli donanımlarda ek %10 iyileştirme planlanıyor
- Go 1.26'dan itibaren varsayılan olarak etkinleştirilmesi bekleniyor
Geliştirme yığınının genişlemesi ve yapay zeka entegrasyonu
- Go, bir dilden öte tam kapsamlı bir geliştirme platformuna dönüşüyor
- gopls dil sunucusu, 4 düzenli sürümle (v0.17~v0.20) yeteneklerini genişletti
- Kod analizörleri, refactoring, JSON etiket işleme, yerleşik MCP sunucusu gibi özellikler eklendi
- Otomatik kod modernizasyonu (modernizer) özelliği tanıtıldı
- Eski kod kalıplarını modern ve daha güvenli biçimlere otomatik dönüştürüyor
- IDE öneri özellikleriyle entegre çalışarak tutarlı kod korunmasına ve yapay zeka destekli öğrenmeye yardımcı oluyor
- Go 1.26'da
go fix komutunun modernizer'ın tamamını topluca uygulayacak şekilde yeniden düzenlenmesi planlanıyor
- Anthropic ve topluluk iş birliğiyle, Model Context Protocol (MCP) için resmî Go SDK v1.0.0 yayımlandı
- MCP istemci ve sunucu desteği sunuyor; gopls'in MCP özellikleri üzerine kurulu
- Google'ın ADK for Go aracı, MCP SDK üzerinde çok ajanlı sistem geliştirme çerçevesi sağlıyor
- Go'nun eşzamanlılık, performans ve güvenilirlik özelliklerinin üretim seviyesinde yapay zeka geliştirmeye uygun olduğunu gösteriyor
Gelecek planları ve topluluk
- Green Tea GC'nin genel kullanıma sunulması, SIMD donanım desteği ve çok çekirdekli ölçeklenebilirliğin güçlendirilmesi planlanıyor
encoding/json için büyük çaplı yükseltme, goroutine sızıntısı profilleme, net/http ve unicode iyileştirmeleri üzerinde çalışılıyor
- Go ile yapay zekanın birleşimi için dil, araç ve tanı sistemleri genişletiliyor
- Go açık kaynak projesi, katkıcı topluluğunu büyütmeyi ve geliştirme sürecinin ölçeklenebilirliğini artırmayı hedefliyor
- Go'nun gelişimi, kullanıcı ve katkıcı topluluğunun katkılarına dayanıyor ve gelecekte de sürdürülebilir büyümeye işaret ediyor
1 yorum
Hacker News yorumları
Go'yu gerçekten çok seviyorum. Özellikle monorepo ortamında parlıyor. Yeni bir uygulama eklerken tek yapman gereken bir klasör oluşturup içine
main()fonksiyonu olan bir go dosyası koymak. Kök dizindego install ./...çalıştırınca her şey hızlıca derleniyorHızlıca bir CLI programı çıkarmam gerektiğinde bu sadelik tam anlamıyla dahice oldu
Eskiden dilin darboğaz olmadığı söylenirdi ama Go'yu ilk gördüğümde “bu farklı” diye düşünmüştüm. Öğrenmesi de gerçekten çok hızlı — sanırım dil spesifikasyonu küçük olduğu için.
Hissedilen şu: Rust'un sunduğunun %80'ini %20 çabayla alıyorsun
Bana göre Go, aşırı sadeleştirilmiş bir Rust gibi. Kodun otomatik düzeltilmesi, döngülerin dayatılması, map anahtarının varlığını kontrol etmenin hantallığı rahatsız edici.
Dizi işleme ya da enum tanımı da tuhaf, bir de şirketin linter kuralları yüzünden kod bölünüp parçalanıyor ve neredeyse enterprise Java gibi oluyor.
Yine de arayüzler basit ve öğrenmesi hızlı.
Eğer Go'da düzgün enum, doğal slice sözdizimi, iterator, sonuç açma için kısa sözdizimi olsaydı çok daha iyi olurdu
Varsayılan json kütüphanesi de boş slice'ları null olarak serileştirmek gibi pek çok sorun taşıyor.
Yine de tooling hızı çok iyi, pratikliğini inkâr edemem
Sonuç açma konusu toplulukta uzun zamandır tartışılıyor ama henüz temiz bir çözüm yok
Bir dizinin ortasından sık sık eleman siliyorsan, yanlış veri yapısını seçmişsindir
slices.Deleteile silme yapılabiliyor veif err != nilzorunluluğu gibi şeyler dil sorunu değil, takım kuralı sorunuGo'nun Apple II için çıktığını sanıp kısa süreliğine heyecanlanmıştım (SWEET16 referansı)
Yeni bir Go kod tabanına katkı yapmak kolay.
Dilin sadeliği ve gofmt, golangci-lint gibi standart araçlar sayesinde tüm kod tabanları benzer bir yapıya sahip oluyor.
Başka dil topluluklarındaki gibi build aracı tartışmaları yok
Yalnız
%operatörünün negatif sayılardaki davranışı kafamı karıştırdıOtomatik kod modernizasyon aracı (modernizer) fikri ilginç.
gopls v0.18.0 ile birlikte sözdizimi analizi yaparak eski deyimleri bulup daha hızlı ve daha güvenli koda otomatik dönüştürüyor.
gofmt nasıl stil tutarlılığı sağladıysa, modernizer da deyim tutarlılığı sağlayacak
golangci-lint içinde exhaustive, exhaustruct, wrapcheck gibi linter'ları açınca güvenlik ciddi biçimde artıyor ve geliştirme hızı yükseliyor
Şirketimizde Go backend geliştiricileri için 10 haftalık onboarding programı yürütüyoruz (plan bağlantısı)
Python'dan Go'ya geçeli 7 yıl oldu ve bu, startup başarımızın temel etkenlerinden biriydi
Başta Go'ya şüpheyle yaklaşıyordum ama şimdi en sevdiğim dil oldu. Basit ama güçlü.
Yine de null kontrolü, hata stack trace'leri, sum type için exhaustive kontrol yerleşik gelse iyi olurdu
Go, fonksiyonel programlama tarafında biraz daha özellik sunsa neredeyse kusursuz olurdu.
Özellikle değişmezlik, null yönetimi, switch exhaustiveness eksik hissettiriyor.
Bunu telafi etmek için Uber'in NilAway aracını kullanıyorum ama tür sistemi seviyesinde desteklenmesi daha iyi olurdu