Harshen shirye-shiryen tsatsa 1.47

aka buga saki 1.47 na yaren shirye-shiryen tsarin Rust, wanda aikin Mozilla ya kafa. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya, yana ba da sarrafa ƙwaƙwalwar ajiya ta atomatik, kuma yana ba da hanya don cimma babban daidaiton ɗawainiya ba tare da amfani ba mai shara и lokacin gudu (lokacin aiki ya gangara zuwa farkon farawa da kiyaye daidaitaccen ɗakin karatu).

Gudanar da ƙwaƙwalwar ajiya ta atomatik na Rust yana kawar da kurakurai yayin sarrafa masu nuni kuma yana ba da kariya daga matsalolin da suka taso daga ƙananan ƙananan ƙwaƙwalwar ajiya, kamar shiga yankin ƙwaƙwalwar ajiya bayan an 'yantar da shi, ɓangarorin null pointer, buffer overruns, da dai sauransu. Ana haɓaka mai sarrafa fakiti don rarraba ɗakunan karatu, tabbatar da taro da sarrafa abubuwan dogaro ta hanyar aikin. ofishin. Ana tallafawa wurin ajiya don ɗaukar ɗakunan karatu akwati.io.

Main sababbin abubuwa:

  • Aiwatar da tallafi don nau'ikan tsararraki girman sabani. A baya can, saboda rashin iya ayyana ayyuka na gabaɗaya don duk ƙimar lamba, madaidaicin ɗakin karatu ya ba da goyon bayan ginanniyar sifa kawai don tsararru har zuwa abubuwa 32 cikin girman (halayen kowane girman an ƙididdige su a kididdiga). Godiya ga ƙirƙirar ayyuka na m generics ("const generics"), ya zama mai yiwuwa a ayyana janar ayyuka ga kowane tsararru size, amma har yanzu ba a haɗa su a cikin barga harshe fasali, ko da yake an aiwatar da su a cikin mai tarawa kuma su ne. yanzu hannu a cikin daidaitaccen ɗakin karatu don tsararrun halaye na kowane girman.

    Misali, ginin mai zuwa a cikin Rust 1.47 zai buga abubuwan da ke cikin tsararru, kodayake a baya zai haifar da kuskure:

    fn main() {
    zan xs = [0; 34];

    println!("{:?}", xs);
    }

  • Samar da fitarwa na guntun burbushi (backtrace), fitarwa a cikin yanayin gaggawa. Abubuwan da ba su da sha'awa a mafi yawan yanayi, amma sun rikitar da fitarwa da kuma karkatar da hankali daga abubuwan farko na matsalar, an cire su daga alamar. Don dawo da cikakkiyar alama, zaku iya amfani da madaidaicin mahallin "RUST_BACKTRACE=cikakke". Alal misali, don rikodin

    fn main() {
    tsoro!();
    }

    A baya, an fitar da alamar a cikin matakai 23, amma yanzu za a rage shi zuwa
    Matakai 3 waɗanda ke ba ku damar fahimtar ainihin abin nan da nan:

    Zaren 'main' ya firgita a 'firgita bayyananne', src/main.rs:2:5
    tari baya:
    0: std:: firgita:: fara_ firgita
    a /rustc/d…d75a/library/std/src/panicking.rs:497
    1: filin wasa :: babba
    a ./src/main.rs:2
    2: ainihin :: ops :: aiki :: FnOnce :: kira sau ɗaya
    a /rustc/d…d75a/library/core/src/ops/function.rs:227

  • An sabunta mai tara rustc don ginawa ta amfani da shi LLVM 11 (Rutsa amfani LLVM azaman baya don tsara code). A lokaci guda, ikon ginawa tare da tsofaffin LLVMs, har zuwa sigar 8, ana kiyaye shi, amma ta tsohuwa (a cikin tsatsa-lang/llvm-project) yanzu yana amfani da LLVM 11. Ana sa ran fitowar LLVM 11 a cikin kwanaki masu zuwa.
  • A kan dandamali na Windows, mai tara rustc yana ba da tallafi don ba da damar tabbatar da daidaiton kwararar sarrafawa (Tsarin Gudun Kulawa), wanda aka kunna ta amfani da tutar “-C control-flow-guard”. A wasu dandamali wannan tutar ba a kula da ita a yanzu.
  • An canza wani sabon yanki na APIs zuwa tsayayyen nau'in, gami da daidaitacce
    Ident:: sabon_raw,
    Range::Ba komai,
    RangeInclusive::Ba komai,
    Sakamako ::as_deref,
    Sakamako ::as_deref_mut,
    Wato::,
    ma'ana :: koma baya_daga,
    f32::TAU da
    f64:: TA.

  • Ana amfani da sifa na "const", wanda ke ƙayyade yiwuwar amfani da shi a cikin kowane mahallin maimakon akai-akai, a cikin hanyoyin:
    • sababbi ga duk lamba banda sifili;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub da saturating_mul ga duk lamba;
    • is_ascii_alphabetic, shine_ascii_babba, shine_ascii_lowercase, shine_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and is_ascii_control for char and u8 type.
  • Don FreeBSD hannu Toolkit daga FreeBSD 11.4 (FreeBSD 10 baya goyan bayan LLVM 11).

source: budenet.ru

Add a comment