Puo ea Rust programming 1.73 tokollo

Ho lokolloa ha puo ea lenaneo la Rust 1.73 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:

  • Sebopeho sa melaetsa se fanoeng ke sesebelisoa sa ho senyeha ha lenaneo (panic) se hlophisitsoe bocha. Mongolo o boletsoeng ho "panic!" macro e se e bontšoa moleng o arohaneng ntle le matšoao a qotso, ho etsa hore molaetsa o balehe habonolo le ho felisa pherekano ha mantsoe a qotsitsoeng sehlaheng a le teng kapa a aroloa meleng e mengata. fn main() {tlohela faele = "ferris.txt"; ho tšoha!("oh no! {file:?} ha e fumanehe!"); } Ho bile le khoele 'main' e ileng ea tšoha 'oh no! "ferris.txt" ha e so fumanehe!', src/main.rs:3:5 Khoele 'main' e tšohile ho src/main.rs:3:5: oh no! "ferris.txt" ha e so fumanehe!

    Tlhahiso ea melaetsa e bonts'itsoeng ha "assert_eq" le "assert_ne" macros e hlahisoa le eona e entsoe bocha. fn main() {assert_eq!("🦀", "🐟", "ferris ha se tlhapi"); } Ho bile le khoele 'main' e ileng ea tšoha ha 'assertion failed: `(left == right)` left: `"🦀"`, ka ho le letona: `"🐟"`: ferris ha se tlhapi', src/main.rs: 2 :5 Khoele 'main' e tšohile ho src/main.rs:2:5: polelo `left == right` hlolehile: ferris ha se tlhapi e setseng: “🦀” ka ho le letona: “🐟”

  • Ho latela RFC 3184, bokhoni ba ho qhekella ka kotloloho likonopo tsa polokelo ea LocalKey li kentsoe. > le LocalKey > ka ts'ebeliso ea mekhoa ea get(), set(), take() and replace() , ho fapana le ho sebelisa "with(|inner| ...)" ho koala, e felisang tlhoko ea ho etsa khoutu e eketsehileng ea ho qala bakeng sa boleng ba kamehla bo boletsoeng bakeng sa likhoele tse ncha ha u sebelisa macro "thread_local!" khoele_ea lehae! {LITABA tse tsitsitseng: Seleng > = Cell::ncha(Vec::ncha()); } fn f() {// e ne e le THINGS.with(|i| i.set(vec![32, 1, 2])); // fetohile THINGS.set(vec![3, 1, 2]); // ... // e ne e tlohetswe v = THINGS.with(|i| i.take()); // fetohile let v: Vec = LINTHO.nka(); }
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
    • E sa saena {integer}::div_ceil
    • E sa saena {integer}::next_multiple_of
    • E sa saena {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • LocalKey:: >:: fumana
    • LocalKey:: >:: seta
    • LocalKey:: >:: nka
    • LocalKey:: >:: nka sebaka
    • LocalKey:: >::ka_kadima
    • LocalKey:: >::ka_borrow_mut
    • LocalKey:: >:: seta
    • LocalKey:: >:: nka
    • LocalKey:: >:: nka sebaka
  • Sebopeho sa "consst", se khethollang monyetla oa ho se sebelisa maemong afe kapa afe ho fapana le li-constants, se sebelisoa mesebetsing:
    • rc::E fokola::e ncha
    • sync::E fokola::e ncha
    • NonNnull::as_ref
  • Moqapi o fana ka tlaleho ea tlhahisoleseding ea phetolelo karolong ea ".comment", e tšoanang le GCC le Clang.
  • Boemo ba boraro ba ts'ehetso bo kentsoe ts'ebetsong bakeng sa li-platform tsa aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl le x86_64-linux e sa tsejoeng. - oho. Boemo ba boraro bo kenyelletsa ts'ehetso ea mantlha, empa ntle le tlhahlobo ea boiketsetso, meaho ea semmuso ea phatlalatso, kapa ho hlahloba hore na khoutu e ka hahuoa.
  • Boemo ba bobeli ba ts'ehetso bakeng sa sethala sa sepheo sa wasm32-wasi-preview1-threads se kentsoe tšebetsong. Boemo ba bobeli ba tšehetso bo kenyelletsa tiiso ea kopano.

Source: opennet.ru

Eketsa ka tlhaloso