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

tanıtıldı programlama dili sürümü 1.14'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.14 sürümünde tanıtıldı:

  • "Go" komutundaki yeni modül sistemi genel kullanıma hazır olarak bildirilir, varsayılan olarak etkindir ve bağımlılık yönetimi için GOPATH yerine önerilir. 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.
  • Katma örtüşen bir dizi yöntemle arayüzleri gömme desteği. Yerleşik bir arayüzdeki yöntemler artık mevcut arayüzlerdeki yöntemlerle aynı adlara ve imzalara sahip olabilir. Açıkça bildirilen yöntemler daha önce olduğu gibi benzersiz kalır.
  • "Defer" ifadesinin performansı iyileştirildi; bu, neredeyse ertelenmiş bir işlevin doğrudan çağrılması kadar hızlı hale getirildi ve performansa duyarlı kodda ertelenmiş işlev yürütülmesine olanak tanıdı.
  • Eşyordamların (goroutinler) eşzamansız olarak önceden alınması sağlanmıştır - işlev çağrıları içermeyen döngüler artık potansiyel olarak zamanlayıcının kilitlenmesine veya çöp toplama işleminin başlamasının gecikmesine neden olabilir.
  • Bellek sayfası ayırma sisteminin verimliliği iyileştirildi ve artık büyük GOMAXPROCS değerlerine sahip yapılandırmalarda önemli ölçüde daha az kilit çekişmesi var. Sonuç olarak, büyük bellek blokları yoğun bir şekilde dağıtılırken, gecikme süresi azalır ve verim artar.
  • Time.After, time.Tick, net.Conn.SetDeadline fonksiyonlarında kullanılan dahili zamanlayıcılar çalıştırılırken kilitleme optimize edildi ve bağlam anahtarlarının sayısı azaltıldı.
  • Go komutunda, kökte belirli bir satıcıya bağlı harici bağımlılıkları iletmeyi amaçlayan bir satıcı dizini varsa "-mod=vendor" bayrağı varsayılan olarak etkinleştirilir. Modülleri "satıcı" dizini yerine modül önbelleğinden yüklemek için ayrı bir "-mod=mod" bayrağı eklendi. go.mod dosyası salt okunursa ve üst "satıcı" dizini yoksa "-mod=salt okunur" bayrağı varsayılan olarak ayarlanır. Modülün kök dizinindeki dosya yerine alternatif bir go.mod dosyası belirtmek için "-modfile=file" bayrağı eklendi.
  • GOINSECURE ortam değişkeni eklendi, ayarlandığında go komutu HTTPS kullanımını gerektirmez ve modülleri doğrudan yüklerken sertifika kontrolünü atlar.
  • Derleyici, kodun unsafe.Pointer'ın güvenli kullanımına yönelik kurallara uygunluğunu kontrol etmek için varsayılan olarak etkin olan “-d=checkptr” bayrağını ekledi.
  • Teslimata yeni bir paket dahildir karma/mafaz keyfi bayt dizileri veya dizeleri için karma tabloları oluşturmak için kriptografik olmayan karma işlevleriyle.
  • Linux'ta 64 bit RISC-V platformu için deneysel destek eklendi.
  • 64 bit ARM sistemlerinde FreeBSD desteği eklendi.

Kaynak: opennet.ru

Yorum ekle