Go programlama dili 1.16'in 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.16 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.

Go 1.16'da sunulan önemli yeni özellikler:

  • Programa rastgele dosya ve dizinleri gömmek için araçlar sağlayan yerleştirme paketi eklendi. Derleme zamanında gömülecek dosyaları belirtmek için yeni bir "//go:embed" yönergesi sağlanmıştır. Örneğin, kod yorumunda "//go:embed test.txt" ifadesinin belirtilmesi ve ardından "var f embed.FS" değişkeninin bildirilmesi, test.txt dosyasının gömülmesine ve bu dosyaya "" aracılığıyla erişilebilmesine yol açacaktır. f” tanımlayıcısı. Benzer şekilde, iş için gerekli olan belirli bir türdeki kaynaklara veya bireysel değerlere sahip dosyaları gömebilirsiniz; örneğin, version.txt dosyasından "s" dize değişkenini elde etmek için şunları belirtebilirsiniz: import _ “embed ” //go:embed version.txt var s string print(s)
  • Varsayılan olarak, GOPATH tabanlı bağımlılık yönetiminin yerini alan, entegre sürüm oluşturma desteğine sahip yeni modül sistemi artık gereklidir. GO111MODULE ortam değişkeni artık varsayılan olarak "açık" olarak ayarlanmıştır ve çalışma dizininde veya ana dizinde bir go.mod dosyasının bulunmasına bakılmaksızın modüller modu kullanılır. Yeni modda, "go build" ve "go test" gibi derleme komutları go.mod ve go.sum'un içeriğini değiştirmez ve "go install" komutu sürüm argümanlarını işler ("go install example.com/")[e-posta korumalı]"). Eski davranışı geri döndürmek için GO111MODULE'u “otomatik” olarak değiştirin. Geliştiricilerin %96'sının şimdiden yeni modül sistemine geçtiği belirtiliyor.
  • Bağlayıcı optimize edildi. Büyük projeler için düzen artık %20-25 daha hızlı ve %5-15 daha az bellek gerektiriyor.
  • Derleyici, "for" döngülerinin, yöntem değerlerinin ve "tip anahtarı" yapılarının kısaltılmış tanımlarıyla işlevlerin satır içi genişletilmesi için destek ekledi.
  • Yeni Apple M1 ARM çipiyle donatılmış Apple sistemleri için destek eklendi. 64 bit ARM'de NetBSD ve MIPS64 sistemlerinde OpenBSD desteğiyle netbsd/arm64 ve openbsd/mips64 bağlantı noktaları eklendi. Linux/riscv64 bağlantı noktasına cgo ve “-buildmode=pie” modu desteği eklendi.
  • x87 derleme modu desteği durduruldu (GO386=387). SSE2 talimatsız işlemci desteği artık "GO386=softfloat" yazılım modu aracılığıyla sağlanabilmektedir.

Ek olarak, "Null" değerini (boş güvenlik) kullanmak için güvenli modun stabilize edildiği Dart 2.12 dilinin beta sürümünün test edilmeye başlandığını not edebiliriz; bu, değişkenleri kullanma girişimlerinin neden olduğu çökmeleri önlemeye yardımcı olacaktır. değer tanımsızdır ve “Null” olarak ayarlanmıştır. Mod, değişkenlere açıkça null değeri atanmadıkça null değerlere sahip olamayacağını ima eder. Mod, derleyicinin ek optimizasyonlar uygulamasına olanak tanıyan değişken türlerine kesinlikle saygı gösterir. Tür uyumluluğu derleme zamanında kontrol edilir, örneğin "int" gibi tanımsız durumu ima etmeyen bir türe sahip bir değişkene "Null" değerini atamaya çalışırsanız bir hata görüntülenecektir.

Kaynak: opennet.ru

Yorum ekle