Puo ea Rust programming 1.65 tokollo

Ho lokolloa ha puo ea lenaneo la Rust 1.65 ka kakaretso, e thehiloeng ke morero oa Mozilla, empa hona joale e ntlafalitsoeng ka tlas'a ts'ebetso ea mokhatlo o ikemetseng o sa etseng phaello oa Rust Foundation, e hatisitsoe. Puo e shebana le ts'ireletso ea mohopolo 'me e fana ka mekhoa ea ho finyella mosebetsi o phahameng oa ho ts'oara mosebetsi ha o ntse o qoba ho sebelisoa ha moqoqo oa lithōle le nako ea ho sebetsa (nako ea ho sebetsa e fokotsehile ho qala ho qala le ho boloka laebrari e tloaelehileng).

Mekhoa ea ho sebetsana le memori ea Rust e boloka moqapi ho tsoa liphosong ha a laola lintlha le ho sireletsa khahlanong le mathata a hlahang ka lebaka la ho tšoara memori ea boemo bo tlaase, joalo ka ho fumana sebaka sa memori ka mor'a hore e lokolloe, ho tlosa li-null pointer, buffer overruns, joalo-joalo. Ho aba lilaebrari, ho fana ka meaho le ho laola litšepe, projeke e nts'etsapele mookameli oa thepa ea Cargo. Sebaka sa polokelo ea crates.io se tšehetsoa bakeng sa lilaebrari tse amohelang batho.

Tšireletseho ea memori e fanoa ka Rust ka nako ea ho bokella ka ho hlahloba litšupiso, ho boloka tlaleho ea botho ba ntho, ho boloka tlaleho ea bophelo ba ntho (scopes), le ho lekola ho nepahala ha phihlello ea mohopolo nakong ea ts'ebetso ea khoutu. Rust e boetse e fana ka ts'ireletso khahlano le phallo e felletseng, e hloka ho qalisoa ha boleng bo fapaneng pele e sebelisoa, e sebetsana le liphoso hamolemo laebraring e tloaelehileng, e sebelisa mohopolo oa litšupiso tse ke keng tsa fetoha le mefuta e fapaneng ka mokhoa o ikhethileng, e fana ka ho thaepa ho tiileng ho fokotsa liphoso tse utloahalang.

Litlhahiso tse ka sehloohong:

  • Tšehetso e ekelitsoeng bakeng sa mefuta e amanang le generic (GAT, Generic Associated Types), e etsang hore ho khonehe ho theha li-aliases tsa mofuta o amanang le mofuta o mong le ho u lumella ho amahanya lihahi tsa mofuta le litšobotsi. tšobotsi Foo {mofuta Bar <'x>; }
  • Polelo ea "tlohela ... e 'ngoe" e kentsoe tšebetsong, e u lumellang hore u lekole boemo bo tsamaellanang le mohlala ka har'a polelo ea "tlohela" le ho sebelisa khoutu e sa fetoheng haeba paterone e sa lumellane. let Ok(count) = u64::from_str(count_str) ho seng joalo { tšoha!("Ha e khone ho hlalosa palo e feletseng: '{count_str}'"); };
  • Lumella ts'ebeliso ea polelo ea khefu ho tsoa li-blocks pele ho nako, ho sebelisa lebitso la block (label) ho tsebahatsa block e lokelang ho felisoa. tlohela sephetho = 'thibela: {do_thing(); haeba condition_not_met() {break 'block 1; } etsa_next_thing(); haeba condition_not_met() {break 'block 2; } etsa_last_ntho(); 3 };
  • Bakeng sa Linux, bokhoni ba ho boloka tlhahisoleseling ka thoko (split-debuginfo), e neng e fumaneha feela bakeng sa sethala sa macOS, e kentsoe. Ha u hlakisa khetho ea "-Csplit-debuginfo=unpacked", debuginfo data ka fomete ea DWARF e tla bolokoa lifaeleng tse 'maloa tse arohaneng ka ".dwo" katoloso. Ho hlakisa "-Csplit-debuginfo=packed" ho tla etsa sephutheloana se le seng ka sebopeho sa ".dwp" se kenyeletsang lintlha tsohle tsa debuginfo bakeng sa morero. Ho kopanya debuginfo ka kotloloho karolong ea .debug_* ea lintho tsa ELF, u ka sebelisa khetho ea "-Csplit-debuginfo=off".
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
    • std::backtrace::Backtrace
    • E tlameletsoe:: joalo ka_ref
    • std::io::bala_ho_lekhoele
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Tšobotsi ea "const", e khethollang monyetla oa ho e sebelisa maemong afe kapa afe sebakeng sa li-constants, e sebelisoa mesebetsing ea <*const T&>::offset_from le <*mut T>::offset_from.
  • E le karolo ea mohato oa ho qetela oa ho fetisetsa ts'ebetsong ea LSP (Language Server Protocol) protocol ho rust-analyzer, ts'ebetsong ea khale ea Rust Language Server (RLS) e ile ea nkeloa sebaka ke "stub server" e fanang ka temoso e nang le tlhahiso ea ho fetohela ho. ho sebelisa rust-analyzer.
  • Nakong ea ho bokelloa, tšehetso ea ho romelloa ka har'a marang-rang ea khoutu ea bohareng ea MIR e ea lumelloa, e potlakisang ho bokelloa ha liphutheloana tse tloaelehileng tsa crate ka 3-10%.
  • Ho potlakisa meaho e reriloeng, molaoli oa sephutheloana sa Cargo o fana ka tlhophiso ea mesebetsi e emetseng ho etsoa moleng.

Ntle le moo, o ka ela hloko puisano mabapi le ts'ebeliso ea puo ea Rust ho Volvo ho nts'etsapele likarolo tsa sistimi ea tlhaiso-leseling ea likoloi. Ha ho na merero ea ho ngola khoutu e teng le e lekiloeng ho Rust, empa bakeng sa khoutu e ncha, Rust ke e 'ngoe ea likhetho tse ratoang bakeng sa ho ntlafatsa boleng ka litšenyehelo tse tlase. Lihlopha tse sebetsang tse amanang le tšebeliso ea puo ea Rust li boetse li thehiloe mekhatlong ea likoloi AUTOSAR (AUTomotive Open System Architecture) le SAE (Society of Automotive Engineers).

Ho phaella moo, David Kleidermacher, motlatsi oa mopresidente oa boenjiniere oa Google, o buile ka phetolelo ea khoutu e sebelisitsoeng sethaleng sa Android ho laola linotlolo tsa encryption ho Rust, hammoho le tšebeliso ea Rust ts'ebetsong ea DNS holim'a protocol ea HTTPS ka har'a stack. bakeng sa li-chips tsa UWB (Ultra-Wideband) le moralong oa virtualization (Android Virtualization Framework) e amanang le chip ea Tensor G2. Li-stack tse ncha tsa Bluetooth le Wi-Fi, tse ngotsoeng hape ho Rust, le tsona li ntse li ntlafatsoa bakeng sa Android. Leano le akaretsang ke ho matlafatsa ts'ireletso butle-butle, pele ka ho fetolela likarolo tsa software tse tlokotsing le tsa bohlokoa ho Rust, ebe li atoloha ho litsamaiso tse ling tse amanang le tsona. Selemong se fetileng, puo ea Rust e kenyelelitsoe lethathamong la lipuo tse lumelletsoeng ho nts'etsapele sethala sa Android.

Source: opennet.ru

Eketsa ka tlhaloso