Rust 1.47 Ukukhishwa Kolimi Lokuhlela

Ukukhishwa okungu-1.47 kolimi lokuhlela lwesistimu ye-Rust, eyasungulwa iphrojekthi ye-Mozilla, 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 kuqeda amaphutha lapho kushintshwa izikhombi futhi kuvikela ezinkingeni eziqhamuka ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela endaweni yenkumbulo ngemva kokuba ikhululiwe, izinkomba ezingezona ze-null, i-buffer overruns, njll. Ukusabalalisa imitapo yolwazi, ukuqinisekisa ukuhlanganisa nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Okuqanjiwe okuyinhloko:

  • Usekelo olusetshenziswayo lwezimpawu zezinhla zosayizi obuthile. Ngaphambilini, ngenxa yokungakwazi ukuchaza imisebenzi ejwayelekile yawo wonke amanani aphelele, ilabhulali evamile inikeze ukwesekwa kwesici esakhelwe ngaphakathi kuphela kumalungu afanayo afika ku-elementi engama-32 ngosayizi (izici zosayizi ngamunye zazichazwe ngokwezibalo). Ngenxa yokwakhiwa kokusebenza kwe-const generics, kube nokwenzeka ukuchaza imisebenzi ejwayelekile yanoma imuphi usayizi wohlu, kodwa okwamanje ayikafakwa ezicini ezinzile zolimi, nakuba isetshenziswa kumdidiyeli futhi manje isisetshenziswa kumtapo wolwazi ojwayelekile. ngezinhlobo zamalungu afanayo anoma yimuphi usayizi.
    Isibonelo, ukwakhiwa okulandelayo ku-Rust 1.47 kuzophrinta okuqukethwe kwelungu elifanayo, nakuba ngaphambilini bekuzoholela ephutheni:

i-fnmain() {
vumela xs = [0; 34];
println!("{:?}", xs);
}

  • Okukhiphayo okunikeziwe kokulandelelwa okufushane (i-backtrace), okukhiphayo ezimeni eziphuthumayo. Izinto ezingenantshisekelo kuzimo eziningi, kodwa ezihlanganisa okukhiphayo futhi ziphazamise ukunaka ezimbangela eziyinhloko zenkinga, azifakwa ekulandeleni. Ukuze ubuyisele umkhondo ogcwele, ungasebenzisa okuguquguqukayo kwemvelo "RUST_BACKTRACE=full". Isibonelo, ngekhodi

i-fnmain() {
uvalo!();
}

Ngaphambilini, umkhondo wawuphuma ngezigaba ezingu-23, kodwa manje uzoncishiswa ube yizigaba ezi-3, okukuvumela ukuba ubambe ngokushesha ingqikithi:

uchungechunge 'oluyinhloko' luthuke ngokuthi 'ukwethuka okusobala', src/main.rs:2:5
isitaki sangemuva:
0: std::ukwethuka::qala_ukwethuka
kokuthi/rustc/d…d75a/library/std/src/panicking.rs:497
1: inkundla yokudlala::okuyinhloko
ku-./src/main.rs:2
2: core::ops::function::FnOnce::call_kanye
kokuthi/rustc/d…d75a/library/core/src/ops/function.rs:227

  • I-rustc compiler ibuyekeziwe ukuze yakheke isebenzisa i-LLVM 11 (I-Rust isebenzisa i-LLVM njenge-backend yokukhiqiza ikhodi). Ngesikhathi esifanayo, ikhono lokwakha nge-LLVM endala, kuze kufike kunguqulo 8, liyagcinwa, kodwa ngokuzenzakalelayo (ku-rust-lang/llvm-project) i-LLVM 11 manje isisetshenziswa. Ukukhishwa kwe-LLVM 11 kulindeleke esikhathini esizayo. izinsuku.
  • Kuplathifomu ye-Windows, i-rustc compiler inikeza ukwesekwa kokuvumela ukuhlola ubuqotho bokugeleza kokulawula (Control Flow Guard), okwenziwa kusebenze kusetshenziswa ifulege elithi β€œ-C control-flow-guard”. Kwezinye izinkundla leli fulegi alinakiwe okwamanje.
  • Ingxenye entsha ye-API idluliselwe esigabeni esizinzile, okuhlanganisa ne-Ident ezinzile::intsha_iluhlaza, Ibanga::alinalutho, I-RangeInclusive::ayinalutho, Umphumela::as_deref, Umphumela::as_deref_mut, Vec::leak, pointer::offset_from: , f32:: TAU kanye no-f64::TAU.
  • Isibaluli esithi "const", esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma yimuphi umongo esikhundleni sama-constants, sisetshenziswa ezindleleni:
    • entsha yawo wonke izinombolo ngaphandle kweziro;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub kanye ne-saturating_mul yawo wonke izinombolo;
    • 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 and is_ascii_ucontrol.
  • Ku-FreeBSD, ikhithi yamathuluzi evela ku-FreeBSD 11.4 isetshenziswa (I-FreeBSD 10 ayisekeli i-LLVM 11).

Ithathwe ku opennet.ru

Source: linux.org.ru

Engeza amazwana