2 puan yazan GN⁺ 2023-08-15 | 1 yorum | WhatsApp'ta paylaş
  • Go programlama dilinde geriye dönük uyumluluğun önemini ele alan makale; Go 1.21'in yeni özelliklerine ve Go 2'nin geleceğine odaklanıyor
  • Go 1.21, uyumluluğu iyileştirmeye yönelik yeni özellikler içeriyor; amaç, Go'yu kararlı ve öngörülebilir tutmak ve geliştiricilerin dildeki değişikliklerden çok yaptıkları işe odaklanabilmesini sağlamak
  • Go ekibi 10 yıldan uzun süredir uyumluluğa odaklanıyor; Go 1 tanımına göre yazılan programların, bu tanımın ömrü boyunca değişiklik yapılmadan doğru şekilde derlenip çalışacağı yönünde açık bir niyet bulunuyor
  • Uyumluluğu korumak için iki ana yaklaşım açıklanıyor: API kontrolleri ve testler. API kontrolleri, mevcut API'lerin kaldırılmamasını veya mevcut kodu bozacak şekilde değiştirilmemesini garanti ediyor. Testler ise mevcut testlerin bir sonraki Go sürümünün geliştirme sürümüne karşı çalıştırılmasını içeriyor
  • Google içinde Go test edilirken bulunan incelikli uyumluluk sorunlarına örnekler veriliyor; struct literal'ları ve yeni alanlar, zaman hassasiyeti gibi
  • Uyumluluk sorunları üç kategoriye ayrılıyor: çıktı değişiklikleri, girdi değişiklikleri ve protokol değişiklikleri
  • Go 1.21, geriye dönük uyumluluğu artırmak için GODEBUG kullanımını genişletip resmileştiriyor. GODEBUG ayarları en az iki yıl boyunca korunuyor ve ana paketin go.mod dosyasında listelenen Go sürümüyle eşleşecek şekilde ayarlanıyor
  • Makale, Go 2 ile ilgili bir güncellemeyle sona eriyor ve Go 1 programlarını bozacak bir Go 2 olmayacağı duyuruluyor. Bunun yerine Go ekibi uyumluluğa öncelik verecek; bunun da Go 1 için alınan en önemli tasarım kararı olduğuna inanıyor

1 yorum

 
GN⁺ 2023-08-15
Hacker News görüşü
  • Bu yazı, Go 1.21’de uyumluluğun önemini ve gelecekteki olası bir Go 2’yi tartışıyor.
  • Go 1.21 iki benzersiz özellik sunuyor: her değişiklik için GODEBUG ayarı ile eski uygulamanın kullanımını tespit etmek için metrikler ve eski ile yeni go toolchain’lerini otomatik olarak getiren modül başına toolchain sürümü.
  • Belirli bir Go sürümü belirtildiğinde, yeni Go sürümleri ilgili opt-out yapılandırmasını otomatik olarak uygulayarak yeni davranış istenene kadar bunun devreye girmemesini sağlıyor.
  • Go dil ekibi geriye dönük uyumluluğu korumaya kararlı ve bu, büyük ölçekli Go sistemlerini sürdüren geliştiriciler tarafından takdir ediliyor.
  • Bazı kullanıcılar, tip sistemindeki önemli iyileştirmelerin kırıcı değişiklikler gerektirebileceği yönünde endişe dile getiriyor.
  • Go’nun gerçek bir Go 2’ye sahip olmaması öneriliyor; çünkü önemli değişiklikler dilin çatallanmasını ve yeniden adlandırılmasını gerektirebilir.
  • “Sıkıcı” olarak tanımlanan Go’nun kararlılığı ve öngörülebilirliği, parçalanmış ve sürekli değişen JavaScript ekosistemiyle tezat oluşturuyor.
  • Yazı ayrıca “Go 1.21’de ileriye dönük uyumluluk ve Toolchain yönetimi” hakkındaki ilgili bir gönderiden de bahsediyor.
  • Go’daki geriye dönük uyumluluk taahhüdü övülüyor; bir kullanıcı, Python’dan Go’ya kod taşımanın ölçeklenmelerine nasıl yardımcı olduğunu paylaşıyor.
  • Go’da uyumluluğu sağlamak için kullanılan teknikler saygı görüyor ve başka dil tasarımlarında da kullanılmaları düşünülüyor.