Rust-ийн санах ойн автомат удирдлага нь заагчийг удирдах үеийн алдааг арилгаж, суллагдсаны дараа санах ойн мужид хандах, заагчийг тэглэх, буфер хэт ачаалах гэх мэт доод түвшний санах ойн ашиглалтаас үүсэх асуудлаас хамгаалдаг. Төслийн хүрээнд номын санг түгээх, угсралтыг баталгаажуулах, хамаарлыг удирдах багц менежерийг боловсруулж байна.
Үндсэн
- Төрөлүүдэд зориулсан дэмжлэгийг хэрэгжүүлсэн
массив ямар ч хэмжээтэй. Өмнө нь бүхэл тоон утгуудын ерөнхий функцийг тодорхойлох боломжгүй байсан тул стандарт номын сан нь зөвхөн 32 хүртэлх элементийн хэмжээтэй массивуудад (хэмжээ тус бүрийн шинж чанаруудыг статик байдлаар тодорхойлсон) суурилагдсан шинж чанарыг дэмждэг байв. Тогтмол generics ("const generics") функцийг бий болгосны ачаар ямар ч массивын хэмжээтэй ерөнхий функцийг тодорхойлох боломжтой болсон боловч тэдгээр нь хөрвүүлэгч дээр хэрэгжсэн бөгөөд хэлний тогтвортой шинж чанаруудад хараахан ороогүй байна. одоооролцсон ямар ч хэмжээтэй массив шинж чанаруудын стандарт номын санд.Жишээлбэл, Rust 1.47 дээрх дараах бүтэц нь өмнө нь алдаа гаргаж байсан ч массивын агуулгыг хэвлэх болно:
fn main() {
xs = [0; 34];println!("{:?}", xs);
} - Онцгой байдлын үед илүү богино ул мөр (буцах) гаралтыг хангасан. Ихэнх тохиолдолд сонирхол татахуйц биш боловч гаралтыг эмх замбараагүй болгож, асуудлын үндсэн шалтгаанаас анхаарлыг сарниулдаг элементүүдийг ул мөрөөс хасдаг. Бүрэн ул мөрийг буцаахын тулд та "RUST_BACKTRACE=full" орчны хувьсагчийг ашиглаж болно. Жишээлбэл, кодын хувьд
fn main() {
сандрах!();
}Өмнө нь ул мөрийг 23 үе шаттайгаар гаргадаг байсан бол одоо болтол бууруулна
Мөн чанарыг шууд ойлгох 3 алхам:'main' thread 'ilt panic'-д сандран, src/main.rs:2:5
стекийн ухралт:
0: std::panicking::begin_panic
/rustc/d…d75a/library/std/src/panicking.rs:497 хаягаар
1: тоглоомын талбай:: үндсэн
./src/main.rs:2 дээр
2: core::ops::function::FnOnce::call_once
/rustc/d…d75a/library/core/src/ops/function.rs:227 дээр - Rustc хөрвүүлэгчийг ашиглан бүтээхээр шинэчлэгдсэн
LLVM 11 (Зэвашигладаг LLVM-ийг арын хэсэг болгонкод үүсгэх ). Үүний зэрэгцээ, хуучин LLVM-үүдтэй 8 хувилбар хүртэл бүтээх чадвар хадгалагдсан боловч анхдагчаар (дrust-lang/llvm-project ) одоо LLVM 11-г ашиглаж байна. LLVM 11 нь ойрын өдрүүдэд гарах төлөвтэй байна. - Windows платформ дээр rustc хөрвүүлэгч нь "-C control-flow-guard" тугийг ашиглан идэвхжүүлсэн хяналтын урсгалын бүрэн бүтэн байдлыг шалгах (Control Flow Guard)-ыг идэвхжүүлэхэд дэмжлэг үзүүлдэг. Бусад платформ дээр энэ туг одоогоор хэрэгсэхгүй байна.
- API-ийн шинэ хэсгийг тогтворжуулсан зэрэг тогтвортой ангилалд шилжүүлсэн
Ident::new_raw,
Муж::хоосон,
RangeInclusive ::хоосон,
Үр дүн::as_deref,
Үр дүн::as_deref_mut,
Vec:: гоожиж,
заагч::офсет_from,
f32::TAU болон
f64::TAU. - Үүнийг тогтмолуудын оронд ямар ч нөхцөлд ашиглах боломжийг тодорхойлдог "const" шинж чанарыг дараахь аргуудад ашигладаг.
- тэгээс бусад бүхэл тоонуудын хувьд шинэ;
- бүх бүхэл тоонуудын шалгасан_нэмж, шалгагдсан_дадаа, шалгагдсан_мул, шалгагдсан_нэг, шалгагдсан_shl, шалгагдсан_шр, ханасан_нэм, ханасан_дэд ба ханасан_мул;
- is_ascii_alphabetic, is_ascii_upppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitescir болон is_controls for.
- FreeBSD-д зориулсан
оролцсон FreeBSD 11.4-ийн багаж хэрэгсэл (FreeBSD 10 нь LLVM 11-ийг дэмждэггүй).
Эх сурвалж: opennet.ru