Rust 1.62 dasturlash tilining relizi

Mozilla loyihasi tomonidan asos solingan, ammo hozirda Rust Foundation mustaqil notijorat tashkiloti homiyligida ishlab chiqilgan Rust 1.62 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" paket menejeri "qo'shish" buyrug'ini taklif qiladi, bu sizga Cargo.toml manifestiga yangi bog'liqliklarni qo'shish yoki mavjud bog'liqliklarni buyruq satridan o'zgartirish imkonini beradi. Buyruq shuningdek, individual xususiyatlar va versiyalarni belgilashga imkon beradi, masalan: yuk qo'shish serde β€” funktsiyalar yuklarni qo'shish nom@5
  • Standart parametr β€œ#[default]” atributi yordamida aniqlanadigan enumlar bilan β€œ#[derive(Default)]” dan foydalanish imkoniyati qoβ€˜shildi. #[olish(Standart)] enum Balki { #[standart] Hech narsa, biror narsa(T), }
  • Linux platformasida Linux yadrosi tomonidan taqdim etilgan futekslardan foydalanishga asoslangan Mutex sinxronlash mexanizmini yanada ixcham va tezroq amalga oshirish qo'llaniladi. Ilgari ishlatilgan pthreads kutubxonasiga asoslangan dasturdan farqli o'laroq, yangi versiya Mutex holatini saqlash uchun 5 o'rniga atigi 40 baytdan foydalanadi.Shuningdek, Condvar va RwLock qulflash mexanizmlari futexga o'tkazildi.
  • Operatsion tizimsiz ishlashi mumkin bo'lgan bajariladigan fayllarni yaratish uchun mo'ljallangan x86_64-noma'lum-none maqsadli platformasini qo'llab-quvvatlashning ikkinchi darajasi amalga oshirildi. Masalan, yadro komponentlarini yozishda belgilangan maqsadli platformadan foydalanish mumkin. Qo'llab-quvvatlashning ikkinchi darajasi montaj kafolatini o'z ichiga oladi.
  • Qo'llab-quvvatlashning uchinchi darajasi aarch64-pc-windows-gnullvm va x86_64-pc-windows-gnullvm platformalari 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.
  • APIning yangi qismi barqaror toifaga ko'chirildi, shu jumladan xususiyatlarning usullari va amalga oshirilishi barqarorlashtirildi:
    • bool::keyin_ba'zi
    • f32 :: jami_cm
    • f64 :: jami_cm
    • Stdin :: chiziqlar
    • windows::CommandExt::raw_arg
    • shama AssertUnwindSafe uchun standart qiymat
    • Kimdan > Rc uchun
    • Kimdan > Arc<[u8]> uchun
    • EncodeWide uchun FusedIterator

    Manba: opennet.ru

a Izoh qo'shish