Rust 1.67 dasturlash tilining relizi

Mozilla loyihasi tomonidan asos solingan, ammo hozirda Rust Foundation mustaqil notijorat tashkiloti homiyligida ishlab chiqilgan Rust 1.67 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:

  • Future::Output bilan asinxronlashtirilgan funksiyalar uchun endi β€œ#[foydalanish kerak]” izohlarini belgilash mumkin, agar qaytariladigan qiymat e'tiborga olinmasa, bu ogohlantirishni o'z ichiga oladi, bu funksiya qiymatlarni o'zgartirishi haqidagi taxmindan kelib chiqqan xatolarni aniqlashga yordam beradi. yangi qiymatni qaytarish o'rniga. #[foydalanish_kerak] async fn bar() -> u32 {0} async fn caller() { bar().await; } ogohlantirish: foydalanilmagan kelajakdagi chiqim "bar" tomonidan qaytariladi, undan foydalanish kerak β€”> src/lib.rs:5:5 | 5 | bar().kutish; | ^^^^^^^^^^^ | = eslatma: `#[ogohlantirish(unused_must_use)]` sukut bo'yicha yoqilgan
  • FIFO navbatlarini amalga oshirish std::sync::mpsc (ko'p ishlab chiqaruvchi yagona iste'molchi) yangilandi, u oldingi APIni saqlab qolgan holda o'zaro faoliyat kanal modulidan foydalanishga o'tkazildi. Yangi dastur bir qator muammolarni hal qilish, yuqori ishlash va soddalashtirilgan kodni saqlash bilan ajralib turadi.
  • APIning yangi qismi barqaror toifaga ko'chirildi, shu jumladan xususiyatlarning usullari va amalga oshirilishi barqarorlashtirildi:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • Nondan tashqari*::BITS
  • Konstantalar o'rniga uni istalgan kontekstda ishlatish imkoniyatini belgilovchi "const" atributi funksiyalarda qo'llaniladi:
    • char::from_u32
    • char::dan_raqam
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Rustni Linux yadrosida (linuxkernel), shuningdek, Sony PlayStation 1 (mipsel-sony-psx), AIX bilan PowerPC (powerpc64-ibm-aix), QNX Neutrino RTOS () uchun uchinchi darajali qo'llab-quvvatlash amalga oshirildi. aarch64-noma'lum-nto-) platformalari qnx710, x86_64-pc-nto-qnx710). Uchinchi daraja asosiy qo'llab-quvvatlashni o'z ichiga oladi, lekin avtomatlashtirilgan testlarsiz, rasmiy tuzilmalarni nashr etish va kodni yaratish imkoniyatini tekshirishsiz.

Bundan tashqari, ARM tomonidan AArch64 arxitekturasiga asoslangan tizimlar uchun yig'ilgan drayverlar va Linux yadro modullarini ishlab chiqish uchun Rust tilidan foydalanishga imkon beruvchi yamoqlarni nashr etishni ta'kidlashimiz mumkin.

Manba: opennet.ru

a Izoh qo'shish