Umhlwa 1.73 Ukukhutshwa koLwimi lweNkqubo

Ukukhutshwa kolwimi lwenkqubo ye-Rust 1.73, eyasekwa yiprojekthi ye-Mozilla, kodwa ngoku iphuhliswe phantsi kombutho ozimeleyo ongenzi nzuzo i-Rust Foundation, ipapashiwe. Ulwimi lugxininise ekukhuselweni kwememori kwaye lubonelela ngeendlela zokufikelela kwi-parallelism ephezulu yemisebenzi ngelixa ugwema ukusetyenziswa komqokeleli wenkunkuma kunye nexesha lokuqhuba (ixesha lokuqhuba liyancitshiswa ekuqaliseni okusisiseko kunye nokugcinwa kwelayibrari esemgangathweni).

Iindlela zokuphatha imemori ye-Rust zigcina umphuhlisi kwiimpazamo xa ulawula izikhombisi kwaye ukhusele kwiingxaki ezivela ngenxa yokuphathwa kwememori ekwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukususa ireferensi yezalathisi ezingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukubonelela ngokwakha kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Uvimba we-crates.io uyaxhaswa kukusingatha amathala eencwadi.

Ukhuseleko lwenkumbulo lubonelelwa kwiRust ngexesha lokudibanisa ngokujongwa kwereferensi, ukugcina umkhondo wobunini bento, ukugcina umkhondo wobomi bento (i-scopes), kunye nokuvavanya ukuchaneka kokufikelela kwimemori ngexesha lokwenziwa kwekhowudi. Umhlwa ukwabonelela ngokhuseleko ngokuchasene nokuphuphuma kwenani elipheleleyo, kufuna ukuqaliswa okunyanzelekileyo kwamaxabiso aguquguqukayo ngaphambi kokusetyenziswa, iphatha iimpazamo ngcono kwithala leencwadi elisemgangathweni, isebenzisa ingqikelelo yeembekiselo ezingenakuguquguquka kunye nezinto eziguquguqukayo ngokungagqibekanga, ibonelela ngochwethezo olomeleleyo ukuze kuncitshiswe iimpazamo ezinengqiqo.

Iinguqulelo eziphambili:

  • Ifomathi yemiyalezo ekhutshwe sisibambi esimiyo senkqubo yokungqubana (uloyiko) iphinde yayilwa ngokutsha. Umbhalo ochaziweyo kwi "panic!" macro iboniswa ngoku kumgca owahlukileyo ngaphandle kwamanqaku ocaphulo, ukwenza umyalezo ufundeka lula kwaye uphelise ukubhideka xa ucaphulo olufakwe kwindlwane lukhona okanye lwahlulwe kwilayini ezininzi. fn main() {vumela ifayile = "ferris.txt"; uvalo!("oh hayi! {ifayile:?} ayifunyenwanga!"); } Bekukho umsonto 'ongundoqo' owothukileyo othi 'oh hayi! “ferris.txt” ayifunyenwanga!’, src/main.rs:3:5 Umsonto ‘ongundoqo’ wothukile ku-src/main.rs:3:5: oh hayi! "ferris.txt" ayifunyenwanga!

    Imveliso yemiyalezo ebonisiweyo xa "assert_eq" kunye ne "assert_ne" macros ziqhutywa nayo iye yaphinda yasetyenziswa. fn main() {assert_eq!("🦀", "🐟", "i-ferris ayiyontlanzi"); } Bekukho umsonto 'ongundoqo' owothukileyo ku-'assertation': `(ekhohlo == ekunene)` ekhohlo: `"🦀"`, ekunene: `"🐟"`: iferris asiyontlanzi', src/main.rs: 2 :5 Umsonto 'ongundoqo' wothukile ku-src/main.rs:2:5: inkcazo `ekhohlo == ekunene` ayiphumelelanga: iferris asiyontlanzi eshiywe: “🦀” ekunene: “🐟”

  • Ngokuhambelana ne-RFC 3184, ukukwazi ukuguqula ngokuthe ngqo intambo-yasekuhlaleni (intambo_yendawo) izitshixo zokugcina i-LocalKey> kunye ne-LocalKey> ngokusebenzisa i-get(), set(), thatha () kwaye replace() iindlela zongeziwe , endaweni yokusebenzisa "nge(|inner| ...)" ukuvala, okuphelisa imfuno yekhowudi yokuqalisa eyongezelelweyo yamaxabiso angagqibekanga akhankanyiweyo kwimisonto emitsha kusetyenziswa i "thread_local!" enkulu. umsonto_wasekhaya! {IZINTO ezimileyo: Iseli> = Iseli ::intsha(Vec::intsha()); } fn f() {// was THINGS.with(|i| i.set(vec![32, 1, 2])); // yaba YINTO.set(vec![3, 1, 2]); // ... // yavunyelwa v = THINGS.with(|i| i.take()); // waba let v: Vec = THINGS.take (); }
  • Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
    • Akuthunyelwanga {integer}::div_ceil
    • Akuthunyelwanga {integer}::ilandelayo_multiple_of
    • Akuthunyelwanga {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • Isitshixo seNdawo::>::fumana
    • Isitshixo seNdawo::>::seti
    • Isitshixo seNdawo::>::thatha
    • Isitshixo seNdawo::>::buyisela
    • Isitshixo seNdawo ::>::nge_boleka
    • Isitshixo seNdawo::>::with_borrow_mut
    • Isitshixo seNdawo::>::seti
    • Isitshixo seNdawo::>::thatha
    • Isitshixo seNdawo::>::buyisela
  • Uphawu "const", olumisela ukuba kunokwenzeka ukulisebenzisa kuyo nayiphi na imeko endaweni yesigxina, lisetyenziswa kwimisebenzi:
    • rc::Ubuthathaka::intsha
    • sync::Ubuthathaka::intsha
    • Nonnull:: as_ref
  • Umqambi unikezela ngokurekhoda kolwazi lwenguqulelo kwicandelo elithi ".comment", elifana neGCC kunye neClang.
  • Inqanaba lesithathu lenkxaso liphunyeziwe kwiiplatifti aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl kunye x86_64-ilinux engaziwayo -oho. Inqanaba lesithathu libandakanya inkxaso esisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo, ukupapashwa kwezakhiwo ezisemthethweni, kunye nokuqinisekiswa kokwakhiwa kwekhowudi.
  • Inqanaba lesibini lenkxaso yeqonga ekujoliswe kulo wasm32-wasi-preview1-threads sele liphunyeziwe. Inqanaba lesibini lenkxaso libandakanya isiqinisekiso sendibano.

umthombo: opennet.ru

Yongeza izimvo