nashr etilgan tizim dasturlash tilining 1.47 versiyasini chiqaring zang, Mozilla loyihasi tomonidan asos solingan. Til xotira xavfsizligiga e'tibor qaratadi, xotirani avtomatik boshqarishni ta'minlaydi va foydalanmasdan yuqori vazifa parallelligiga erishish uchun vositani taqdim etadi axlat yig'uvchi ΠΈ ish vaqti (ish vaqti standart kutubxonani asosiy ishga tushirish va texnik xizmat ko'rsatishga qadar qaynatiladi).
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 loyiha tomonidan bog'liqliklarni boshqarish uchun paket menejeri ishlab chiqilmoqda. yuk. Xost kutubxonalar uchun ombor qo'llab-quvvatlanadi crates.io.
Turlarni qo'llab-quvvatlash amalga oshirildi massivlar har qanday o'lcham. Ilgari, barcha butun qiymatlar uchun umumiy funktsiyalarni aniqlashning imkoni yo'qligi sababli, standart kutubxona faqat o'lchamdagi 32 elementgacha bo'lgan massivlar uchun o'rnatilgan xususiyatlarni qo'llab-quvvatlagan (har bir o'lcham uchun belgilar statik ravishda aniqlangan). Doimiy generiklarning ("const generics") funksionalligini yaratish tufayli har qanday massiv o'lchami uchun umumiy funktsiyalarni aniqlash mumkin bo'ldi, ammo ular hali ham barqaror til xususiyatlariga kiritilmagan, garchi ular kompilyatorda amalga oshirilgan va mavjud bo'lsa ham. hozir jalb qilingan har qanday o'lchamdagi massiv belgilari uchun standart kutubxonada.
Masalan, Rust 1.47 da quyidagi konstruksiya massiv mazmunini chop etadi, garchi ilgari u xatoga olib kelgan boβlsa ham:
fn main() {
xs = [0; 34];
println!("{:?}", xs);
}
Qisqa izlarning chiqishi (backtrace), favqulodda vaziyatlarda chiqishi ta'minlangan. Aksariyat vaziyatlarda qiziqish uyg'otmaydigan, lekin chiqishni chalg'itadigan va muammoning asosiy sabablaridan e'tiborni chalg'itadigan elementlar izdan chiqarib tashlanadi. ToΚ»liq izni qaytarish uchun βRUST_BACKTRACE=fullβ muhit oΚ»zgaruvchisidan foydalanishingiz mumkin. Masalan, kod uchun
fn main() {
vahima!();
}
Ilgari iz 23 bosqichda chiqarilgan bo'lsa, endi u qisqartiriladi
Mohiyatni darhol anglash imkonini beruvchi 3 qadam:
"main" mavzui "aniq vahima" da vahimaga tushdi, src/main.rs:2:5
stack backtrace:
0: std::vahima::begin_panic
/rustc/dβ¦d75a/library/std/src/panicking.rs:497 manzilida
1: o'yin maydonchasi :: asosiy
./src/main.rs: 2 da
2: core::ops::function::FnOnce::call_once
/rustc/dβ¦d75a/library/core/src/ops/function.rs:227 manzilida
Rustc kompilyatori yordamida qurish uchun yangilangan LLVM 11 (Rast ispolzet LLVM uchun backend sifatida kod ishlab chiqarish). Shu bilan birga, eski LLVM-lar bilan 8-versiyagacha qurish imkoniyati saqlanib qoladi, lekin sukut bo'yicha (da rust-lang/llvm-loyihasi) hozir LLVM 11 dan foydalanmoqda. LLVM 11 yaqin kunlarda chiqarilishi kutilmoqda.
Windows platformasida rustc kompilyatori "-C control-flow-guard" bayrog'i yordamida faollashtirilgan boshqaruv oqimining yaxlitligini tekshirishni (Control Flow Guard) yoqishni qo'llab-quvvatlaydi. Boshqa platformalarda bu bayroq hozircha e'tiborga olinmaydi.
API-larning yangi qismi barqaror toifaga, jumladan barqarorlashtirilgan toifaga o'tkazildi
Ident::new_raw,
Range::is_empty,
RangeInclusive::is_empty,
Natija::as_deref,
Natija::as_deref_mut,
Vec :: oqish,
ko'rsatgich::offset_from,
f32::TAU va
f64::TAU.
Konstantalar o'rniga uni istalgan kontekstda ishlatish imkoniyatini belgilovchi "const" atributi usullarda qo'llaniladi:
noldan boshqa barcha butun sonlar uchun yangi;
checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub va saturating_mul barcha butun sonlar uchun;