Rust 1.58 Whakaputa Reo Papatono

Ko te tukunga o te reo hotaka kaupapa whanui Rust 1.58, i hangaia e te kaupapa Mozilla, engari inaianei kua whakawhanakehia i raro i te maru o te whakahaere kore-painga motuhake Rust Foundation, kua whakaputaina. Ka aro te reo ki te haumaru mahara, ka whakarato i te whakahaere mahara aunoa, me te whakarato i nga huarahi ki te whakatutuki i te whakarara mahi teitei me te kore e whakamahi i te kaikohi paru, i te wa whakahaere ranei (ka whakaitihia te wa whakahaere ki te arataki me te tiaki i te whare pukapuka paerewa).

Ko te whakahaere mahara aunoa a Rust ka whakaora i te kaiwhakawhanake mai i nga hapa i te wa e raweke ana i nga tohu tohu me te whakamarumaru mai i nga raru ka puta mai na te raweke mahara taumata-iti, penei i te urunga ki tetahi waahi mahara i muri i te wetewetetanga, te whakakore i nga tohu tohu kore, te paopao, me era atu. Hei tohatoha whare pukapuka, whakarato hanga me te whakahaere i nga whakawhirinakitanga, ka whakawhanakehia e te kaupapa te kaiwhakahaere kete Uta. Kei te tautokohia te putunga crates.io mo te manaaki whare pukapuka.

Nga mahi hou:

  • I roto i nga poraka whakahōputu aho, i tua atu i te kaha e waatea ana i mua ki te whakakapi i nga taurangi kua whakarārangihia i muri i te aho ma te nama me te ingoa, ka whakatinanahia te kaha ki te whakakapi i nga tohu tohu ma te taapiri i te kupu "{identifier}" ki te aho. Hei tauira: // Nga hanganga i tautokohia i mua: println!("Kia ora, {}!", get_person()); println!("Kia ora, {0}!", get_person()); println!("Kia ora, {tangata}!", tangata = tiki_tangata()); // inaianei ka taea e koe te tautuhi kia tangata = get_person(); println!("Kia ora, {tangata}!");

    Ka taea hoki te tautuhi tika i nga tohu i roto i nga whiringa whakahōputu. kia (whanui, tika) = get_format(); mo (ingoa, kaute) i roto i te get_scores() { println!("{ingoa}: {score:wide$.precision$}"); }

    Ka mahi te whakakapinga hou i roto i nga tonotono katoa e tautoko ana i te whakamaramatanga o te whakatakotoranga aho, haunga te tonotono “panic!”. i roto i nga putanga 2015 me 2018 o te reo Rust, i roto i te mataku!("{ident}") ka kiia he aho noa (i roto i te Rust 2021 ka mahi te whakakapi).

  • Ko te whanonga o te std::process::Ko te hanganga whakahau i runga i te papaaho Windows kua whakarerekehia kia ka mahia nga whakahau, mo nga take haumarutanga, kare e rapu ana i nga konae ka taea te whakahaere i te raarangi o naianei. Ko te whaiaronga o naianei kei te whakakorehia na te mea ka taea te whakamahi ki te mahi waehere kino mena ka whakahaerehia nga papatono i roto i nga raarangi kore pono (CVE-2021-3013). Ko te arorau rapunga whakahaere hou ko te rapu i nga raarangi Rust, te raarangi tono, te raarangi punaha Windows, me nga raarangi kua tohua ki te taurangi taiao PATH.
  • Kua whakawhānuihia e te whare pukapuka paerewa te maha o nga mahi kua tohua "#[me_whakamahia]" ki te whakaputa whakatupato mena ka warewarehia te uara whakahoki, ka awhina i te tautuhi i nga hapa i puta mai i te whakaaro ka huri te uara o tetahi mahi, kaua ki te whakahoki i te uara hou.
  • Kua nekehia tetahi waahanga hou o te API ki te waahanga pumau, tae atu ki nga tikanga me nga whakatinanatanga o nga ahuatanga kua whakapumautia:
    • Raraungameta::is_symlink
    • Ara::is_symlink
    • {tauoti}::saturating_div
    • Kōwhiringa:: wetewete_kaore i tohua
    • Hua:: wetekina_kaore i tohua
    • Hua:: wetewete i te hapa
  • 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 mahi:
    • Roa::hou
    • Roa::checked_add
    • Roa::makuku_taapiri
    • Roa::checked_sub
    • Te Roa::Makuku_sub
    • Roa::checked_mul
    • Roa::saturating_mul
    • Roa::checked_div
  • Whakaaetia te whakakore i nga tohu tohu "*const T" ki nga horopaki "const".
  • I roto i te kaiwhakahaere kete Uta, kua taapirihia te mara rust_version ki te metadata mokihi, a ko te "--karere-whakaahua" kua taapirihia ki te whakahau "uta uta".
  • Ka whakatinanahia e te kaikohikohi te tautoko mo te tikanga whakamarumaru CFI (Control Flow Integrity), e taapiri ana i nga arowhai i mua i ia waea autaki kia kitea etahi ahuatanga o te whanonga kore e taupatupatuhia tera pea ka takahia te ota whakahaere noa (rerenga whakahaere) hei hua o te te whakamahi i nga mahi ka huri i nga tohutohu kua rongoa ki te mahara ki runga i nga mahi.
  • Kua taapirihia e te kaitoi he tautoko mo nga putanga 5 me te 6 o te whakatakotoranga whakatairite kapinga LLVM, i whakamahia hei arotake i te kapinga waehere i te wa e whakamatautau ana.
  • I roto i te whakahiato, ko nga whakaritenga mo te putanga iti o te LLVM ka whakaarahia ki te LLVM 12.
  • Ko te taumata tuatoru o te tautoko mo te turanga x86_64-unknown-noe kua whakatinanahia. Ko te taumata tuatoru ko te tautoko taketake, engari kaore he whakamatautau aunoa, te whakaputa i nga hanganga mana, me te tirotiro mena ka taea te hanga te waehere.

I tua atu, ka taea e matou te kite i te whakaputanga a Microsoft mo te tukunga o Rust mo nga whare pukapuka Windows 0.30, e taea ai e koe te whakamahi i te reo Rust ki te whakawhanake tono mo te OS Windows. Kei roto i te huinga e rua nga kete pouaka (matapihi me nga matapihi-sys), e taea ai e koe te uru atu ki te Win API i roto i nga kaupapa Rust. Ko te Waehere mo te tautoko API he mea hanga hihiri mai i nga metadata e whakaahua ana i te API, e taea ai e koe te whakatinana tautoko ehara i te mea mo nga waea Win API anake, engari mo nga waea ka puta a muri ake nei. Ko te putanga hou he taapiri i te tautoko mo te papaaapapa whaainga UWP (Universal Windows Platform) me te whakatinana i nga momo Kakau me te Patuiro.

Source: opennet.ru

Tāpiri i te kōrero