Rust 1.47 Kutulutsa Chilankhulo cha Mapulogalamu

Kutulutsa 1.47 kwa chilankhulo cha Rust system programming, chomwe chinakhazikitsidwa ndi polojekiti ya Mozilla, chasindikizidwa. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira, chimapereka kasamalidwe ka kukumbukira, ndipo chimapereka njira zopezera kufananiza kwakukulu kwa ntchito popanda kugwiritsa ntchito chotolera zinyalala kapena nthawi yothamanga (nthawi yothamanga imachepetsedwa kukhala yoyambira ndi kukonza laibulale yokhazikika).

Kuwongolera kukumbukira kwa Rust kumachotsa zolakwika pakuwongolera zolozera ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira pang'ono, monga kulowa mdera la kukumbukira zitamasulidwa, kuchotsedwa kwa null pointer, buffer overruns, ndi zina zambiri. Kugawa malaibulale, kuwonetsetsa kusonkhana ndikuwongolera zodalira, polojekiti ikupanga woyang'anira phukusi la Cargo. Malo osungiramo crates.io amathandizidwa kuti azisunga malaibulale.

Zatsopano zazikulu:

  • Thandizo lokhazikitsidwa pamakhalidwe amagulu amitundu yosiyanasiyana. M'mbuyomu, chifukwa cholephera kufotokozera magwiridwe antchito amtundu uliwonse pamiyezo yonse, laibulale yokhazikika idapereka chithandizo chomangidwira mumindandanda yokhayo mpaka maelementi 32 kukula kwake (makhalidwe a saizi iliyonse adafotokozedwa motsatana). Chifukwa cha kupangidwa kwa magwiridwe antchito a const generics, zidakhala zotheka kutanthauzira magwiridwe antchito amtundu uliwonse, koma sizinaphatikizidwebe m'magawo okhazikika achilankhulocho, ngakhale akugwiritsidwa ntchito popanga ndipo tsopano akugwiritsidwa ntchito mu library yokhazikika. kwa mitundu yosiyanasiyana ya kukula kulikonse.
    Mwachitsanzo, zomanga zotsatirazi mu Rust 1.47 zidzasindikiza zomwe zili mugulu, ngakhale m'mbuyomu zikanabweretsa cholakwika:

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

  • Anapereka zotsatira zazifupi (zotsatira), zotuluka muzochitika zadzidzidzi. Zinthu zomwe sizikhala ndi chidwi muzochitika zambiri, koma zimasokoneza zomwe zimatuluka ndikusokoneza chidwi kuchokera ku zomwe zimayambitsa vutoli, sizimachotsedwa. Kuti mubwererenso, mutha kugwiritsa ntchito kusintha kwa chilengedwe "RUST_BACKTRACE=full". Mwachitsanzo, kwa code

fn chachikulu () {
mantha!();
}

M'mbuyomu, kufufuzaku kunachitika mu magawo 23, koma tsopano kuchepetsedwa kukhala magawo atatu, kukulolani kuti mumvetse mwamsanga:

thread 'main' anachita mantha ndi 'explicit panic', src/main.rs:2:5
stack backtrace:
0: std::mantha::kuyamba_mantha
pa /rustc/d…d75a/library/std/src/panicking.rs:497
1: bwalo lamasewera::mayi
pa ./src/main.rs:2
2: pachimake::ops::function::FnOnce::call_ once
pa /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Wopanga rustc wasinthidwa kuti amange pogwiritsa ntchito LLVM 11 (Rust imagwiritsa ntchito LLVM ngati backend kwa code generation). Nthawi yomweyo, kuthekera komanga ndi LLVM yakale, mpaka mtundu 8, kumasungidwa, koma mwachisawawa (mu rust-lang/llvm-project) LLVM 11 tsopano ikugwiritsidwa ntchito. masiku.
  • Pa nsanja ya Windows, compiler ya rustc imapereka chithandizo chothandizira kuyang'anira kukhulupirika kwakuyenda (Control Flow Guard), yoyendetsedwa pogwiritsa ntchito mbendera ya "-C control-flow-guard". Pa nsanja zina mbendera iyi imanyalanyazidwa pakadali pano.
  • Gawo latsopano la API lasamutsidwa ku gulu lokhazikika, kuphatikiza Ident yokhazikika:: new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from: , f32:: TAU ndi f64::TAU.
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mokhazikika, limagwiritsidwa ntchito m'njira:
    • zatsopano pamagulu onse kupatula ziro;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub ndi saturating_mul pazophatikiza zonse;
    • 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.
  • Kwa FreeBSD, zida za FreeBSD 11.4 zimagwiritsidwa ntchito (FreeBSD 10 sigwirizana ndi LLVM 11).

Kutengedwa kuchokera opennet.ru

Source: linux.org.ru

Kuwonjezera ndemanga