lëshimi i gjuhës së programimit sistemor , e bazuar në projektin Mozilla. Gjuha fokusohet në sigurinë e menaxhimit të memories, siguron menaxhim automatik të memories dhe ofron mjete për arritjen e një paralelizmi të lartë në ekzekutimin e detyrave, duke u shmangur kështu përdorimit të mbledhësve të plehrave dhe .
Menaxhimi automatik i memories në Rust përmban zhvilluesit nga manipulimi i treguesve dhe mbron ata nga problemet që lindin për shkak të punës me nivel të ulët me memorien, siç janë qasjet në hapësirën e memories pas lirimit të saj, dereferencimi i treguesve nul, dalja jashtë kufijve të tamponit etj. Për shpërndarjen e biblioteka, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti po zhvillohet menaxher për paketat , që lejon shfrytëzimin e bibliotekave të nevojshme për programin me një klik. Për vendosjen e bibliotekave, mbështetet repository .
Ndryshimet kryesore :
- mbështetje për modele për përputhjen e pjesëve të prerjeve (masave dinamike, slice). Nëse më parë lejohej përputhje e saktë, tani është shtuar mundësia e përdorimit të konstruksioneve me etiketën «..» për të përfshirë elementët e mbetur të masës. Për shembull:
fn foo(words: &[&str]) {
match words {// проверяет начальные элементы массива с игнорированием
elementëve pas tyre
[«Hello», «World», «!», ..] => println!(«Hello World!»),// проверяет первые два элемента «Foo» и «Bar», а остальное не важно
[«Foo», «Bar», ..] => println!(«Baz»),// игнорируем всё, но последний элемент должен быть «!».
[.., «!»] => println!(«!!!»),// в срез start включаем всё, кроме последнего элемента, который должен быть «z»
[start @ .., «z»] => println!(«fillon me: {:?}», start),// в срез end помещаем всё, кроме первого элемента, который должен быть «a».
[«a», end @ ..] => println!(«mbyllet me: {:?}», end),rest => println!(«{:?}», rest),
}
} - I është shtuar një makros i ri «matches!», i cili merr një shprehje dhe një model si hyrje, dhe kthen «true», nëse modeli përputhet me shprehjen. Në model është e mundur të përdoren operacione «|» dhe «if».
match self.partial_cmp(other) {
Some(Less) => true,
_ => false,
}matches!(self.partial_cmp(other), Some(Less))
let foo = ‘f’;
assert!(matches!(foo, ‘A’..=’Z’ | ‘a’..=’z’));let bar = Some(4);
assert!(matches!(bar, Some(x) if x > 2)); - Në mesazhet panic, të cilat shfaqen kur përdoren në mënyrë të pasaktë
tipet Option dhe Result tani pasqyrojnë numrat e rreshtave me lidhje në kodin që ka bërë thirrjen problematike, në vend të lidhjeve me kodin e realizimit të thirrjes në libcore. Për shembull, ndryshimi preket thirrjen unwrap dhe expect mbi Option::None ose dështimet gjatë përdorimit të unwrap_err, expect, expect_err dhe metodave të ngjashme për tipin Result. - Në menaxherin e paketave Cargo është siguruar zëvendësimi automatik i «proc_macro crate» në bllokun «extern» për paketat me makros procedurale. Kjo ndryshim lejon përdorimin e direktivës «use» për makros procedurale pa pasur nevojë të specificohet në kod «extern crate proc_macro;». Për shembull, nëse programi përdor linjën «use proc_macro::TokenStream;», kodi tani do të vazhdojë të funksionojë edhe nëse hiqet «extern crate proc_macro;».
- Janë zgjeruar funksionalitetet e bibliotekës standarde. Në iter::Empty mbështetje Send dhe Sync për çdo vlerë T.
Thirrjet Pin::{map_unchecked, map_unchecked_mut} nevojën për të kthyer një vlerë të tipit për implementimin e «Sized».
Në io::Cursor PartialEq dhe Eq. Karakteri «const», që përcakton mundësinë e përdorimit në çdo kontekst në vend të konstantave, për metodën Layout::new. - Një sasi e re API është kaluar në kategorinë e qëndrueshme, përfshirë stabilizimin e CondVar::wait_while, CondVar::wait_timeout_while,
DebugMap::key, DebugMap::value,
ManuallyDrop::take,
ptr::slice_from_raw_parts_mut dhe ptr::slice_from_raw_parts. - Metoda Error::description është shpallur e vjetruar.
- Përfshirë një nivel të dytë mbështetjeje për platformat armv7a-none-eabi dhe riscv64gc-unknown-linux-gnu. Mbështetje e bibliotekës standarde është siguruar për platformën riscv64gc-unknown-linux-gnu.
platformat 32-bit të Apple në nivelin e tretë të mbështetjes, i cili ofron mbështetje bazike, përveç testeve automatike dhe publikimit të ndërtimeve zyrtare. Ulja e nivelit të mbështetjes është shkaktuar nga ndalimi i mbështetjes nga Apple për platformat 32-bit.
Burimi: opennet.ru
