Puo ea Rust programming 1.61 tokollo

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

  • Hoa khoneha ho hlalosa mekhoa ea hau ea ho khutlisa ho tsoa mosebetsing o ka sehloohong. Qalong, mosebetsi oa mantlha oa Rust o ne o ka khutlisa feela mofuta oa "()" (unit), o neng o lula o bonts'a boemo bo atlehileng ba ho tsoa ntle le haeba moqapi a bitsitse ka ho hlaka mosebetsi oa "process::exit(code)". Ho Rust 1.26, ho sebelisa mokhoa o sa tsitsang oa Pheliso mosebetsing oa mantlha, ho ile ha khonahala ho khutlisa boleng "Ok" le "Err", tse tsamaellanang le likhoutu tsa EXIT_SUCCESS le EXIT_FAILURE mananeong a C. Ho Rust 1.61, tšobotsi ea Pheliso e entsoe e tsitsitse, 'me ho entsoe tlhahiso ea mofuta o fapaneng oa ExitCode ho emela khoutu e itseng ea ho khutlisa, e fokotsang mefuta e ikhethileng ea sethala ka ho fana ka li-constants tse boletsoeng esale pele SUCCESS le FAILURE, le From mokhoa. ho khutlisa khoutu ea ho khutlisa ea tloaelo. sebelisa std::process::ExitCode; fn main() -> ExitCode {haeba !check_foo() {khutlisa ExitCode::ho tloha(8); } ExitCoutu:: SUCCESS }
  • Bokhoni ba tlatsetso ea mesebetsi e hlalosoang ho sebelisoa poleloana "const fn" e tsitsitsoe, e ka bitsoang eseng feela e le mesebetsi e tloaelehileng, empa hape e sebelisoa maemong afe kapa afe ho fapana le li-constants. Mesebetsi ena e baloa ka nako ea ho bokella, eseng ka nako ea ho sebetsa, kahoo e tlas'a lithibelo tse itseng, tse kang bokhoni ba ho bala feela ho tloha ho li-constants. Phetolelong e ncha, ts'ebetso ea mantlha e nang le lits'ebetso tsa ts'ebetso e lumelletsoe ka hare ho mesebetsi ea const (ho theha, ho fetisa le ho lahla lintlha ho lumelloa, empa eseng ho bitsa ts'ebetso ka pointer); meeli ea litšobotsi bakeng sa liparamente tse akaretsang tsa mesebetsi ea const joalo ka T: Copy; litšobotsi tse ka tsamaisoang ka matla (dyn Trait); impl Trait mefuta bakeng sa mabaka a tshebetso le boleng ba ho khutlisa.
  • Molapo o sebetsana le Stdin, Stdout le Stderr ho std::io joale li na le nako ea bophelo e sa fetoheng ("'static") ha e notletsoe, e lumellang meaho e kang "let out = std::io::stdout().lock();" ka ho fumana mofeng le ho seta loko ka puo e le nngwe.
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Ngola bakeng sa Cursor<[u8; N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::ts'ebetso::Ho felisoa
    • std::thread::JoinHandle::is_finished
  • Sebopeho sa "consst", se khethollang monyetla oa ho se sebelisa maemong afe kapa afe ho fapana le li-constants, se sebelisoa mesebetsing:
    • <*const T>::offset le <*mut T>::offset
    • <*const T>::wrapping_offset le <*mut T>::wrapping_offset
    • <*const T>::eketsa le <*mut T>::eketsa
    • <*const T>::sub le <*mut T>::sub
    • <*const T>::wrapping_add le <*mut T>::wrapping_add
    • <*const T>::wrapping_sub le <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Ho phaella moo, o ka hlokomela sehlooho se reng "Rust: A Critical Retrospective" ka kakaretso ea maikutlo a puo ea Rust ka mor'a ho ngola mela e likete tse 100 tsa khoutu ho eona nakong ea nts'etsopele ea tsamaiso ea Xous microkernel e sebelisoang ho firmware. Mefokolo e kenyeletsa syntax eo ho leng thata ho e utloisisa, ho se phethehe le nts'etsopele e tsoelang pele ea puo, khaello ea meaho e ka phetoang, mathata a tloaelehileng a ts'epo ea ho itšetleha ka Crates.io, le tlhoko ea ho boloka taolo e itseng ea ho ngola khoutu e sireletsehileng. Likarolo tse fetisitseng litebello li kenyelletsa lisebelisoa tsa ho etsa khoutu e ncha le "hacks" e nchafalitsoeng e kentsoeng nakong ea prototyping e potlakileng.

Source: opennet.ru

Eketsa ka tlhaloso