Rust 1.55 dasturlash tilining relizi

Mozilla loyihasi tomonidan asos solingan, lekin hozirda Rust Foundation mustaqil notijorat tashkiloti homiyligida ishlab chiqilgan Rust 1.55 tizim dasturlash tilining relizi nashr etildi. Til xotira xavfsizligiga e'tibor qaratadi, xotirani avtomatik boshqarishni ta'minlaydi va axlat yig'uvchi yoki ish vaqtini ishlatmasdan yuqori vazifalar parallelligiga erishish uchun vositalarni taqdim etadi (ish vaqti standart kutubxonani asosiy ishga tushirish va texnik xizmat ko'rsatishga qisqartiriladi).

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 bog'liqliklarni boshqarish uchun loyiha Cargo paketi menejerini ishlab chiqmoqda. Crates.io ombori kutubxonalarni joylashtirish uchun qo'llab-quvvatlanadi.

Asosiy innovatsiyalar:

  • Yuk paketi menejeri qurish paytida yuzaga keladigan takroriy xatolar va ogohlantirishlarni birlashtirish qobiliyatiga ega. “Yuk sinovi” va “yuk tekshiruvi --all-targets” kabi buyruqlar bajarilayotganda, natijada turli xil parametrlarga ega boʻlgan paketning bir nechta tuzilishi paydo boʻladi, endi foydalanuvchiga koʻrsatilish oʻrniga takroriy muammo yuzaga kelishi haqida qisqacha maʼlumot koʻrsatiladi. bir xil narsani qayta-qayta qurishda bir nechta bir xil ogohlantirishlar. fayl. $ yuk +1.55.0 tekshirish —barcha maqsadlarni tekshirish foo v0.1.0 ogohlantirish: funksiya hech qachon ishlatilmaydi: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = Eslatma: '#[warn(dead_code)]' sukut bo'yicha yoniq ogohlantirish: 'foo' (lib) 1 ogohlantirish ogohlantirishini yaratdi: 'foo' (lib test) 1 ogohlantirish hosil qildi (1 dublikat) Tugallangan ishlab chiquvchi [optimallashtirilmagan + disk raskadrovka ma'lumoti] maqsadi (s) 0.84 soniyada
  • Standart kutubxonadagi suzuvchi nuqtani tahlil qilish kodi tezroq va aniqroq Eisel-Lemire algoritmidan foydalanish uchun ko'chirildi, bu juda ko'p sonli raqamlarni yaxlitlash va tahlil qilish bilan bog'liq ba'zi ilgari kuzatilgan muammolarni hal qildi.
  • Shablonlarda yopilmagan diapazonlarni belgilash imkoniyati barqarorlashtirildi (“X..” X qiymatidan boshlanuvchi va butun son turining maksimal qiymati bilan tugaydigan diapazon sifatida talqin etiladi): x ni u32 sifatida moslang { 0 => println! (“nol!”), 1.. => println! (“musbat raqam!”), }
  • std::io::ErrorKind tomonidan qamrab olingan kengaytirilgan xato variantlari (xatolarni NotFound va WouldBlock kabi toifalarga tasniflaydi). Ilgari mavjud toifalarga to‘g‘ri kelmaydigan xatolar ErrorKind::Other turkumiga kirardi, u uchinchi tomon kodidagi xatolar uchun ham foydalanilgan. Mavjud toifalarga to'g'ri kelmaydigan xatolar uchun ErrorKind::Uncategorized alohida ichki toifasi mavjud va ErrorKind::Boshqa toifasi standart kutubxonada uchramaydigan xatolar bilan cheklangan (io::Error qaytaruvchi standart kutubxona funksiyalari) ErrorKind:: kategoriyasini boshqa ishlatmang).
  • APIning yangi qismi barqaror toifaga ko'chirildi, shu jumladan xususiyatlarning usullari va amalga oshirilishi barqarorlashtirildi:
    • Bog'langan::klonlangan
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUnit::assume_init_mut
    • MaybeUninit ::assume_init_ref
    • BalkiUninit :: yozing
    • massiv :: xaritasi
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64 ::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64 ::_bittestandreset64
    • x86_64 ::_bittestandset64
  • str::from_utf8_unchecked usulida konstantalar o'rniga uni istalgan kontekstda ishlatish imkoniyatini belgilovchi "const" atributi qo'llaniladi.
  • Qo'llab-quvvatlashning uchinchi darajasi powerpc64le-noma'lum-freebsd platformasi uchun amalga oshirildi. Uchinchi daraja asosiy qo'llab-quvvatlashni o'z ichiga oladi, lekin avtomatlashtirilgan testlarsiz, rasmiy tuzilmalarni nashr etmasdan yoki kodni qurish mumkinligini tekshirmasdan.

Manba: opennet.ru

a Izoh qo'shish