Puo ea Rust programming 1.64 tokollo

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

  • Litlhoko tsa tikoloho ea Linux ka har'a komporo, molaoli oa sephutheloana sa Cargo le laeborari e tloaelehileng ea libstd li ekelitsoe - litlhoko tse tlase tsa Glibc li phahamisitsoe ho tloha ho mofuta oa 2.11 ho isa ho 2.17, le Linux kernel ho tloha ho mofuta oa 2.6.32 ho isa ho 3.2. Lithibelo li boetse li sebetsa ho li-executable tsa kopo ea Rust tse hahiloeng ka libstd. Lisebelisoa tsa kabo ea RHEL 7, SLES 12-SP5, Debian 8 le Ubuntu 14.04 li fihlela litlhoko tse ncha. Tšehetso ea RHEL 6, SLES 11-SP4, Debian 7 le Ubuntu 12.04 e tla emisoa. Basebelisi ba sebelisang li-executable tse hahiloeng ke Rust libakeng tse nang le kernel ea khale ea Linux ba khothaletsoa ho ntlafatsa lits'ebetso tsa bona, ho lula liphatlalatsong tsa khale tsa komporo, kapa ho boloka fereko ea bona ea libstd e nang le likarolo ho boloka tumellano.

    Har'a mabaka a ho felisa tšehetso bakeng sa litsamaiso tsa khale tsa Linux ke lisebelisoa tse fokolang tsa ho tsoelapele ho boloka ho lumellana le libaka tsa khale. Tšehetso bakeng sa Glibc ea lefa e hloka hore ho sebelisoe lisebelisoa tsa lefa ha ho hlahlojoa tsamaiso e tsoelang pele ea ho kopanya, ho sa tsotellehe litlhoko tse ntseng li eketseha tsa phetolelo ho LLVM le lisebelisoa tsa ho kopanya. Keketseho ea litlhoko tsa mofuta oa kernel e bakoa ke bokhoni ba ho sebelisa li-call tsa sistimi e ncha ho libstd ntle le tlhoko ea ho boloka li-layers ho netefatsa ho lumellana le lithollo tsa khale.

  • The IntoFuture trait e tsitsitsoe, e ts'oana le IntoIterator, empa e fapane le ea morao-rao ka ho sebelisa ".await" ho fapana le "bakeng sa ... ka ..." loops. Ha e kopantsoe le IntoFuture, ".await" lentsoe la sehlooho le ka lebella eseng feela tšobotsi ea Bokamoso, empa le mefuta e meng e ka fetoloang ho Bokamoso.
  • Sesebelisoa sa "rust-analyzer" se kenyellelitsoe pokellong ea lisebelisoa tse fanoeng ka litokollo tsa Rust. Sesebelisoa se fumaneha hape bakeng sa ho kenya ho sebelisa rustup (rustup component add rust-analyzer).
  • Motsamaisi oa sephutheloana sa Cargo o kenyelletsa lefa la sebaka sa mosebetsi ho felisa phetisetso ea boleng bo tloaelehileng lipakeng tsa liphutheloana, joalo ka mefuta ea Rust le li-URL tsa polokelo. E boetse e kenyellelitsoe ts'ehetso ea ho aha liforomo tse 'maloa tse shebiloeng ka nako e le ngoe (hona joale u ka hlakisa paramente e fetang e le' ngoe ho khetho ea "--target").
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
    • bokamoso::IntoFuture
    • palo::NonZero*::checked_mul
    • palo::NonZero*::checked_pow
    • palo::NonZero*::saturating_mul
    • palo::NonZero*::saturating_pow
    • nomoro::NonZeroI*::abs
    • palo::NonZeroI*::checked_abs
    • palo::NonZeroI*::ho khaphatseha_abs
    • palo::NonZeroI*::saturating_abs
    • nomoro::NonZeroI*::unsigned_abs
    • nomoro::NonZeroI*:: wrapping_abs
    • nomoro::NonZeroU*::checked_eketsa
    • palo::NonZeroU*::checked_next_power_of_tpedi
    • palo::NonZeroU*::saturating_eketsa
    • os::unix::process::CommandExt::process_group
    • os::fensetere::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Mefuta e lumellanang le C, e neng e tsitsitse pele ho mojule oa std::ffi, e kenyellelitsoe ho mantlha le laeborari ea alloc:
    • mantlha::ffi::Cstr
    • mantlha::ffi::FromBytesWithNulError
    • alloc::ffi::CSstring
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • Mefuta ea C e neng e tsitsitse pele ho std::os::module e tala e kentsoe ho mantlha::ffi le std::ffi modules (mohlala, mefuta ea c_uint le c_ulong e hlahisitsoe bakeng sa mefuta ea uint le ulong C):
    • ffi::c_char
    • ffi::c_habeli
    • ffi::c_float
    • ffi::c_int
    • ffi::c_bolelele
    • ffi::c_nako e telele
    • ffi::c_schar
    • ffi::c_khuts'oane
    • ffi::c_char
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Batšoantšisi ba maemo a tlase ba tsitsitse hore ba sebelisoe le Mochini oa Poll (nakong e tlang ho reriloe ho fana ka API e nolofalitsoeng e sa hlokeng tšebeliso ea meaho ea boemo bo tlase joalo ka Pull and Pin):

    • bokamoso::poll_fn
    • mosebetsi:: lokile!
  • Sebopeho sa "const", se khethollang monyetla oa ho se sebelisa moelelong ofe kapa ofe ho e-na le li-constants, se sebelisoa selae::ho tloha_raw_parts mosebetsi.
  • E le ho boloka data ka mokhoa o kopanetsoeng haholoanyane, moralo oa mohopolo oa Ipv4Addr, Ipv6Addr, SocketAddrV4 le SocketAddrV6 o fetotsoe. Ho ka 'na ha e-ba le bothata ba ho lumellana le liphutheloana tse le 'ngoe tsa crate tse sebelisang std::mem::transmute bakeng sa ho qhekella ha maemo a tlaase a mehaho.
  • Mohaho oa moqapi oa mafome bakeng sa sethala sa Windows o sebelisa lintlafatso tsa PGO (ho ntlafatsa ka tataiso ea boemo), e leng se entseng hore ho khonehe ho eketsa ts'ebetso ea ho bokella khoutu ka 10-20%.
  • Moqapi o sebelisitse temoso e ncha mabapi le masimo a sa sebelisoang meahong e itseng.

Ho feta moo, o ka ela hloko tlaleho ea boemo mabapi le nts'etsopele ea ts'ebetsong e 'ngoe ea moqapi oa puo ea Rust, e lokiselitsoeng ke projeke ea gccrs (GCC Rust) mme e amohetsoe hore e kenyeletsoe ho GCC. Ka mor'a ho kopanya karolo e ka pele, lisebelisoa tse tloaelehileng tsa GCC li ka sebelisoa ho bokella mananeo ka puo ea Rust ntle le tlhokahalo ea ho kenya rustc compiler, e hahiloeng ho sebelisoa LLVM nts'etsopele. Ha feela nts'etsopele e ntse e tsoela pele, 'me e thibela mathata leha e le afe a sa lebelloang, Rust frontend e tla kopanngoa le tokollo ea GCC 13 e reriloeng ka May selemong se tlang. Ts'ebetsong ea GCC 13 ea Rust e tla ba boemong ba beta, e e-s'o ka e etsoa ka ho sa feleng.

Source: opennet.ru

Eketsa ka tlhaloso