Merakla beklenen Go 1.18 programlama dili, çığır açan jenerik özelliklerini içeren bir üretim sürümü olarak nihayet piyasaya sürüldü. Bu, Go 1.0'ın 2012'deki ilk lansmanından bu yana Go programlama dilindeki en önemli değişikliği işaret ediyor. Go 1.18, 15 Mart itibarıyla go.dev adresinden indirilebilir.
Generics, Go programcıları tarafından en çok talep edilen özellik olmuştur ve parametreleştirilmiş türleri kullanan genel kod için destek sunar. Sonraki sürümler, daha karmaşık jenerik kullanım durumları için daha fazla destek sağlamak üzere planlanmıştır. Kullanıcılar, jenerik öğretici ve sürüm notları aracılığıyla bu özellikle ilgili bilgilere erişebilir.
Go dil sunucusu gopls, Visual Studio Code Go uzantısıyla birlikte artık jenerikleri desteklemektedir. Jeneriklerle birlikte gopl yükleme talimatları için belgelere bakın.
Go 1.18 üretim sürümü, beta ve sürüm aday aşamalarını izliyor. İlk sürümün Şubat 2022'de çıkması bekleniyordu ancak Mart ortasına kadar ertelendi. 14 Aralık'ta kullanıma sunulan Go 1.18 Beta 1, parametreleştirilmiş türler kullanan genel kodu desteklemek için Google tarafından geliştirilen açık kaynak dilinin önde gelen önizleme sürümüydü. Bu beta sürümü aynı zamanda şimdiye kadarki en çok indirilen Go beta sürümüydü ve önceki beta sürümlerinden iki kat daha fazla indirme sayısına sahipti.
Jenerik programlama, fonksiyonların ve veri yapılarının tiplerin hesaba katılmadığı jenerik bir formda temsil edilmesini sağlayan bir geliştirmedir. Bu, kod paylaşımını kolaylaştırır ve programların oluşturulmasını basitleştirir.
Go ekibi, herhangi bir önemli yeni özellikle yeni hatalar ortaya çıkabileceğinden, yeni jenerik yeteneklere yaklaşırken dikkatli olunmasını tavsiye etti. Ayrıca, belirli özyinelemeli jenerik tür türleri gibi belirli ince durumlara yönelik destek, gelecekteki sürümlere ertelenmiştir.
Bu uyarıya rağmen, erken benimseyenlerin yeni özellikten memnun kaldıkları bildirildi. Jenerik ilaçlara başlamayla ilgili kısa bir eğitim burada yayınlandı. Go, bir tür genel programlama biçimi olan arayüz türlerine sahipken, Temmuz 2019'daki bir blog gönderisinde bildirildiği gibi, Go geliştiricilerinin jeneriklerden istediği belirli yönlerden yoksundu. Örneğin, Go jenerik savunucuları, bir dilimin öğe türüyle ilgilenmeden Ters Çevir gibi işlevleri aradılar.
Go 1.18 için yayınlanan notlar, aşağıdakiler gibi diğer temel özelliklerini de vurgulamaktadır:
- Bir programın çökmesine veya geçersiz yanıtlar döndürmesine neden olan girdileri belirlemek için bulanıklaştırma tabanlı testler yazmak için yerleşik destek. Bu özellik Go 1.18'de deneyseldir.
- Geliştiricilerin aynı anda birden fazla Go modülüyle çalışmasına olanak tanıyan, daha kapsamlı projeler için gerekli olan bir Go çalışma alanı modu.
- Artık derleyici bayrakları gibi yapı ayrıntılarını kaydeden gelişmiş bir go version -m komutu.
- Kullanıcıların AMD64 mimarisinin dört sürümü arasından seçim yapmasına olanak tanıyan bir GOAMD64 ortam değişkeni.
- Apple M1, ARM64 ve PowerPC64'te CPU performansında %20'ye varan iyileştirmeler, Go 1.17 kaydı ABI çağrı kuralının bu mimarilere genişletilmesine atfedilebilir.
- Windows/Arm ve Windows/Arm64 bağlantı noktaları artık işbirlikçi olmayan önlemeyi destekleyerek bu özelliği dört Windows bağlantı noktasının tümü için kullanılabilir hale getiriyor ve Win32 işlevleri çağrılırken uzun süre bloke eden ince hataları potansiyel olarak ele alıyor.
- Çöp toplama çalıştırmalarının sıklığını belirlerken bu kaynakların dahil edilmesi nedeniyle, yığın olmayan GC işi kaynakları önemli olduğunda daha öngörülebilir çöp toplama ek yükü.
Go 1.17, Ağustos ayında yayınlandı. Go, en çok Docker kapsayıcı sisteminin geliştirilmesindeki kullanımıyla tanınır ve güçlü eşzamanlılık desteğiyle basit, öğrenmesi kolay bir programlama dili olacak şekilde tasarlanmıştır. Web, mobil ve arka uç uygulamaları oluşturmak için AppMaster platformu gibi no-code çözümleri keşfetmek isteyen geliştiriciler için, teknik borcu ortadan kaldırırken uygulama geliştirmeyi hızlandırmaya ve maliyetleri düşürmeye yardımcı olabilir.