Rust programlama dili 1.36 sürümü

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

Rust'un otomatik bellek yönetimi, geliştiriciyi işaretçi manipülasyonundan kurtarır ve boş bellek erişimleri, boş işaretçi referansları, arabellek taşmaları ve benzeri 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.

Ana yenilikler:

  • Özellik stabilize edildi gelecekasync / .await blokları kullanılırken değerlendirmesi henüz tamamlanamayan bir değeri temsil eder. Future kullanılarak tanımlanan eşzamansız değerler, belirli bir değerin hesaplamalarının tamamlanmasını beklerken aynı zamanda iş parçacığında faydalı işler yürütmeye devam etmeyi mümkün kılar;
  • Kitaplık stabilize edildi tahsis etmekBellekte ayrılan değerleri yönetmek için akıllı işaretçiler ve koleksiyonlar sağlayan. Std'deki bellek ayırma artık türü kullanıyor Bir şeyalloc'tan yeniden dışa aktarılanlar. alloc'un ayrı kullanımı, std'ye ("#![no_std]") bağlı olmayan uygulamalarda ve ayrıca std'siz benzer programlarda kullanılmak üzere tasarlanmış kitaplıklarda anlamlıdır;
  • Değerlerin doğru şekilde başlatılmasına yönelik kontrolleri atlamak için önerilen ara tip Belki BirimDaha güvenli bir alternatif olarak mem::uninitialized işlevi yerine kullanılabilir. mem::uninitialized işlevi hızlı bir şekilde diziler oluşturmak için uygundur, ancak derleyiciyi yanlış yönlendirir çünkü başlatılmış gibi görünür, ancak gerçekte değer başlatılmamış olarak kalır. MaybeUninit, derleyiciye değerin başlatılmamış olduğunu açıkça belirtmenize, bununla ilişkili olası tanımlanmamış davranışı dikkate almanıza ve ayrıca programlardaki kontrolleri "maybe_t:" ve adım adım başlatma yoluyla düzenlemenize ve tamamlandığını işaretlemenize olanak tanır. “.assume_init()” çağrısını kullanarak. MaybeUninit'in gelişiyle mem::uninitialized işlevi kullanımdan kaldırıldı ve kullanılması önerilmez;
  • Ödünç alınan değişkenlerin ömrünü kaydetmek için sistemi genişleten NLL (Sözcük Dışı Yaşam Süreleri) tekniği, Rust 2015 dili için stabilize edildi (başlangıçta NLL yalnızca Rust 2018 tarafından destekleniyordu). NLL, yaşam sürelerini sözcük düzeyinde taahhüt etmek yerine, bunu yürütme akış grafiğindeki işaretçi kümesi düzeyinde yapar. Bu yaklaşım, değişkenlerin ödünç alınmasını kontrol etme kalitesini artırmanıza (ödünç alma denetleyicisi) ve kullanımı daha önce hataya yol açan bazı doğru kod türlerinin yürütülmesine izin vermenize olanak tanır. Yeni davranış aynı zamanda hata ayıklamayı da çok daha kolay hale getiriyor;
  • İlişkisel dizilerin yeni uygulaması dahil Hash Haritasıyapının uygulanmasına bağlı olarak İsviçre Masası (otomatik olarak yüklendi hashbrown::HashMapAksi açıkça belirtilmediği sürece, örneğin SipHash 1-3'ü temel alan std::HashMap gibi). Yazılım arayüzü aynı kalıyor ve geliştiricinin fark ettiği farklar, artan performans ve azalan bellek tüketiminden kaynaklanıyor;
  • Paket yöneticisi kargosunda katma bağımlılıkları kurarken yalnızca yerel sistemde önbelleğe alınan paketlerin kullanıldığı, ağa erişmeden çalışmayı sağlayan “--offline” seçeneği. Bağımlılık yerel önbellekte değilse bir hata atılır. Bağımlılıkları çevrimdışına geçmeden önce yerel önbelleğe önceden yüklemek için "kargo getir" komutunu kullanabilirsiniz;
  • Makroyu “dbg!” olarak adlandırma yeteneği uygulandı. birkaç argümanın belirtilmesi;
  • Yöntemler için sabitler yerine herhangi bir bağlamda kullanılma olasılığını belirleyen “const” özelliği kullanılır.
    Düzen::from_size_align_unchecked,
    mem::drop'a ihtiyaç var,
    NonNull::sarkan ve
    Boş Olmayan::cast;

  • Stabilize edilmiş yöntemler de dahil olmak üzere API'lerin yeni bir kısmı stabil kategorisine aktarıldı
    görev::Waker, görev::Anket,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Oku::read_vectored, Yaz::write_vectored,
    Yineleyici::kopyalandı,
    BorrowMut (dizeler için) ve str::as_mut_ptr.

Kaynak: opennet.ru

Yorum ekle