Puo ea Rust programming 1.34 tokollo

etsahetse tokollo ea puo ea lenaneo la sistimi Mafome 1.34, e entsoeng ke morero oa Mozilla. 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. Motsamaisi oa liphutheloana o ntse a ntlafatsoa ho aba lilaebrari, ho netefatsa ho bokelloa le ho laola litšepe ka morero. thepa, ho u lumella ho fumana lilaebrari tse hlokahalang bakeng sa lenaneo ka ho tobetsa hanngoe feela. Sebaka sa polokelo se tšehetsoa ho amohela lilaebrari crates.io.

ka sehloohong boiqapelo:

  • 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 liregiste tsa kantle ho .cargo/config (e fumaneha ho $HOME kapa bukeng ea sephutheloana)
    faneng ka karolo "[registries]", le ho sebelisa ngoliso ea kantle, khetho ea "registry" e hlahile tlhalosong ea ho itšetleha ka mong ho Cargo.toml. 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. litekong baruti, e u lumellang hore u sebelise khoutu ea mohlala ho tsoa litokomaneng e le 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]";

  • Ka litšoaneleho tsa tloaelo tse hlalositsoeng ho sebelisoa li-macros tsa procedural faneng ka bokhoni ba ho sebelisa li-tokens tse sa reroang (“#[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)]”;
  • Mefuta e tsitsitseng (mohlala) TryFrom и TryInto, e lumellang 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 mofuteng oa u8 ho ea ho u32), mofuta oa phoso o kentsoe E sa senyeheng, e lumellang tšebeliso e pepeneneng
    TryFrom bakeng sa lits'ebetso tsohle tse teng tsa "From";

  • Mosebetsi ha o sebetse CommandExt::before_exec, e neng e lumella motho ea sebetsang hore a bolaoe pele a etsa exec, 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.
    Ho khothalletsoa ho sebelisa ts'ebetso e sa bolokehang ho fapana le before_exec CommandExt::pre_exec.

  • Mefuta e tsitsitseng e saennoeng le e sa ngolisoang ea athomo ho tloha ho li-bits tse 8 ho isa ho tse 64 (mohlala, AtomicU8), hammoho le mefuta e saennoeng NonZeroI[8|16|32|64|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 ekelitse bokhoni ba ho etsa hore lintlafatso li be boemong ba ho hokahanya ka ho hlakisa khetho ea "-C linker-plugin-lto".

Source: opennet.ru

Eketsa ka tlhaloso