Umhlwa 1.58 Ukukhutshwa koLwimi lweNkqubo

Ukukhutshwa kolwimi lwenkqubo yenjongo jikelele iRust 1.58, eyasekwa yiprojekthi yeMozilla, kodwa ngoku iphuhliswe phantsi kombutho ozimeleyo ongenzi nzuzo iRust Foundation, ipapashiwe. Ulwimi lujolise ekukhuselweni kwememori, lubonelela ngolawulo lwememori oluzenzekelayo, kwaye lubonelela ngeendlela zokufikelela kwi-parallelism ephezulu yemisebenzi ngaphandle kokusebenzisa umqokeleli wenkunkuma okanye ixesha lokuqhuba (ixesha lokuqhuba lincitshiswe ekuqaliseni okusisiseko kunye nokugcinwa kwelayibrari esemgangathweni).

Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lugcina umphuhlisi kwiimpazamo xa ulawula izikhombisi kwaye ukhusela kwiingxaki ezivela ngenxa yokukhohlisa kwimemori ekwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukurhoxisa izikhombisi ezingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukubonelela ngokwakha kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Indawo yokugcina i-crates.io iyaxhaswa kukusingatha amathala eencwadi.

Iinguqulelo eziphambili:

  • Kwiibhloko zokufometha komgca, ukongeza kwikhono elikhoyo ngaphambili lokutshintsha izinto eziguquguqukayo ezidweliswe ngokucacileyo emva komgca ngenombolo kunye negama, ukukwazi ukufaka indawo yokuchongwa okungaqondakaliyo ngokudibanisa ibinzana elithi "{identifier}" kumgca iphunyeziwe. Umzekelo: // Izakhiwo ebezixhaswe ngaphambili: println!("Molo, {}!", get_person()); println!("Molo, {0}!", fumana_umntu()); println!("Molo, {umntu}!", umntu = get_person()); // ngoku ungacacisa vumela umntu = get_person (); println!("Molo, {umntu}!");

    Iziphawuli nazo zinokuchazwa ngokuthe ngqo kwiinketho zokufomatha. vumela (ububanzi, ukuchaneka) = get_format(); ye (igama, amanqaku) kwi get_scores() {println!("{name}: {score:width$.precision$}"); }

    Utshintsho olutsha lusebenza kuzo zonke iimacros ezixhasa inkcazo yefomathi yomtya, ngaphandle kwe "panic!" kwiinguqulelo ze-2015 kunye ne-2018 yolwimi lwe-Rust, apho i-panic!("{ident}") iphathwa njengentambo eqhelekileyo (kwi-Rust 2021 i-substitution isebenza).

  • Ukuziphatha kwe std::nkqubo::Isakhiwo somyalelo kwiqonga leWindows sitshintshiwe ukuze xa uphumeza imiyalelo, ngenxa yezizathu zokhuseleko, ayisajongi iifayile eziphunyeziweyo kulawulo lwangoku. Uvimba weefayili wangoku awuqukwanga kuba unokusetyenziselwa ukuphumeza ikhowudi enobungozi ukuba iinkqubo ziqhutywa kulawulo olungathembekanga (CVE-2021-3013). Ingqiqo entsha yobhaqo ephunyezwayo ibandakanya ukukhangela abalawuli bomhlwa, ulawulo lwesicelo, ulawulo lwenkqubo yeWindows, kunye nabalawuli abaxeliweyo kuluhlu lwemekobume ye PATH.
  • Ilayibrari eqhelekileyo iye yandisa inani lemisebenzi ephawulwe "#[kufuneka_isetyenziswe]" ukukhupha isilumkiso ukuba ixabiso lembuyekezo alihoywa, elinceda ukuchonga iimpazamo ezibangelwa kukuthatha umsebenzi kuya kutshintsha amaxabiso endaweni yokubuyisela ixabiso elitsha.
  • Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
    • Metadata::is_symlink
    • Indlela ::is_symlink
    • {integer}::saturating_div
    • Ukhetho::vula_akukhangelwanga
    • Isiphumo::vula_akukhangelwanga
    • Isiphumo::unwrap_err_akukhangelwanga
  • Uphawu "const", olumisela ukuba kunokwenzeka ukulisebenzisa kuyo nayiphi na imeko endaweni yesigxina, lisetyenziswa kwimisebenzi:
    • Ixesha::intsha
    • Ubude bexesha::ijongiwe_yongeza
    • Ubude bexesha::iyahlutha_yongeza
    • Ubude bexesha::ijongiwe_incinci
    • Ubude bexesha::incinci_iyahlutha
    • Ubude bexesha::ijongiwe_mul
    • Ubude bexesha::iyahlutha_mul
    • Ixesha::ijongiwe_div
  • Kuvunyelwe ukutenxiswa kwezalathisi "*const T" kwiimeko "const".
  • Kumphathi wephakheji ye-Cargo, i-rust_version field yongezwe kwi-metadata yephakheji, kwaye inketho ethi "-message-format" yongezwe kumyalelo "we-cargo install".
  • Umqambi usebenzisa inkxaso yeCFI (Control Flow Integrity) indlela yokukhusela, eyongeza iitshekhi phambi kwefowuni nganye engathanga ngqo ukuze ibone ezinye iindlela zokuziphatha okungachazwanga ezinokuthi zikhokelele ekwaphulweni komyalelo wesiqhelo wophumezo (ulawulo lokuhamba) njengesiphumo ukusetyenziswa kwemisebenzi etshintsha izikhombisi ezigcinwe kwinkumbulo kwimisebenzi.
  • Umqambi wongeze inkxaso yeenguqulelo ze-5 kunye ne-6 yefomathi yokuthelekisa i-LLVM, esetyenziselwa ukuvavanya ukukhutshwa kwekhowudi ngexesha lokuvavanya.
  • Kumqokeleli, iimfuno zoguqulelo oluncinci lwe-LLVM luphakanyiselwe kwi-LLVM 12.
  • Inqanaba lesithathu lenkxaso ye-x86_64-iqonga elingaziwayo-akukho liphunyeziwe. Inqanaba lesithathu libandakanya inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo, ukupapasha ukwakha kwasemthethweni, okanye ukujonga ukuba ikhowudi inokwakhiwa.

Ukongeza, sinokuphawula upapasho lukaMicrosoft lokukhutshwa kweRust yeelayibrari zeWindows 0.30, ezikuvumela ukuba usebenzise ulwimi lweRust ukuphuhlisa usetyenziso lweWindows OS. Iseti ibandakanya iipakethe ezimbini zekhreyithi (iifestile kunye neefestile-sys), apho unokufikelela kwi-Win API kwiinkqubo ze-Rust. Ikhowudi yenkxaso ye-API yenziwe ngokuguquguqukayo ukusuka kwimethadatha echaza i-API, ekuvumela ukuba uphumeze inkxaso kungekuphela nje kwiifowuni ze-Win API ezikhoyo, kodwa kwiifowuni eziza kubonakala kwixesha elizayo. Uguqulelo olutsha longeza inkxaso ye-UWP (i-Universal Windows Platform) iqonga elijoliswe kuyo kwaye liphumeza uhlobo lwe-Handle kunye ne-Debug.

umthombo: opennet.ru

Yongeza izimvo