Rust programlama dili 1.44 sürümü

yayınlanan sistem programlama dili sürümü Pas 1.44Mozilla projesi tarafından kuruldu. Dil, bellek güvenliğine odaklanır, otomatik bellek yönetimi sağlar ve çöp toplayıcı kullanmadan yüksek görev paralelliği elde etmek için araçlar sağlar ve runtime.

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üphanelerin dağıtılması, montajın sağlanması ve bağımlılıkların projeye göre yönetilmesi için bir paket yöneticisi geliştirilmektedir. Kargo, program için gereken kütüphanelere tek tıklamayla ulaşmanızı sağlar. Kitaplıkları barındırmak için bir depo desteklenir sandıklar.io.

Yeni sürümün duyuru metninde, Rust geliştiricileri siyasete karıştı ve polis şiddetine karşı protestocularla dayanışmanın bir işareti olarak Rust 1.44'teki değişikliklerin tam bir incelemesini yayınlamayı açıkça reddetti ve bu konunun daha önemli olduğunu belirtti. Teknik bilgi alışverişinden daha fazlası. Temel yenilikler:

  • Kargo paketi yöneticisi, ağaca benzer bir bağımlılık grafiği görüntüleyen "kargo ağacı" komutunu entegre eder. Aynı paketin farklı sürümlerindeki bağımlılıkları değerlendirmenize olanak tanıyan “—duplicates” (“kargo ağacı -d”) seçeneği de eklenmiştir.

    mdbook v0.3.2 (/Kullanıcılar/src/rust/mdbook)
    ├── amonyak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── günlük v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── günlük v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── sifazer v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [derleme bağımlılıkları] │ │ │ └── version_check v0.1.5
    ...

  • Bir std'ye ("#![no_std]") bağlı olmayan uygulamalar için, eşzamansız programlama teknikleri desteği, "async" işlevine, eşzamansız taşıma { ... } bloğuna ve ".await" operatörüne dayalı olarak uygulanır. engellemeyen işleyicilerin ana komut akışının yazılmasını basitleştirin.
  • Ayrıştırıcıya genişletilebilir bir modül hiyerarşisi tanımlama şeması desteği eklendi. Örneğin, aşağıdaki yapı, "foo/bar/baz.rs" modülünün gerçekte yokluğuna rağmen bir hata üretmez (yapı anlamsal olarak hâlâ geçersizdir ve bir hataya neden olabilir, ancak değişiklikler şu adreste görülebilir ve ayrıştırılabilir: makro ve koşullu derleme düzeyi):

    #[cfg(FALSE)] mod foo {
    mod çubuğu {
    mod bazı;
    }
    }

  • Rusc derleyicisi, artımlı modda "-C codegen-units" bayrağını kullanma yeteneğini ekledi. Catch_unwind'in uygulanması, geri alma işleminin devre dışı bırakılması ve herhangi bir istisna atılmaması durumunda performansa hiçbir etkisi olmayacak şekilde yeniden düzenlendi.
  • aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos ve x86_64-apple-tvos platformları için Level XNUMX desteği sağlanmıştır. Üçüncü düzey temel desteği içerir, ancak otomatik testler ve resmi yapıların yayınlanması yoktur.
  • API'lerin yeni bir kısmı, stabilize olanlar da dahil olmak üzere stabil kategoriye aktarıldı
    PathBuf::with_capacity,
    PathBuf::kapasite,
    PathBuf::açık,
    PathBuf::rezerve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Düzen::align_to,
    Düzen::pad_to_align,
    Düzen::dizi ve
    Düzen::genişlet.

  • Standart kütüphanenin genişletilmiş fonksiyonları:
    • Doğrudan Vec::new()'a yansıyan özel bir "vec![]" çeşidi eklendi ve "vec![]" ifadesinin sabitler yerine bağlamda kullanılmasına olanak tanıdı.
    • Convert::Infalible'a özelliğin bir uygulaması (impl) eklendi Esrar.
    • OsString akıllı işaretçileri uygular DerefMut и IndexMut, "&mut OsStr" değerini döndürüyor.
    • Unicode 13 desteği eklendi.
    • String'de uygulandı <&mut str>'den.
    • IoSlice bu özelliği uyguluyor kopya.
    • Vec <[T;'den uygulandı; N]>.
    • proc_macro::LexError fmt::Display ve Error'u uygular.
  • Sabitler yerine herhangi bir bağlamda kullanılıp kullanılamayacağını belirleyen “const” niteliği tüm tamsayı türleri için from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ve to_ne_bytes yöntemlerinde kullanılır.
  • Windows'ta GNU platformları için ".lib" yerine ".a" biçiminde statik kitaplıklar oluşturma desteği eklendi.
  • LLVM için minimum gereksinimler LLVM sürüm 8'e yükseltildi.

Kaynak: opennet.ru

Yorum ekle