Rust 1.58 Ukukhishwa Kolimi Lokuhlela

Ukukhishwa kolimi lokuhlela lwenhloso evamile i-Rust 1.58, eyasungulwa iphrojekthi ye-Mozilla, kodwa manje ethuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, kushicilelwe. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokufinyelela ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi wezibi noma isikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kusindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi ivikela ezinkingeni eziphakama ngenxa yokukhohlisa inkumbulo yezinga eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukususa ireferensi izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Okuqanjiwe okuyinhloko:

  • Kumabhulokhi okufometha komugqa, ngaphezu kwekhono elikhona ngaphambili lokushintsha okuhlukile okubalwe ngokucacile ngemva komugqa ngenombolo negama, ikhono lokushintsha izihlonzi ezingafanele ngokungeza isisho esithi β€œ{identifier}” emugqeni liyasetshenziswa. Isibonelo: // Izakhiwo ebezisekelwa ngaphambilini: println!("Sawubona, {}!", get_person()); println!("Sawubona, {0}!", get_person()); println!("Sawubona, {person}!", umuntu = get_person()); // manje ungacacisa vumela umuntu = get_person(); println!("Sawubona, {umuntu}!");

    Izihlonzi nazo zingacaciswa ngokuqondile ezinkethweni zokufometha. vumela (ububanzi, ukunemba) = get_format(); kokuthi (igama, amaphuzu) ku-get_scores() {println!("{name}: {score:width$.precision$}"); }

    Ukushintshanisa okusha kusebenza kuwo wonke ama-macros asekela incazelo yefomethi yeyunithi yezinhlamvu, ngaphandle kokuthi "ukwethuka!" kuzinguqulo zango-2015 nezingu-2018 zolimi lwe-Rust, lapho ukwethuka!("{ident}") kuthathwa njengeyunithi yezinhlamvu evamile (ku-Rust 2021 ukufaka esikhundleni kusebenza).

  • Ukuziphatha kwe-std::inqubo::Isakhiwo somyalo ku-Windows platform sishintshiwe ukuze kuthi lapho senza imiyalo, ngenxa yezizathu zokuphepha, singabe sisabheka amafayela asebenzisekayo ohlwini lwamanje lwamanje. Uhla lwemibhalo lwamanje alufakiwe ngenxa yokuthi lungasetshenziswa ukwenza ikhodi enonya uma izinhlelo zisetshenziswa kunkhombandlela engathenjwa (CVE-2021-3013). Indlela entsha yokuthola esebenzisekayo ihlanganisa ukusesha izinkomba ze-Rust, inkomba yohlelo lokusebenza, uhla lwemibhalo lwesistimu ye-Windows, kanye nezinkomba ezicaciswe ekuguquguqukeni kwemvelo ye-PATH.
  • Ilabhulali evamile inwebise inani lemisebenzi ephawulwe ngokuthi "#[must_use]" ukuze kukhishwe isexwayiso uma inani lokubuyisela lishaywa indiva, okusiza ukuhlonza amaphutha abangelwa ukucabangela ukuthi umsebenzi uzoshintsha amanani kunokubuyisela inani elisha.
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
    • Imethadatha::is_symlink
    • Indlela::is_symlink
    • {integer}::saturating_div
    • Inketho::vula_akuhloliwe
    • Umphumela::vula_akuhloliwe
    • Umphumela::unwrap_err_akuhloliwe
  • Isibaluli esithi "const", esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma yimuphi umongo esikhundleni sama-constants, sisetshenziswa emisebenzini:
    • Ubude besikhathi::okusha
    • Ubude besikhathi::kuhloliwe_engeza
    • Ubude besikhathi::engeza_okusuthisayo
    • Ubude besikhathi::checked_sub
    • Ubude besikhathi::saturating_sub
    • Ubude besikhathi::kuhloliwe_mul
    • Ubude besikhathi::i-saturating_mul
    • Ubude besikhathi::checked_div
  • Kuvunyelwe ukuhoxiswa kwezikhombi ze-"*const T" kumongo we-"const".
  • Kumphathi wephakheji ye-Cargo, inkambu ye-rust_version yengezwe kumethadatha yephakheji, futhi inketho ethi "--message-format" yengezwe emyalweni "wokufaka impahla".
  • Umhlanganisi usebenzisa ukusekelwa kwendlela yokuvikela ye-CFI (Control Flow Integrity), enezela ukuhlola ngaphambi kocingo ngalunye olungaqondile ukuze kutholwe ezinye izinhlobo zokuziphatha okungachazwanga ezingase ziholele ekwephulweni kwe-oda lokukhishwa elivamile (control flow) njengomphumela ukusetshenziswa kwemisebenzi eshintsha izinkomba ezigcinwe kumemori emisebenzini.
  • Umhlanganisi wengeze usekelo lwezinguqulo 5 no-6 zefomethi yokuqhathanisa ye-LLVM, esetshenziselwa ukuhlola ukumbozwa kwekhodi phakathi nokuhlolwa.
  • Ku-comiler, izimfuneko zenguqulo encane ye-LLVM ziphakanyiselwe ku-LLVM 12.
  • Izinga lesithathu losekelo lweplathifomu ye-x86_64-engaziwa-ayikho isetshenzisiwe. Ileveli yesithathu ibandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela izakhiwo ezisemthethweni, noma ukuhlola ukuthi ikhodi ingakhiwa yini.

Ukwengeza, singabona ukushicilelwa kwe-Microsoft kokukhishwa kwe-Rust yemitapo yolwazi ye-Windows 0.30, ekuvumela ukuthi usebenzise ulimi lwe-Rust ukuthuthukisa izinhlelo zokusebenza ze-Windows OS. Isethi ihlanganisa amaphakheji amabili ekhreyithi (amawindi namafasitela-sys), ongafinyelela ngawo i-Win API ezinhlelweni ze-Rust. Ikhodi yosekelo lwe-API ikhiqizwa ngokuguqukayo kusuka kumethadatha echaza i-API, ekuvumela ukuthi usebenzise usekelo kumakholi akhona we-Win API kuphela, kodwa namakholi azovela ngokuzayo. Inguqulo entsha yengeza usekelo lwengxenyekazi eqondiwe ye-UWP (Universal Windows Platform) futhi isebenzisa izinhlobo zeHandle neDebug.

Source: opennet.ru

Engeza amazwana