Puo ea Rust programming 1.66 tokollo

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

  • Lipalong tse nang le liemeli tse felletseng ("#[repr(Int)]"), pontšo e hlakileng ea khethollo (nomoro e fapaneng palong) e lumelletsoe, le haeba palo e na le likarolo. #[repr(u8)] enum Foo {A(u8), # kgethollo 0 B(i8), # kgethollo 1 C(bool) = 42, # kgethollo 42 }
  • E kenyellelitsoe tšebetsong core::hint::black_box e khutlisetsang boleng bo amogetsoeng feela. Kaha moqapi o nahana hore mosebetsi ona o etsa ntho e itseng, mosebetsi oa black_box o ka sebelisoa ho thibela ntlafatso ea compiler bakeng sa loops ha ho etsoa tlhahlobo ea ts'ebetso ea khoutu kapa ha ho hlahlojoa khoutu ea mochine e hlahisitsoeng (e le hore moqapi a se ke a nahana ka khoutu e sa sebelisoang le ho e tlosa). Ka mohlala, mohlaleng o ka tlase, black_box(v.as_ptr()) e thibela moqapi ho nahana hore vector v ha e sebelisoe. sebelisa std::hint::black_box; fn push_cap(v: &mut Vec) {bakeng sa i in 0..4 {v.push(i); black_box(v.as_ptr()); }}
  • Mookameli oa sephutheloana sa "cargo" o fana ka taelo ea "tlosa", e u lumellang ho tlosa litšepiso ho Cargo.toml manifest ho tloha molaong oa taelo.
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
    • proc_macro::Span::motho_mongolo
    • u*::{checked_add_signed, over_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{chekiloe_eketsa_e sa saenoang, ho tlokoma_eketsa_e sa saenoang, e tlatsa_eketsa_e sa saenoang, wrapping_add_unsigned}
    • i*::{checked_sub_un saened, overflowing_sub_unsigned, saturating_sub_un saened, wrapping_sub_unsigned}
    • BTreeSet::{pele, ho qetela, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_kenyo, last_entry, pop_first, pop_last}
    • Kenya ts'ebetsong ea AsFd bakeng sa mefuta ea stdio lock ha u sebelisa WASI.
    • impl TryFrom > bakeng sa Lebokose <[T; N]>
    • mantlha::hint::black_box
    • Nako::try_from_secs_{f32,f64}
    • Khetho::unzip
    • std::os::fd
  • Mekhahlelo "..X" le "..=X" li lumelletsoe ho litempele.
  • Ha ho hahoa karolo e ka pele ea rustc compiler le backend LLVM, LTO (Link Time Optimization) le BOLT (Binary Optimization and Layout Tool) mekhoa ea ho ntlafatsa e sebelisoa ho eketsa ts'ebetso ea khoutu e hlahisoang le ho fokotsa tšebeliso ea mohopolo.
  • E kentsoe ts'ehetso ea boemo ba 5 bakeng sa sethala sa armv5te-none-eabi le thumbvXNUMXte-none-eabi. Boemo ba boraro bo fana ka maikutlo a ts'ehetso ea motheo, empa ntle le tlhahlobo e ikemetseng, ofisiri ea khatiso e haha ​​​​le ho hlahloba bokhoni ba ho haha ​​​​khoutu.
  • Ts'ehetso e ekelitsoeng ea ho hokahanya le li-libraries tsa macOS Generic.

Ho phaella moo, re ka hlokomela ho kenyelletsoa ho codebase ea GCC ea moqapi oa pele oa puo ea Rust (gccrs). Sebaka se ka pele se kenyelelitsoe lekaleng la GCC 13, le tla lokolloa ka May 2023. Ho qala ka GCC 13, sesebelisoa se tloaelehileng sa GCC se tla khona ho sebelisoa ho bokella mananeo a Rust ntle le tlhokahalo ea ho kenya rustc compiler e hahiloeng ho sebelisoa LLVM nts'etsopele. Ts'ebetsong ea Rust ho GCC 13 e tla ba boemong ba beta, e sa khonehe ka ho sa feleng.

Source: opennet.ru

Eketsa ka tlhaloso