Puo ea Rust programming 1.34 tokollo

Puo ea lenaneo la sistimi Rust 1.34, e ntlafalitsoeng ke morero oa Mozilla, e lokollotsoe. Puo e shebana le polokeho ea mohopolo, e fana ka taolo ea memori ea othomathike, mme e fana ka mokhoa oa ho fihlela ts'ebetso e ts'oanang e phahameng ntle le ho sebelisa moqosi oa lithōle kapa nako ea ho sebetsa.

Taolo ea memori ea othomathike ea Rust e lokolla moqapi ho tsoa manolong a pointer le ho sireletsa khahlano le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka phihlello ea memori e sa lefelloeng, litšupiso tsa null pointer, buffer overruns, joalo-joalo. Ho aba lilaebrari, ho etsa bonnete ba ho bokella le ho laola lintho tse itšetlehileng ka tsona, morero o ntse o hlahisa mookameli oa thepa ea Cargo, e leng se u lumellang hore u fumane lilaebrari tse hlokahalang bakeng sa lenaneo ka nako e le 'ngoe. Sebaka sa polokelo ea crates.io se tšehetsoa bakeng sa lilaebrari tse amohelang batho.

Litlhahiso tse ka sehloohong:

  • Motsamaisi oa sephutheloana sa Cargo o kentse lisebelisoa tsa ho sebetsa le lirejistri tse ling tsa liphutheloana tse ka bang teng le crates.io ngoliso ea sechaba. Mohlala, baetsi ba lits'ebetso tsa thepa joale ba ka sebelisa registry ea bona ea poraefete, e ka sebelisoang ha ba thathamisa lintho tse itšetlehileng ka Cargo.toml, 'me ba sebelise mofuta oa phetolelo o ts'oanang le crates.io bakeng sa lihlahisoa tsa bona, hammoho le ho lebisa ho its'etleha ho likreiti ka bobeli. io le ho registry ea hau.

    Ho kenya ngoliso ea kantle ho ~/.cargo/config
    khetho e ncha ea "my-registry" e fanoe karolong ea "[registries]", 'me ho ekelitsoe khetho ea "crate e' ngoe" ho bua ka registry ea kantle ho itšetlehile ka Cargo.toml karolong ea "[dependencies]". Ho hokela ho ngoliso ea tlatsetso, beha feela lets'oao la netefatso ho ~/.cargo/credentials faele ebe o tsamaisa taelo.
    "cargo login --registry=my-registry" le ho phatlalatsa sephutheloana -
    "cargo publish -registry=my-registry";

  • E kentse tšehetso e felletseng ea ho sebelisa "?" opareitara. ka li-doctests, tse u lumellang ho sebelisa mohlala oa khoutu ho tsoa litokomaneng joalo ka liteko. Moetsi oa pele
    "?" e ka sebelisoa ho sebetsana le liphoso nakong ea tlhahlobo feela ka lebaka la mosebetsi oa "fn main()" kapa mesebetsing ea "#[test]";

  • Litšobotsing tsa tloaelo tse hlalosoang ho sebelisoa li-macros tsa procedural, hoa khoneha ho sebelisa li-tokens tse sa fetoheng ("#[attr($tokens)]", "#[attr[$tokens]] le #[attr{$tokens}]") . Pele, lielemente li ne li ka hlalosoa feela ka sefate/mofuta o iphetang ka ho sebelisa likhoele tsa mantsoe, mohlala “#[foo(bar, baz(quux, foo = “bar”))]”, empa joale hoa khoneha ho sebelisa lipalo (' #[range(0. .10)]') le meaho e kang “#[tlama(T: MyTrait)]”;
  • Litšobotsi tsa TryFrom le TryInto li tsitsitse, ho lumella liphetoho tsa mofuta o nang le ho sebetsana le liphoso. Mohlala, mekhoa e kang ho tloha_be_bytes e nang le mefuta e felletseng e sebelisa li-arrays joalo ka ho kenya, empa data hangata e tla ka mofuta oa Selae, 'me ho fetola lipakeng tsa lihlopha le lilae ho thata ho li etsa ka letsoho. Ka thuso ea litšobotsi tse ncha, ts'ebetso e boletsoeng e ka etsoa hang-hang ka mohala ho .try_into(), mohlala, "let num = u32::from_be_bytes(slice.try_into()?)". Bakeng sa liphetoho tse lulang li atleha (mohlala, ho tloha ho mofuta oa u8 ho isa ho u32), ho kentsoe mofuta oa phoso o sa foseng ho lumella tšebeliso e pepeneneng ea
    TryFrom bakeng sa lits'ebetso tsohle tse teng tsa "From";

  • E tlositse taelo ea CommandExt ::before_exec, e neng e lumella ho bolaoa ha motho ea sebetsang pele ho ts'ebetso e ileng ea etsoa molemong oa ts'ebetso ea ngoana e ferekantsoeng ka mor'a fork() call. Tlas'a maemo a joalo, lisebelisoa tse ling tsa ts'ebetso ea motsoali, joalo ka litlhaloso tsa lifaele le libaka tsa memori tsa 'mapa, li ka kopitsoa, ​​​​e leng se ka lebisang boitšoarong bo sa hlalosoang le ts'ebetso e fosahetseng ea lilaebrari.
    Sebakeng sa pele_exec, ho khothalletsoa ho sebelisa mosebetsi o sa bolokehang CommandExt::pre_exec.

  • Mefuta e tsitsitseng e saennweng le e sa saenwang ya palo e felletseng ya athomo ho tloha ka boholo ho tloha ho 8 ho isa ho 64 bits (mohlala, AtomicU8), hammoho le mefuta e saennweng ya NonZeroI[8|16|32|54|128].
  • Karolo e ncha ea API e isitsoe sehlopheng se tsitsitseng, ho kenyeletsoa Any::type_id, Error::type_id, slice::rort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] le mekhoa ea SystemTime e tsitsitsoe ::checked_[eketsa|sub]. Mesebetsi ea iter::from_fn le iter::bahlahlami e tsitsitsoe;
  • Bakeng sa mefuta eohle ea kakaretso, mekhoa ea checked_pow, saturating_pow, wrapping_pow le overflowing_pow e sebelisoa;
  • E kenyellelitse bokhoni ba ho nolofalletsa lintlafatso sethaleng sa ho hokahanya ka ho hlakisa khetho ea "-C linker-plugin-lto" (rustc e kopanya Rust code ho LLVM bitcode, e lumellang hore LTO e sebelisoe).

Source: opennet.ru

Eketsa ka tlhaloso