Rust 1.68 dasturlash tilining relizi

Mozilla loyihasi tomonidan asos solingan, ammo hozirda Rust Foundation mustaqil notijorat tashkiloti homiyligida ishlab chiqilgan Rust 1.68 umumiy maqsadli dasturlash tilining nashri chop etildi. Til xotira xavfsizligiga e'tibor qaratadi va axlat yig'uvchi va ish vaqtidan foydalanishdan qochgan holda yuqori ish parallelligiga erishish vositalarini taqdim etadi (ish vaqti standart kutubxonani asosiy ishga tushirish va texnik xizmat ko'rsatishga qisqartiriladi).

Rust-ning xotira bilan ishlash usullari ishlab chiquvchini ko'rsatkichlarni boshqarishda xatolardan qutqaradi va past darajadagi xotira bilan ishlash natijasida yuzaga keladigan muammolardan himoya qiladi, masalan, bo'shatilgandan so'ng xotira maydoniga kirish, null ko'rsatkichlarni o'chirish, buferni ortiqcha yuklash va hokazo. Kutubxonalarni tarqatish, qurishni ta'minlash va bog'liqliklarni boshqarish uchun loyiha Cargo paketi menejerini ishlab chiqadi. Crates.io ombori kutubxonalarni joylashtirish uchun qo'llab-quvvatlanadi.

Xotira xavfsizligi Rust-da kompilyatsiya vaqtida mos yozuvlarni tekshirish, ob'ektga egalik qilish, ob'ektning ishlash muddatini (ko'lamini) kuzatib borish va kodni bajarish paytida xotiraga kirishning to'g'riligini baholash orqali ta'minlanadi. Rust shuningdek, butun sonlarning to'lib ketishidan himoya qiladi, ishlatishdan oldin o'zgaruvchan qiymatlarni majburiy ishga tushirishni talab qiladi, standart kutubxonada xatolarni yaxshiroq boshqaradi, sukut bo'yicha o'zgarmas havolalar va o'zgaruvchilar tushunchasini qo'llaydi, mantiqiy xatolarni minimallashtirish uchun kuchli statik yozishni taklif qiladi.

Asosiy innovatsiyalar:

  • Yuk paketlari menejeri va crates.io ombori Sparse protokoli uchun barqarorlashtirilgan qo'llab-quvvatlashga ega bo'lib, u omborda mavjud bo'lgan barcha paketlarning mavjud versiyalarini aks ettiruvchi indeks bilan ishlashning yangi usulini belgilaydi. Yangi protokol sizga crates.io bilan ishlash tezligini sezilarli darajada oshirishga va ombordagi paketlar sonining yanada oshishi bilan masshtablash muammolarini hal qilishga imkon beradi.

    To'liq indeksni yuklab olishdan kelib chiqadigan kechikishlarni kamaytirish uchun Git-dan foydalanib indeksga kirish o'rniga Sparse HTTPS orqali to'g'ridan-to'g'ri yuklab olishni o'z ichiga oladi, faqat ma'lum bir loyihaning bog'liqliklarini qamrab oladigan kerakli indeks ma'lumotlarini. Indeks ma'lumotlarini taqdim etish uchun yangi xizmat, index.crates.io ishlatiladi. Odatiy bo'lib, yangi protokol Rust 1.70 filialida qo'llanilishi rejalashtirilgan va undan oldin uni yoqish uchun siz "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=siyrak" muhit o'zgaruvchisini o'rnatishingiz yoki "[registrlar" ga "protocol =" parametrini qo'shishingiz mumkin. crates-io]" .cargo/config.toml faylining "siyrak" bo'limi.

  • “T” iborasidan uning holatini mahalliy pinlash bilan Pin<&mut T> strukturasini yaratishga imkon beruvchi “pin!” so‘l qo‘shildi (Box::pindan farqli o‘laroq, u xotirani yig‘inga ajratmaydi, lekin bog‘laydi. stek darajasida).
  • Standart ajratish paketidan foydalanilganda foydalaniladigan standart xotira ajratish xatosi ishlovchisi taklif qilingan. Faqat alloc funksiyasini yoqadigan (stdsiz) ilovalar endi xotira taqsimoti bajarilmasa, “vahima!” ishlov beruvchisini chaqiradi, uni ixtiyoriy ravishda “#[panic_handler]” yordamida ushlab olish mumkin. Std kutubxonasidan foydalanadigan dasturlar xato ma'lumotlarini stderr-ga chop etishda davom etadi va ishdan chiqadi.
  • APIning yangi qismi barqaror toifaga ko'chirildi, shu jumladan xususiyatlarning usullari va amalga oshirilishi barqarorlashtirildi:
    • {yadro, std}::pin::pin!
    • impl From {f32,f64} uchun
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut PathBuf uchun
  • Konstantalar o'rniga uni istalgan kontekstda ishlatish imkoniyatini belgilovchi "const" atributi VecDeque::new funksiyasida qo'llaniladi.
  • Android platformasida ishlash uchun endi kamida NDK r25 (API 19) talab qilinadi, ya'ni. Minimal qo'llab-quvvatlanadigan Android versiyasi 4.4 (KitKat) ga ko'tarildi.
  • Qo'llab-quvvatlashning uchinchi darajasi Sony PlayStation Vita platformasi uchun amalga oshirildi (armv7-sony-vita-newlibeabihf). 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