Rust 1.47 Ukukhishwa Kolimi Lokuhlela

eshicilelwe ukukhishwa okungu-1.47 kolimi lokuhlela uhlelo Rust, eyasungulwa iphrojekthi ye-Mozilla. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokufinyelela ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi wezibi ΠΈ isikhathi sokuqalisa (isikhathi sokusebenza sifinyelela ekuqaliseni okuyisisekelo kanye nokugcinwa kokugcinwa komtapo ojwayelekile).

Ukuphathwa kwenkumbulo okuzenzakalelayo ka-Rust kuqeda amaphutha lapho kushintshwa izikhombi futhi kuvikela ezinkingeni ezivela ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela endaweni yenkumbulo ngemva kokuba ikhululiwe, i-null pointer dereferences, i-buffer overruns, njll. Umphathi wephakheji uyathuthukiswa ukuze asabalalise imitapo yolwazi, aqinisekise ukuhlanganisa nokuphatha ukuncika ngephrojekthi. cargo. Indawo yokugcina isekelwa ukuze isingathe amalabhulali amakhreyithi.io.

main emisha:

  • Usekelo olusetshenzisiwe lwezinhlobo ama-arrays noma yimuphi usayizi. Ngaphambilini, ngenxa yokungakwazi ukuchaza imisebenzi ejwayelekile yawo wonke amanani aphelele, ilabhulali evamile inikeze ukusekela kwesici esakhelwe ngaphakathi kuphela kumalungu afanayo afika ku-elementi engama-32 ngosayizi (izici zosayizi ngamunye zazichazwe ngokwezibalo). Ngenxa yokwakhiwa kokusebenza kwamajenerikhi angaguquki (β€œconst generics”), kube nokwenzeka ukuchaza imisebenzi ejwayelekile yanoma yimuphi usayizi wohlu, kodwa okwamanje ayikafakwa ezicini ezizinzile zolimi, nakuba isetshenziswa kumdidiyeli futhi manje abathintekayo kumtapo wolwazi ojwayelekile wezimpawu 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
    Izinyathelo ezi-3 ezikuvumela ukuthi ubambe ingqikithi ngokushesha:

    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 yakhelwe kusetshenziswa LLVM 11 (Ukugqwala isebenzisa I-LLVM njenge-backend ye ukukhiqizwa kwekhodi). Ngasikhathi sinye, ikhono lokwakha ngama-LLVM amadala, kuze kufike kunguqulo 8, liyagcinwa, kodwa ngokuzenzakalelayo (ku rust-lang/llvm-project) manje isebenzisa i-LLVM 11. I-LLVM 11 kulindeleke ukuthi ikhishwe ezinsukwini ezizayo.
  • Kuplathifomu ye-Windows, i-rustc compiler inikeza ukwesekwa kokuvumela ukuhlola ubuqotho bokulawula ukugeleza (Control Flow Guard), okwenziwa kusebenze kusetshenziswa ifulege elithi β€œ-C control-flow-guard”. Kwezinye izinkundla leli fulegi alinakiwe okwamanje.
  • Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nokuzinza
    I-Ident::okusha_okuluhlaza,
    Ibanga::alinalutho,
    Ibanga elihlanganisiwe::alinalutho,
    Umphumela::as_deref,
    Umphumela::as_deref_mut,
    Vec::vuza,
    isikhombi::offset_from,
    f32::TAU kanye
    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.
  • Okwe-FreeBSD abathintekayo ikhithi yamathuluzi evela ku-FreeBSD 11.4 (I-FreeBSD 10 ayisekeli i-LLVM 11).

Source: opennet.ru

Engeza amazwana