Rust 1.47 Whakaputa Reo Papatono

whakaputaina tuku 1.47 o te reo whakahōtaka pūnaha waikura, i hangaia e te kaupapa Mozilla. E aro ana te reo ki te haumaru mahara, e whakarato ana i te whakahaere mahara aunoa, me te whai huarahi ki te whakatutuki i te whakarara mahi teitei me te kore whakamahi kaikohi paru и waahi (ka heke te wa whakahaere ki te arataki me te tiaki i te whare pukapuka paerewa).

Ko te whakahaere mahara aunoa a Rust ka whakakore i nga hapa i te wa e raweke ana i nga tohutohu me te whakamarumaru i nga raru ka puta mai i te raweke mahara taumata-iti, penei i te urunga ki tetahi rohe mahara i muri i te wa e wetekina ana, nga tohu tohu kore, te paheketanga o te putunga, aha atu. Kei te whakawhanakehia he kaiwhakahaere mokihi hei tohatoha whare pukapuka, hei whakarite i te huihuinga me te whakahaere i nga whakawhirinakitanga a te kaupapa. utanga. Ka tautokohia he putunga hei manaaki i nga whare pukapuka crates.io.

Main nga mahi auaha:

  • Kua whakatinanahia te tautoko mo nga momo raupapa ahakoa te rahi. I mua, na te kore e kaha ki te tautuhi i nga mahi whanui mo nga uara integer katoa, i whakaratohia e te whare pukapuka paerewa he tautoko huanga hanga-i roto anake mo nga huānga tae atu ki te 32 huānga te rahi (ko nga ahuatanga mo ia rahi kua tautuhia i te ahua). He mihi ki te hanganga o te mahi o nga tikanga o nga wa katoa ("const generics"), ka taea te tautuhi i nga mahi whanui mo nga rahi o te huinga, engari kaore ano kia whakauruhia ki roto i nga ahuatanga reo pumau, ahakoa kua whakatinanahia i roto i te kaitoi me te inaianei whai wāhi i roto i te whare pukapuka paerewa mo nga huanga huinga ahakoa te rahi.

    Hei tauira, ko te hanga e whai ake nei i roto i te Rust 1.47 ka ta i nga ihirangi o te huinga, ahakoa i mua ka puta he hapa:

    fn matua() {
    kia xs = [0; 34];

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

  • Ka whakaratohia he putanga o nga tohu poto ake (whakamuri), whakaputa i nga waahi ohorere. Ko nga huānga kaore i te arohia i roto i te nuinga o nga ahuatanga, engari ka whakapouri i te whakaputanga me te whakararu i te aro mai i nga take tuatahi o te raru, ka kapea mai i te tohu. Hei whakahoki i te tohu katoa, ka taea e koe te whakamahi i te taurangi taiao "RUST_BACKTRACE=ki tonu". Hei tauira, mo te waehere

    fn matua() {
    mataku!();
    }

    I mua, ka puta te tohu i roto i nga waahanga 23, engari inaianei ka heke iho ki
    3 nga taahiraa e taea ai e koe te hopu tonu i te hiranga:

    ka mataku te miro 'matua' i te 'panic tino', src/main.rs:2:5
    tāpae whakamuri:
    0: std:: mataku::begin_panic
    i /rustc/d…d75a/library/std/src/panicking.rs:497
    1: papa tākaro::main
    i ./src/main.rs:2
    2: matua::ops::mahi::FnOnce::call_once
    i /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Kua whakahōungia te whakahiato rustc ki te hanga ma te whakamahi LLVM 11 (Wakura whakamahinga LLVM hei tuara mo hanga waehere). I te wa ano, ko te kaha ki te hanga me nga LLVM tawhito, tae atu ki te putanga 8, ka mau tonu, engari ma te taunoa (i roto rust-lang/llvm-kaupapa) kei te whakamahi inaianei i te LLVM 11. Ko te LLVM 11 ka tukuna i nga ra e haere ake nei.
  • I runga i te papaaho Matapihi, ka tautokohia e te kaitoi rustc te whakaahei i nga arowhai mana whakahaere (Control Flow Guard), ka whakahohehia ma te whakamahi i te haki "-C control-flow-guard". I runga i etahi atu papaaho ka warewarehia tenei haki mo naianei.
  • He waahanga hou o nga API kua whakawhitia ki te waahanga pumau, tae atu ki te whakapumau
    Ident::new_raw,
    Awhe:: is_empty,
    RangeInclusive:: is_empty,
    Hua::as_deref,
    Hua::as_deref_mut,
    Vec:: turuturu,
    tohutohu::offset_mai,
    f32::TAU me
    f64::TAU.

  • Ko te huanga "const", e whakatau ana i te kaha ki te whakamahi i roto i tetahi horopaki hei utu mo nga taumau, ka whakamahia i roto i nga tikanga:
    • hou mo nga tauoti katoa atu i te kore;
    • tirohia_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub me saturating_mul mo nga tauoti katoa;
    • he_ascii_alphabetic, he_ascii_matua, he_ascii_puriki, he_ascii_alphanumeric, he_ascii_digit, he_ascii_hexdigit, he_ascii_punctuation, he_ascii_graphic, he_ascii_whitespace me he_ascii_control mo nga momo char me u8.
  • Mo FreeBSD whai wāhi kete taputapu mai i FreeBSD 11.4 (Karekau a FreeBSD 10 e tautoko i te LLVM 11).

Source: opennet.ru

Tāpiri i te kōrero