Umhlwa 1.47 Ukukhutshwa koLwimi lweNkqubo

Ukukhutshwa kwe-1.47 yolwimi lwenkqubo ye-Rust, eyasekwa yiprojekthi ye-Mozilla, 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 lususa iimpazamo xa ulawula izikhombisi kwaye ukhusela kwiingxaki ezivela kulawulo lwenkumbulo olukwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukulahlwa kwesalathiso esingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukuqinisekisa ukudibanisa kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Indawo yokugcina i-crates.io iyaxhaswa kukusingatha amathala eencwadi.

Iinguqulelo eziphambili:

  • Inkxaso ephunyeziweyo yeempawu zoluhlu lobungakanani obungenasizathu. Ngaphambili, ngenxa yokungakwazi ukuchaza imisebenzi eqhelekileyo yawo onke amaxabiso apheleleyo, ithala leencwadi elisemgangathweni libonelele ngenkxaso yophawu olwakhelwe ngaphakathi kuphela kuluhlu oluya kuthi ga kwiimpawu ezingama-32 ngobukhulu (iimpawu zesayizi nganye zichazwe ngokwezibalo). Ngombulelo ekudalweni kwe-const generics ukusebenza, kuye kwenzeka ukuba kuchazwe imisebenzi eqhelekileyo kuyo nayiphi na isayizi yoluhlu, kodwa ayikabandakanywa kwiimpawu ezizinzileyo zolwimi, nangona ziphunyezwe kumqokeleli kwaye ngoku zisetyenziswa kwilayibrari eqhelekileyo. kuluhlu lweentlobo zazo naziphi na isayizi.
    Umzekelo, oku kulandelayo kwakha kwiRust 1.47 kuya kuprinta imixholo yoluhlu, nangona ngaphambili bekuya kubangela impazamo:

fn eyona () {
vumela xs = [0; 34];
println!("{:?}", xs);
}

  • Kubonelelwe ngemveliso yolandelelwano olufutshane (umva), imveliso kwiimeko zonxunguphalo. Izinto ezingenamdla kwiimeko ezininzi, kodwa zidibanise umphumo kwaye ziphazamise ingqalelo kwizinto eziphambili zengxaki, azibandakanywa kumkhondo. Ukubuyisela umkhondo opheleleyo, ungasebenzisa imeko-bume eguquguqukayo "RUST_BACKTRACE=igcwele". Umzekelo, kwikhowudi

fn eyona () {
ukuphaphazela!();
}

Ngaphambili, umkhondo wawuveliswe ngamanqanaba angama-23, kodwa ngoku uya kuncitshiswa ukuya kwizigaba ezi-3, kukuvumela ukuba ubambe ngokukhawuleza undoqo:

Umsonto 'ongundoqo' wothuke 'uloyiko olucacileyo', src/main.rs:2:5
isitaki esingasemva:
0: std::panic::qalisa_uvalo
apha /rustc/d…d75a/library/std/src/panicking.rs:497
1: ibala lokudlala::ingundoqo
apha ./src/main.rs:2
2: undoqo::ops::umsebenzi::FnOnce::call_kanye
apha /rustc/d…d75a/library/core/src/ops/function.rs:227

  • I-rustc compiler iye yahlaziywa ukwakha usebenzisa i-LLVM 11 (i-Rust isebenzisa i-LLVM njenge-backend yokuvelisa ikhowudi). Kwangaxeshanye, ukukwazi ukwakha nge-LLVM endala, ukuya kuthi ga kwinguqulelo yesi-8, kuyagcinwa, kodwa ngokungagqibekanga (kwi-rust-lang/llvm-project) i-LLVM 11 ngoku isetyenziswa.Ukukhutshwa kwe-LLVM 11 kulindeleke kwixesha elizayo. iintsuku.
  • Kwi-platform yeWindows, i-rustc compiler inikezela ngenkxaso yokuvumela ukutshekishwa kokulawula ukuhamba kwengqibelelo (I-Control Flow Guard), isebenze ngokusebenzisa i-"-C control-flow-guard" iflegi. Kwamanye amaqonga le flegi ayihoywa okwangoku.
  • Inxalenye entsha ye-API iye yakhutshelwa kudidi oluzinzileyo, kuquka isazisi esizinzile::entsha_eluhlaza, Uluhlu::alunanto, Uluhlu oluqukayo::alunanto, Isiphumo::as_deref, Isiphumo::as_deref_mut, Vec::ivuza, isalathisi: , f32:: TAU kunye ne-f64::TAU.
  • Uphawu "const", olumisela ukuba kunokwenzeka ukulisebenzisa kuyo nayiphi na imeko endaweni yesigxina, lisetyenziswa kwiindlela:
    • entsha kuzo zonke ii-integer ngaphandle kuka-zero;
    • itshekishiwe_yongeza, ikhangelwe_incinci, ikhangelwe_i-mul, ikhangelwe_neg, ikhangelwe_shl, ikhangelwe_shr, i-saturating_yongeza, i-saturating_sub kunye ne-saturating_mul yazo zonke ii-integers;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace kwaye is_ascii_ucontrol.
  • Kwi-FreeBSD, i-toolkit esuka kwi-FreeBSD 11.4 isetyenziswa (i-FreeBSD 10 ayixhasi i-LLVM 11).

Ithatyathwe kwi opennet.ru

umthombo: linux.org.ru

Yongeza izimvo