Rust 1.58 Fa'apolokalame Gagana Fa'asa'oloto

O le faʻasaʻoina o le gagana faʻapolokalame faʻamoemoe lautele Rust 1.58, faʻavaeina e le Mozilla poloketi, ae o lea ua atiaʻe i lalo o le faʻauluuluga a le faʻalapotopotoga tutoatasi e leai ni tupe mama Rust Foundation, ua lomia. O le gagana e taulaʻi i le saogalemu o mafaufauga, e maua ai le puleaina o manatuaga otometi, ma tuʻuina atu auala e ausia ai le maualuga o galuega tutusa e aunoa ma le faʻaogaina o se lapisi poʻo le taʻavale (ua faʻaititia le taimi i le amataga ma le tausiga o le faletusi masani).

Ole pulega otometi a le Rust e fa'asaoina ai le tagata e faia mea sese pe a fa'aogaina fa'ailoga ma puipuia mai fa'afitauli e tula'i mai ona o le fa'aogaina o mafaufauga maualalo, e pei o le ulufale atu i se vaega e manatua pe a uma ona fa'asa'olotoina, fa'ate'aina null pointers, buffer overruns, etc. Ina ia tufatufa faletusi, tuʻuina atu fausia ma pulea faʻalagolago, o le poloketi e atiina ae le pule o pusa uta. O le crates.io repository e lagolagoina mo le talimalo faletusi.

Autu fa'afouga:

  • I le fa'atulagaina o laina poloka, e faaopoopo atu i le avanoa muamua e mafai ona suitulaga i suiga manino o lo'o lisiina pe a mae'a se laina i le numera ma le igoa, o le mafai ona suitulaga fa'asinomaga e ala i le fa'aopoopoina o le fa'aaliga "{identifier}" i le laina ua fa'atinoina. Mo se fa'ata'ita'iga: // Fausiaina na lagolagoina muamua: println!("Talofa, {}!", get_person()); println!("Talofa, {0}!", get_person()); println!("Talofa, {tagata}!", tagata = get_person()); // i le taimi nei e mafai ona e faʻamaonia let person = get_person(); println!("Talofa, {tagata}!");

    E mafai fo'i ona fa'ailoa sa'o mai fa'asinomaga i filifiliga fa'avasega. tu'u (lautele, sa'o) = get_format(); mo (igoa, sikoa) i get_scores() { println!("{igoa}: {score:width$.precision$}"); }

    O le suiga fou e galue i macros uma e lagolagoina le faʻamalamalamaina o le manoa, sei vagana ai le "panic!" i le 2015 ma le 2018 versions of the Rust language, lea o le popole!("{ident}") o lo'o faia e pei o se manoa masani (i le Rust 2021 e galue suitulaga).

  • O le amio a le std::process::Command structure i luga o le Windows platform ua suia ina ia pe a faʻatinoina poloaiga, mo mafuaaga saogalemu, e le toe suʻeina faila faʻapipiʻi i le lisi o loʻo iai nei. O le lisi o loʻo i ai nei e le o aofia ai ona e mafai ona faʻaogaina e faʻatino ai tulafono leaga pe a fai o polokalame e faʻatautaia i tusi e le talitonuina (CVE-2021-3013). Ole su'esu'ega fou ole su'esu'ega e aofia ai le su'eina ole Rust directories, le tusi talosaga, le Windows system directory, ma fa'atonuga o lo'o fa'amaoti mai ile PATH environment variable.
  • O le faletusi masani ua faʻalauteleina le numera o galuega faʻailoga "#[must_use]" e tuʻuina atu se lapataiga pe a le amanaʻia le tau o le toe faafoi, lea e fesoasoani e iloa ai mea sese e mafua mai i le manatu o se galuega o le a suia tau nai lo le toe faafoiina o se tau fou.
  • O se vaega fou o le API ua siitia i le vaega o fale mautu, e aofia ai metotia ma faʻatinoga o uiga ua faʻamautuina:
    • Metadata::is_symlink
    • Auala::is_symlink
    • {integer}::saturating_div
    • Filifiliga::unwrap_unchecked
    • I'uga::unwrap_unchecked
    • I'uga::unwrap_err_unchecked
  • O le uiga "const", lea e fuafua ai le avanoa e faʻaaogaina ai i soʻo se faʻamatalaga nai lo faʻaauau, e faʻaaogaina i galuega:
    • Umi::fou
    • Umi::checked_add
    • Umi::saturating_add
    • Umi::checked_sub
    • Umi::saturating_sub
    • Umi::checked_mul
    • Umi::saturating_mul
    • Umi::checked_div
  • Fa'ataga le fa'ailoaina o fa'asinomaga "*const T" i totonu o fa'amatalaga "const".
  • I le pule o pusa uta uta, ua faaopoopo le fanua rust_version i le metadata afifi, ma le "--message-format" filifiliga ua faaopoopo i le " uta uta" poloaiga.
  • O loʻo faʻatinoina e le tagata faʻapipiʻi le lagolago mo le CFI (Control Flow Integrity) le faʻaogaina o le puipuiga, lea e faʻaopoopoina siaki aʻo leʻi oʻo i le valaau tuusaʻo taʻitasi e iloa ai nisi o ituaiga o amioga e leʻi faʻamalamalamaina e ono mafai ona oʻo atu ai i le solia o le faʻatonuga masani o le faʻatonuga (pulea le tafe) o se taunuuga o le fa'aogaina o fa'aoga e suia ai fa'ailoga o lo'o teuina i manatuaga i galuega.
  • Ua fa'aopoopoina e le tu'ufa'atasi le lagolago mo fa'aliliuga 5 ma le 6 o le fa'atusa fa'atusa o le LLVM, fa'aaoga e iloilo ai le fa'asologa o tulafono i le taimi o su'ega.
  • I totonu o le tuʻufaʻatasiga, o manaʻoga mo le laʻititi laʻititi o le LLVM e siitia i le LLVM 12.
  • O le tulaga lona tolu o le lagolago mo le x86_64-unknown-none platform ua faʻatinoina. O le vaega lona tolu e aofia ai le lagolago faʻavae, ae aunoa ma le faʻataʻitaʻiga otometi, faʻasalalauga faʻapitoa faufale, poʻo le siakiina pe mafai ona fausia le code.

E le gata i lea, e mafai ona matou matauina le lomiga a Microsoft o le tatalaina o Rust mo Windows 0.30 faletusi, lea e mafai ai ona e faʻaogaina le gagana Rust e atiaʻe ai talosaga mo le Windows OS. O le seti e aofia ai pusa pusa e lua (windows ma windows-sys), lea e mafai ai ona e mauaina le Win API i polokalame Rust. Laiti mo le lagolago API e fa'atupuina malosi mai metadata fa'amatala le API, lea e mafai ai ona e fa'atinoina le lagolago e le gata mo telefoni o lo'o i ai Win API, ae mo vala'au o le a aliali mai i le lumana'i. O le lomiga fou e faʻaopoopoina le lagolago mo le UWP (Universal Windows Platform) faʻapipiʻi faʻatulagaina ma faʻaogaina le Taulima ma Debug ituaiga.

puna: opennet.ru

Faaopoopo i ai se faamatalaga