publicÄts sistÄmas programmÄÅ”anas valodas versija 1.45 RÅ«sa, ko dibinÄja Mozilla projekts. Valoda koncentrÄjas uz atmiÅas droŔību, nodroÅ”ina automÄtisku atmiÅas pÄrvaldÄ«bu un nodroÅ”ina rÄ«kus augsta uzdevumu paralÄlisma sasniegÅ”anai, neizmantojot atkritumu savÄcÄju un runtime.
Rust automÄtiskÄ atmiÅas pÄrvaldÄ«ba novÄrÅ” kļūdas, manipulÄjot ar rÄdÄ«tÄjiem, un aizsargÄ pret problÄmÄm, kas rodas no zema lÄ«meÅa atmiÅas manipulÄcijÄm, piemÄram, piekļuves atmiÅas apgabalam pÄc tÄ atbrÄ«voÅ”anas, nulles rÄdÄ«tÄju novirzÄm, bufera pÄrtÄriÅiem utt. Tiek izstrÄdÄts pakotÅu pÄrvaldnieks, lai izplatÄ«tu bibliotÄkas, nodroÅ”inÄtu montÄžu un pÄrvaldÄ«tu projekta atkarÄ«bas. krava, kas ļauj ar vienu klikŔķi iegÅ«t programmai nepiecieÅ”amÄs bibliotÄkas. Repozitorijs tiek atbalstÄ«ts bibliotÄku mitinÄÅ”anai crates.io.
LikvidÄts ilgstoÅ”i trÅ«kums veicot konvertÄÅ”anu starp veseliem skaitļiem un peldoÅ”Ä komata skaitļiem. TÄ kÄ Rust kompilators izmanto LLVM kÄ aizmugursistÄmu, tipa konvertÄÅ”anas darbÄ«bas tika veiktas, izmantojot LLVM starpposma koda instrukcijas, piemÄram, fptoui, kuriem ir viena bÅ«tiska iezÄ«me ā nedefinÄta uzvedÄ«ba, ja iegÅ«tÄ vÄrtÄ«ba neatbilst mÄrÄ·a tipam. PiemÄram, pÄrveidojot peldoÅ”o vÄrtÄ«bu 300 ar tipu f32 par veselu skaitļa tipu u8, rezultÄts ir neparedzams un dažÄdÄs sistÄmÄs var atŔķirties. ProblÄma ir tÄda, ka Ŕī funkcija parÄdÄs kodÄ, kas nav atzÄ«mÄts kÄ ānedroÅ”sā.
SÄkot ar versiju Rust 1.45, tipa lieluma pÄrpildes darbÄ«ba ir stingri regulÄta, un konvertÄÅ”anas operÄcija ākÄā pÄrbauda, āāvai nav pÄrpildÄ«ta, un piespiež vÄrtÄ«bu konvertÄt uz mÄrÄ·a tipa maksimÄlo vai minimÄlo vÄrtÄ«bu (iepriekÅ” minÄtajÄ piemÄrÄ, vÄrtÄ«ba 300 tiktu pÄrvÄrsti par 255). Lai atspÄjotu Å”Ädas pÄrbaudes, tiek nodroÅ”inÄti papildu API izsaukumi ā{f64, f32}::to_int_uncheckedā, kas darbojas nedroÅ”ajÄ režīmÄ.
fn cast(x: f32) -> u8 {
x kÄ u8
}
fn galvenais() {
let too_big = 300.0;
let too_small = -100.0;
let nan = f32::NAN;
Izmantojiet stabilizÄtu procesuÄlie makrofunkcijÄm lÄ«dzÄ«gas izteiksmes, veidnes un priekÅ”raksti. IepriekÅ” Å”Ädus makro nevarÄja izsaukt visur, bet tikai atseviŔķÄs koda daļÄs (kÄ atseviŔķs izsaukums, nevis savÄ«ts ar citu kodu). Makro izsaukÅ”anas veida paplaÅ”inÄÅ”ana, lÄ«dzÄ«gi kÄ funkcijas, bija viena no prasÄ«bÄm, lai tÄ«mekļa ietvars darbotos. RaÄ·ete Rust stabilajos izlaidumos. IepriekÅ”, lai panÄktu papildu elastÄ«bu, definÄjot apstrÄdÄtÄjus programmÄ Rocket, bija jÄiespÄjo eksperimentÄls lÄ«dzeklis ar nosaukumu āproc_macro_hygieneā, kas nav pieejams Rust stabilajÄs versijÄs. Å Ä« funkcionalitÄte tagad ir iebÅ«vÄta valodas stabilajos laidienos.
Atļauts izmantot diapazonus ar veidu ācharā, lai atkÄrtotu diapazona vÄrtÄ«bas (operÄcijas::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):
Jauna API daļa ir pÄrcelta uz stabilo kategoriju, tostarp stabilizÄtÄ
Arc::as_ptr,
BTreeMap::remove_entry,
Rc::as_ptr,
rc::VÄjÅ”::as_ptr,
rc::VÄjÅ”::from_raw,
rc::VÄjÅ”::into_raw,
str:: strip_prefix,
str:: strip_suffix,
sinhronizÄcija::VÄjÅ”::as_ptr,
sinhronizÄcija::VÄjÅ”::from_raw,
sinhronizÄt::VÄjÅ”::into_raw,
char::UNICODE_VERSION,
Span::resolved_at,
Span::located_at,
Span::mixed_site,
unix::process::CommandExt::arg0.
Rustc kompilators ir pievienojis atbalstu dažÄdu mÄrÄ·a platformas funkciju ignorÄÅ”anai, izmantojot karogu "target-feature", piemÄram, "-C target-feature=+avx2,+fma". Ir pievienoti arÄ« jauni karogi:
"force-unwind-tables", lai Ä£enerÄtu attÄ«Å”anas zvanu tabulas neatkarÄ«gi no avÄriju apstrÄdes stratÄÄ£ijas; "embed-bitcode", lai kontrolÄtu, vai LLVM bitkods ir iekļauts Ä£enerÄtajos rlibs. Karogs "embed-bitcode" ir iespÄjots pÄc noklusÄjuma Cargo, lai optimizÄtu izveides laiku un diska vietas patÄriÅu.
TreÅ”ais atbalsta lÄ«menis ir nodroÅ”inÄts platformÄm mipsel-sony-psp un thumbv7a-uwp-windows-msvc. TreÅ”ais lÄ«menis ietver pamata atbalstu, taÄu bez automatizÄtas testÄÅ”anas un oficiÄlo bÅ«vÄjumu publicÄÅ”anas.
TurklÄt var atzÄ«mÄt stÄsts par vienkÄrÅ”ÄkÄ radÄ«Å”anu progr Rust valodÄ, sÄkot lietot sistÄmas sÄknÄÅ”anas ielÄdi un gatavs patstÄvÄ«gai ielÄdei operÄtÄjsistÄmas vietÄ.
Å is raksts ir pirmais no sÄrijas, kas veltÄ«ta tÄdu paÅÄmienu demonstrÄÅ”anai, kas ir pieprasÄ«ti zema lÄ«meÅa programmÄÅ”anas un OS izstrÄdes jomÄ.