Rust 1.44 dasturlash tilining relizi

nashr etilgan tizim dasturlash tilini chiqarish Pas 1.44, Mozilla loyihasi tomonidan asos solingan. Til xotira xavfsizligiga e'tibor qaratadi, xotirani avtomatik boshqarishni ta'minlaydi va axlat yig'uvchidan foydalanmasdan yuqori vazifalar parallelligiga erishish uchun vositalarni taqdim etadi. ish vaqti.

Rust-ning avtomatik xotira boshqaruvi ko'rsatkichlarni boshqarishda xatolarni yo'q qiladi va past darajadagi xotira manipulyatsiyasi natijasida kelib chiqadigan muammolardan himoya qiladi, masalan, bo'shatilgandan so'ng xotira hududiga kirish, null ko'rsatkichni yo'qotish, buferni haddan tashqari oshirib yuborish va hokazo. Kutubxonalarni tarqatish, yig'ishni ta'minlash va loyiha tomonidan bog'liqliklarni boshqarish uchun paket menejeri ishlab chiqilmoqda. yuk, bir marta bosish orqali dastur uchun kerakli kutubxonalarni olish imkonini beradi. Xost kutubxonalar uchun ombor qo'llab-quvvatlanadi crates.io.

Yangi nashrning e'lon matnida Rust ishlab chiquvchilari siyosatga aralashishdi va politsiya zo'ravonligiga qarshi namoyishchilar bilan birdamlik belgisi sifatida Rust 1.44-dagi o'zgarishlarning to'liq sharhini nashr etishdan bosh tortdilar, bu esa bu masala muhimroq ekanligini ko'rsatmoqda. texnik bilim almashishdan ko'ra. Asosiy yangiliklar:

  • Yuk paketi menejeri daraxtga o'xshash qaramlik grafigini ko'rsatadigan "yuk daraxti" buyrug'ini birlashtiradi. Shuningdek, “—dublikatlar” (“yuk daraxti -d”) opsiyasi qo‘shilgan, bu sizga bir xil paketning turli versiyalarida bog‘liqliklarni baholash imkonini beradi.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammiak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── jurnal v0.4.8
    │ │ │ └── cfg-agar v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── jurnal v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [qurilishga bog'liqlik] │ │ │ └── version_check v0.1.5
    ...

  • Std ("#![no_std]") bilan bog'lanmagan ilovalar uchun asinxron dasturlash texnikasini qo'llab-quvvatlash "async" funksiyasi, async move { ... } bloki va ".await" operatori asosida amalga oshiriladi. bloklanmaydigan ishlov beruvchilar asosiy buyruqlar oqimini yozishni soddalashtirish.
  • Tahlil qiluvchiga kengaytiriladigan modul ierarxiyasini aniqlash sxemasini qo'llab-quvvatlash qo'shildi. Masalan, quyidagi konstruksiya “foo/bar/baz.rs” modulining amalda yo‘qligiga qaramay xatoga yo‘l qo‘ymaydi (konstruksiya hali ham semantik jihatdan yaroqsiz va xatolikka olib kelishi mumkin, lekin o‘zgarishlarni ko‘rish va tahlil qilish mumkin. makro va shartli kompilyatsiya darajasi):

    #[cfg(FALSE)] mod foo {
    mod paneli {
    mod baz;
    }
    }

  • Rustc kompilyatori qo'shimcha rejimda "-C codegen-units" bayrog'idan foydalanish imkoniyatini qo'shdi. catch_unwind ilovasi qayta ishlangan boʻlib, agar yechish jarayoni oʻchirilgan boʻlsa va istisnolar qoʻyilmasa, unumdorlikka taʼsir qilmaydi.
  • 64-darajali yordam aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos va x64_XNUMX-apple-tvos platformalari uchun taqdim etilgan. Uchinchi daraja asosiy qo'llab-quvvatlashni o'z ichiga oladi, lekin avtomatlashtirilgan sinov va rasmiy tuzilmalarni nashr etmasdan.
  • API-larning yangi qismi barqaror toifaga, jumladan barqarorlashtirilgan toifaga o'tkazildi
    PathBuf::with_capacity,
    PathBuf :: sig'im,
    PathBuf::clear,
    PathBuf :: rezerv,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::massiv va
    Layout::extend.

  • Standart kutubxonaning kengaytirilgan funksiyalari:
    • To'g'ridan-to'g'ri Vec::new() da aks ettirilgan maxsus "vec![]" varianti qo'shildi, bu "vec![]" ni kontekstda konstantalar o'rniga ishlatish imkonini beradi.
    • Convert::Infallibable uchun belgining amalga oshirilishi (impl) qo'shildi Xash.
    • OsString aqlli ko'rsatkichlarni amalga oshiradi DerefMut и IndexMut, "&mut OsStr" ni qaytaradi.
    • Unicode 13 uchun qo'shimcha qo'llab-quvvatlash.
    • Stringda amalga oshirilgan From<&mut str>.
    • IoSlice xususiyatni amalga oshiradi nusxa.
    • Vec amalga oshirildi From<[T; N]>.
    • proc_macro::LexError fmt::Display va Xatoni amalga oshiradi.
  • Konstantalar oʻrniga istalgan kontekstda foydalanish mumkinligini aniqlaydigan “const” atributi barcha tamsayılar turlari uchun from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes va to_ne_bytes usullarida qoʻllaniladi.
  • Windows’dagi GNU platformalari uchun “.lib” o‘rniga “.a” formatida statik kutubxonalar yaratish uchun qo‘shimcha yordam.
  • LLVM uchun minimal talablar LLVM 8 versiyasiga ko'tarildi.

Manba: opennet.ru

a Izoh qo'shish