Go programlama dili 1.18'un piyasaya sürülmesi

Derlenmiş dillerin yüksek performansını betik dillerinin kod yazma kolaylığı gibi avantajlarıyla birleştiren hibrit bir çözüm olarak Google tarafından topluluğun katılımıyla geliştirilen Go 1.18 programlama dilinin piyasaya sürülmesi sunuldu. , geliştirme hızı ve hata koruması. Proje kodu BSD lisansı altında dağıtılmaktadır.

Go'nun sözdizimi C dilinin tanıdık unsurlarına ve Python dilinden bazı alıntılara dayanmaktadır. Dili oldukça kısadır ancak kodun okunması ve anlaşılması kolaydır. Go kodu, bir sanal makine kullanmadan yerel olarak çalışan bağımsız ikili yürütülebilir dosyalar halinde derlenir (profil oluşturma, hata ayıklama modülleri ve diğer çalışma zamanı sorun algılama alt sistemleri, çalışma zamanı bileşenleri olarak entegre edilmiştir), bu da C programlarıyla karşılaştırılabilir performans sağlar.

Proje başlangıçta, paralel hesaplamayı ve paralel yürütülen yöntemler arasındaki etkileşimi düzenlemek için operatör düzeyinde araçlar sağlamak da dahil olmak üzere, çok iş parçacıklı programlama ve çok çekirdekli sistemlerde verimli çalışma göz önünde bulundurularak geliştirildi. Dil ayrıca aşırı tahsis edilmiş bellek bloklarına karşı yerleşik koruma sağlar ve bir çöp toplayıcı kullanma yeteneği sağlar.

Yeni sürüm, bir geliştiricinin aynı anda birden fazla türle çalışmak üzere tasarlanmış işlevleri tanımlayıp kullanabileceği genel işlevler ve türler (jenerikler) için destek ekler. Birden çok veri türünü kapsayan birleştirilmiş türler oluşturmak için arayüzleri kullanmak da mümkündür. Jeneriklere yönelik destek, mevcut kodla geriye dönük uyumluluğu bozmadan uygulanır. // Set değerlerinin toplamı, int64 ve float64 türleri için çalışır func SumIntsOrFloats[K karşılaştırılabilir, V int64 | float64](m haritası[K]V) V { var s V for _, v := range m { s += v } return s } // Genel tür tanımına sahip başka bir seçenek: type Number arayüzü { int64 | float64 } func SumNumbers[K karşılaştırılabilir, V Numarası](m haritası[K]V) V { var s V for _, v := range m { s += v } return s }

Diğer iyileştirmeler:

  • Bulanıklaştırma kodu testine yönelik yardımcı programlar standart araç setine entegre edilmiştir. Bulanıklaştırma testi sırasında, giriş verilerinin tüm olası rastgele kombinasyonlarından oluşan bir akış oluşturulur ve bunların işlenmesi sırasındaki olası hatalar kaydedilir. Bir dizi çökerse veya beklenen yanıtla eşleşmiyorsa, bu davranışın büyük olasılıkla bir hata veya güvenlik açığına işaret ettiği söylenebilir.
  • Çoklu modüler çalışma alanları için ek destek, aynı anda birden çok modülde komut yürütmenize olanak tanıyarak birden çok modülde aynı anda kod oluşturup çalıştırmanıza olanak tanır.
  • Apple M1, ARM64 ve PowerPC64 işlemci tabanlı sistemler için önemli performans optimizasyonları yapıldı. Bağımsız değişkenleri işlevlere iletmek ve sonucu döndürmek için yığın yerine kayıtları kullanma yeteneği etkinleştirildi. Derleyici tarafından döngülerin satır içi açılması iyileştirildi. Derleyicideki tip kontrolü tamamen yeniden tasarlandı. Bazı testler, önceki sürümle karşılaştırıldığında kod performansında %20'lik bir artış olduğunu gösteriyor ancak derlemenin kendisi yaklaşık %15 daha uzun sürüyor.
  • Çalışma zamanında, boş belleğin işletim sistemine geri döndürülmesinin verimliliği artırıldı ve davranışı daha öngörülebilir hale gelen çöp toplayıcının çalışması iyileştirildi.
  • Standart kütüphaneye yeni net/netip ve debug/buildinfo paketleri eklendi. TLS 1.0 ve 1.1 desteği istemci kodunda varsayılan olarak devre dışıdır. crypto/x509 modülü, SHA-1 karması kullanılarak imzalanan sertifikaları işlemeyi durdurdu.
  • Linux ortamına yönelik gereksinimler artırıldı; çalışmak için artık en az 2.6.32 sürümüne sahip bir Linux çekirdeğine sahip olmanız gerekiyor. Bir sonraki sürümde FreeBSD için de benzer değişiklikler bekleniyor (FreeBSD 11.x şubesine yönelik destek sonlandırılacak) ve çalışması için en azından FreeBSD 12.2 gerekli olacak.

Kaynak: opennet.ru

Yorum ekle