Go programlama dili 1.13'in piyasaya sürülmesi

tanıtıldı programlama dili sürümü 1.13'e gitderlenmiş dillerin yüksek performansını betik dillerinin kod yazma kolaylığı, geliştirme hızı ve hata koruması gibi avantajlarıyla birleştiren hibrit bir çözüm olarak Google tarafından topluluğun katılımıyla geliştirilmektedir. Proje kodu tarafından dağıtıldı BSD lisansı altında.

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 ve diğer çalışma zamanı sorun algılama alt sistemleri, çalışma zamanı bileşenleri), bu da C programlarıyla karşılaştırılabilir performans elde etmenizi 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.

Ana yeniliklerGo 1.13 sürümünde tanıtıldı:

  • crypto/tls paketi varsayılan olarak etkinleştirilmiş protokol desteğine sahiptir TLS 1.3. Ed25519 dijital imza desteğine sahip yeni paket "crypto/ed25519" eklendi;
  • İkili sayıları (örneğin 0b101), sekizli (0o377), sanal (2.71828i) ve onaltılık kayan noktayı (0x1p-1021) tanımlamak için yeni sayısal değişmez önekler için destek ve rakamları görsel olarak ayırmak için "_" karakterini kullanma yeteneği eklendi çok sayıda (1_000_000);
  • Vardiya işlemlerinde yalnızca imzasız sayaçların kullanılmasına ilişkin kısıtlama kaldırılmıştır; bu, “‹‹” ve “››” operatörlerini kullanmadan önce uint türüne gereksiz dönüşümleri önler;
  • Illumos platformu için destek eklendi (GOOS=illumos). Android 10 platformuyla uyumluluk sağlandı.FreeBSD (11.2) ve macOS (10.11 “El Capitan”) minimum sürümlerinin gereksinimleri artırıldı.
  • GOPATH'e alternatif olarak kullanılabilecek yeni modül sisteminin geliştirilmesine devam edildi. Go 1.13'te daha önce duyurulan planların aksine, bu sistem varsayılan olarak etkin değildir ve GO111MODULE=on değişkeni aracılığıyla etkinleştirmeyi veya modüllerin otomatik olarak uygulandığı bir bağlamın kullanılmasını gerektirir. Yeni modül sistemi, entegre sürüm oluşturma desteği, paket teslim yetenekleri ve geliştirilmiş bağımlılık yönetimi özelliklerine sahiptir. Modüller sayesinde geliştiriciler artık bir GOPATH ağacı içinde çalışmaya bağlı kalmıyor, sürüm bağımlılıklarını açıkça tanımlayabiliyor ve tekrarlanabilir yapılar oluşturabiliyor.

    Önceki sürümlerin aksine, yeni sistemin otomatik uygulaması artık, GOPATH/src dizininde olması da dahil olmak üzere, go komutunu çalıştırırken geçerli çalışma dizininde veya ana dizinde bir go.mod dosyası mevcut olduğunda çalışıyor. Yeni ortam değişkenleri eklendi: Herkese açık modüllerin yollarını tanımlayan GOPRIVATE ve go.sum dosyasında listelenmeyen modüller için sağlama toplamı veritabanına erişim parametrelerini belirten GOSUMDB;

  • "Go" komutu varsayılan olarak modülleri yükler ve Google tarafından sağlanan modül aynasını ve sağlama toplamı veritabanını (proxy.golang.org, sum.golang.org ve index.golang.org) kullanarak bütünlüklerini kontrol eder;
  • Yalnızca ikili paketlere yönelik destek durduruldu; "//go:binary-only-package" modunda bir paket oluşturmak artık hatayla sonuçlanıyor;
  • "Go get" komutuna, modülün mevcut ana veya alt sürümü değiştirmeden en son bakım sürümüne güncellenmesi gerektiğini belirten "@patch" son eki için destek eklendi;
  • Kaynak kontrol sistemlerinden modüller alınırken, "go" komutu artık sürüm dizesi üzerinde ek bir kontrol gerçekleştirerek sözde sürüm numaralarını depodaki meta verilerle eşleştirmeye çalışıyor;
  • Destek eklendi hata denetimi (hata sarma) standart hata işleyicilerin kullanımına izin veren sarmalayıcıların oluşturulması yoluyla sağlanır. Örneğin, hata "e", bir yöntem sağlanarak "w" hatasının etrafına sarılabilir paketini açmak, "w" değerini döndürüyor. Programda hem "e" hem de "w" hataları mevcuttur ve kararlar "w" hatasına göre verilir, ancak "e", "w"ye ek bağlam sağlar veya onu farklı şekilde yorumlar;
  • Çalışma zamanı bileşenlerinin performansı optimize edildi (%30'a varan hız artışı kaydedildi) ve işletim sistemine daha agresif bir bellek dönüşü uygulandı (önceden bellek beş veya daha fazla dakika sonra geri dönüyordu, ancak şimdi hemen) yığın boyutunu küçülttükten sonra).

Kaynak: opennet.ru

Yorum ekle