Rust 1.99.0 chiqarildi. Microsoft Rustni asosiy tilga aylantirdi

Mozilla loyihasi tomonidan asos solingan, lekin hozirda mustaqil notijorat Rust Foundation homiyligida ishlab chiqilgan Rust 1.99 dasturlash tili chiqarildi. Til xotira xavfsizligiga e'tibor qaratadi va vazifalarni bajarishning yuqori parallelligiga erishish uchun vositalarni taqdim etadi, shu bilan birga axlat yig'uvchi va ish vaqtidan foydalanmasdan (ish vaqti standart kutubxonani asosiy ishga tushirish va texnik xizmat ko'rsatishga qisqartiriladi).

Rustning xotirani boshqarish usullari ko'rsatkichlarni boshqarishdagi xatolarni bartaraf etish va past darajadagi xotirani boshqarishdan kelib chiqadigan muammolardan, masalan, xotira bo'shatilgandan keyin unga kirish, nol ko'rsatkichlarga havolalarni bekor qilish, buferning ortiqcha yuklanishi va boshqalardan himoya qilish uchun mo'ljallangan. Loyiha kutubxonalarni tarqatish, tuzishni osonlashtirish va qaramliklarni boshqarish uchun Cargo paket menejerini ishlab chiqmoqda. crates.io ombori kutubxonalarni joylashtirish uchun saqlanadi.

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:

  • Rust endi C loyihalaridan chaqiruvlar uchun eksport qilinadigan variadik funksiyalarni yaratishga imkon beradi (C ABI). Bunday funksiyalardagi parametrlar ro'yxatining oxirgi elementi "..." konstruktsiyasi bo'lishi mumkin, u Rustda C da va_listga o'xshash ishlaydigan maxsus VaList turi yordamida ishlov beriladi. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg:: () }; b = xavfli bo'lsin { args.next_arg:: () }; a + b } fn foo() -> i32 { xavfli { sum(0i32, 2i32) } }
  • Layout::for_value_raw, mem::size_of_val_raw va mem::align_of_val_raw funktsiyalari xom ko'rsatkichlarni xavfsiz o'lchamlash va hizalash imkonini berish uchun barqarorlashtirildi, shu jumladan, ma'lumotlar havolalarini yaratmasdan, masalan, kesmalar kabi dinamik o'lchamdagi turlardan foydalanganda ham.
  • Hujjatlar endi Box::leak (ikki tomonlama unleaking) chaqiruvi orqali statik ravishda noma'lum muddatga (&'static) bog'langan xotirani bo'shatishdan qochishni tavsiya qiladi, chunki bu harakat kelajakdagi kompilyator optimallashtirishlari va ulanadigan xotira ajratish mexanizmlari bilan mos kelmasligi tufayli muammolarga olib kelishi mumkin. Vaqtinchalik egalik o'tkazmalari uchun statik havola yaratish o'rniga, masalan, Box::into_non_null ga chaqiruv orqali xom ko'rsatkichlardan foydalanish tavsiya etiladi.
  • APIning yangi qismi barqaror toifaga ko'chirildi, shu jumladan xususiyatlarning usullari va amalga oshirilishi barqarorlashtirildi:
    • Box uchun IntoIterator<[T; N]>
    • &Box<[T; N]> uchun IntoIterator
    • &mut Box uchun IntoIterator<[T; N]>
    • VecDeque::retain_back
    • yadro::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::dan_qismlar
    • yadro::mem::size_of_val_raw
    • yadro::mem::align_of_val_raw
    • yadro::alloc::Layout::for_value_raw
    • Satr::from_utf8_lossy_owned
    • satr::FromUtf8Error::into_utf8_lossy
    • StepBy uchun FusedIterator
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Yuk paketlari menejeri endi "ishlab chiquvchi" profiliga o'xshash yangi o'rnatilgan "disk raskadrovka" profiliga ega (kelajakda disk raskadrovka va ishlab chiqish imkoniyatlarini ajratish rejalashtirilgan). CIda yaratishda qo'shimcha kompilyatsiya sukut bo'yicha o'chirib qo'yilgan.
  • riscv64-unknown-linux-musl maqsadli platformasi 2-darajadagi qo'llab-quvvatlashga o'tkazildi, bu esa tuzilish kafolatini beradi, ammo sinov to'plamidan o'tish kafolatini bermaydi.

Bundan tashqari, biz yaqinda Rust bilan bog'liq e'lon qilingan loyihalar va tadbirlarni ta'kidlab o'tmoqchimiz:

  • Microsoft Rust tilini 1-darajali tilga yangiladi va kompaniya ichidagi rivojlanishning barcha bosqichlarida uni to'liq qo'llab-quvvatlaydi. Ilgari, 1-darajali qo'llab-quvvatlash C++, C# va TypeScript uchun taqdim etilgan edi. Rust allaqachon 100 dan ortiq Microsoft omborlarida ishlatilgan. Boshqa narsalar qatorida, Rust komponentlari allaqachon Microsoft 365 va Copilot kabi mahsulotlarda ishlatilgan va MSVC kompilyatori uchun rustc kompilyatoriga asoslangan rustc_codegen_utc rust uchun maxsus backend ishlab chiqilgan.

    Microsoft xavfsizlik uchun muhim kodni kuchaytirish uchun Rustdan foydalanishning asosiy maqsadini ta'kidlaydi. Microsoft Azure texnik direktorining ma'lumotlariga ko'ra, barcha zaifliklarning taxminan 70% ... Windows Rust yordamida oldini olish mumkin bo'lgan xotira boshqaruvi muammolari tufayli yuzaga keladi.

  • Google uni yadrodan olib tashladi. Linux C tilida yozilgan eski Binder IPC implementatsiyasi Rust tilida qayta yozilgan yangi Binder IPC drayveri foydasiga bekor qilindi. Ta'kidlanishicha, 15 yillik faoliyati davomida eski drayver katta texnik qarzdorlik va ko'plab asoratlarni to'plagan, bu esa xatolarni aniqlash, texnik xizmat ko'rsatish va yangi funksiyalarni qo'shishga to'sqinlik qilgan. Rustdagi Binder IPC drayveri asosiy drayver sifatida belgilangan va endi eksperimental ishlanma sifatida taqdim etilmaydi.
  • Tor asboblar to'plamining Rust implementatsiyasi bo'lgan Arti 2.7.0 chiqarildi. Arti kod bazasi C implementatsiyasini to'liq o'rnini bosa oladigan darajaga yetgandan so'ng, Tor ishlab chiquvchilari Arti ni asosiy Tor implementatsiyasiga aylantirish va C implementatsiyasini texnik xizmat ko'rsatishni bosqichma-bosqich to'xtatish niyatida. Yangi versiyada relelar va boshqalar uchun funksiyalarni ishlab chiqish kiradi. serverlar Hujjatlarni tahlil qilish, katalog serverini aks ettirishni qo'llab-quvvatlash va DNS trafikni qayta ishlash bilan bog'liq Katalog Authority (DA) funksiyalari. Konfiguratsiyani o'zgartirish va tekshirish uchun RPC implementatsiyasi qo'shildi. Bir nechta zaifliklar tuzatildi — onion xizmati administratorlariga tizimlarini zudlik bilan yangilash tavsiya etiladi.

Manba: opennet.ru

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster