Rust programlama dili 1.55 sürümü

Mozilla projesi tarafından kurulan ancak şu anda bağımsız kar amacı gütmeyen kuruluş Rust Foundation'ın himayesinde geliştirilen sistem programlama dili Rust 1.55'ün sürümü yayınlandı. Dil, bellek güvenliğine odaklanır, otomatik bellek yönetimi sağlar ve bir çöp toplayıcı veya çalışma zamanı kullanmadan yüksek görev paralelliği elde etmek için araçlar sağlar (çalışma zamanı, standart kitaplığın temel başlatılmasına ve bakımına indirgenir).

Rust'un otomatik bellek yönetimi, işaretçileri değiştirirken oluşan hataları ortadan kaldırır ve serbest bırakıldıktan sonra bir bellek bölgesine erişim, boş işaretçi referansları, arabellek taşmaları vb. gibi düşük seviyeli bellek manipülasyonundan kaynaklanan sorunlara karşı koruma sağlar. Kütüphaneleri dağıtmak, montajı sağlamak ve bağımlılıkları yönetmek için proje, Kargo paket yöneticisini geliştiriyor. Crates.io deposu, kitaplıkları barındırmak için desteklenir.

Ana yenilikler:

  • Kargo paketi yöneticisi, bir derleme sırasında ortaya çıkan yinelenen hataları ve uyarıları birleştirme yeteneğine sahiptir. Farklı parametrelere sahip bir paketin birden fazla oluşturulmasıyla sonuçlanan "kargo testi" ve "kargo kontrolü --all-targets" gibi komutlar yürütülürken, kullanıcıya artık tekrarlanan bir sorunun ortaya çıkışının bir özeti gösterilmek yerine gösterilir. aynı şeyi tekrar tekrar oluştururken birden fazla aynı uyarı. dosyası. $ kargo +1.55.0 kontrolü —all-targets Foo v0.1.0 kontrol ediliyor uyarı: fonksiyon hiçbir zaman kullanılmıyor: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = not: '#[warn(dead_code)]' varsayılan olarak açık uyarı: 'foo' (lib) 1 uyarı uyarısı oluşturdu: 'foo' (lib testi) 1 uyarı oluşturdu (1 kopya) Geliştirme tamamlandı [optimize edilmemiş + hata ayıklama] hedefi (s) 0.84 saniyede
  • Standart kitaplıktaki kayan nokta ayrıştırma kodu, daha hızlı ve daha doğru Eisel-Lemire algoritmasını kullanacak şekilde taşındı; bu algoritma, çok büyük basamaklı sayıların yuvarlanması ve ayrıştırılmasıyla ilgili daha önce gözlemlenen bazı sorunları çözmüştür.
  • Şablonlarda kapatılmamış aralıkları belirleme yeteneği stabil hale getirildi (“X..”, X değeriyle başlayan ve tamsayı türünün maksimum değeriyle biten bir aralık olarak yorumlanır): x'i u32 olarak eşleştirin { 0 => println! (“sıfır!”), 1.. => println!("pozitif sayı!"), }
  • std::io::ErrorKind kapsamına giren genişletilmiş hata çeşitleri (hataları NotFound ve WillBlock gibi kategorilere ayırır). Daha önce mevcut kategorilere uymayan hatalar, üçüncü taraf kodundaki hatalar için de kullanılan ErrorKind::Other kategorisine giriyordu. Artık mevcut kategorilere uymayan hatalar için ErrorKind::Uncategorized adlı ayrı bir dahili kategori var ve ErrorKind::Other kategorisi standart kitaplıkta meydana gelmeyen hatalarla sınırlıdır (io::Error değerini döndüren standart kitaplık işlevleri). ErrorKind:: kategorisini artık kullanmayın Diğer).
  • API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
    • Bağlı::klonlanmış
    • Boşaltma::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::write
    • dizi::harita
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandtamamlayıcı
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • str::from_utf8_unchecked yönteminde sabitler yerine herhangi bir bağlamda kullanılma olasılığını belirleyen “const” özelliği kullanılır.
  • powerpc64le-unknown-freebsd platformu için üçüncü düzey destek uygulandı. Üçüncü düzey temel desteği içerir ancak otomatik testler, resmi yapıların yayınlanması veya kodun oluşturulup oluşturulamayacağının kontrol edilmesi söz konusu değildir.

Kaynak: opennet.ru

Yorum ekle