Mwepụta asụsụ mmemme nchara 1.39

bipụtara mwepụta asụsụ mmemme sistemụ Nchara 1.39, nke Mozilla rụpụtara ya. Asụsụ a na-elekwasị anya na nchekwa ebe nchekwa, na-enye njikwa ebe nchekwa akpaka, ma na-enye ụzọ iji nweta ọrụ dị elu na-enweghị iji ihe mkpofu ma ọ bụ oge ịgba ọsọ.

Njikwa ebe nchekwa akpaghị aka nke Rust na-ahapụ onye nrụpụta na ntule ntụaka ma na-echebekwa pụọ ​​na nsogbu na-esite na ngbanwe ebe nchekwa dị ala, dị ka ịnweta ebe nchekwa anaghị akwụghị ụgwọ, ndebiri pointer null, buffer overruns, na ihe ndị ọzọ. A na-emepụta onye njikwa ngwugwu iji kesaa ọba akwụkwọ, hụ na mgbakọ na jikwaa ndabere site na ọrụ ahụ. ibu, na-enye gị ohere ịnweta ụlọ akwụkwọ ndị achọrọ maka mmemme ahụ n'otu pịa. A na-akwado ebe nchekwa iji kwado ọba akwụkwọ crates.io.

Main ihe ọhụrụ:

  • Kwụsie ike syntax mmemme asynchronous ọhụrụ dabere na ọrụ "async", async na-ebugharị {... } ngọngọ, na onye ọrụ ".await", nke na-eme ka ọ dị mfe ide ndị njikwa na-adịghị egbochi isi iwu. E jiri ya tụnyere API a na-enyebu maka I/O asynchronous, asynchronous asynchronous, asynchronous .wait constructs dị mfe nghọta, nke a na-agụ nke ọma, ma na-enye gị ohere imejuputa mmekọrịta dị mgbagwoju anya site na iji usoro njikwa ọsọ nke maara nke ọma dabere na loops, nkwupụta ọnọdụ, na ndị ọzọ.

    Async-echere syntax na-enye gị ohere ịmepụta ọrụ ndị nwere ike kwụsịtụ igbu ha, weghachite njikwa na eriri isi, wee maliteghachi igbu ya site na ebe ha kwụsịrị. Dịka ọmụmaatụ, achọrọ nkwụsịtụ dị otú ahụ mgbe ị na-edozi I/O, nke a ga-arụ ọrụ ndị ọzọ mgbe ị na-eche ka mpempe data ọzọ bịarute. Ọrụ na ngọngọ akọwara na "async fn" na "async move" na-eweghachi àgwà Future, nke na-akọwa ihe nnochite anya mgbakọ asynchronous ebigharịrị. Ị nwere ike ibido ngụkọ agbagoro ozugbo wee nweta nsonaazụ site na iji onye ọrụ ".echere". Ọ dịghị ihe a na-eme ma ọ bụ buru ụzọ mee atụmatụ ruo mgbe a ga-akpọ .echere, na-enye ohere ịmepụta ụlọ ndị dị mgbagwoju anya na-enweghị ihe ọ bụla ọzọ.

    async fn first_function () -> u32 {.. }
    ...
    ka ọdịnihu = first_function ();
    ...
    hapụ ya pụta: u32 = future.echere;

  • Kwụsie ike "#![feature(bind_by_move_pattern_guards)]", na-enye ohere iji mgbanwe na ụdị njide "site-ngalaba" na ndebiri wee jiri ntụaka maka mgbanwe ndị a na mpaghara "ọ bụrụ" nke okwu "egwuregwu". Dịka ọmụmaatụ, a na-anabata ihe owuwu ndị a:

    fn isi() {
    ka usoro: Igbe = Igbe: ọhụrụ ([8, 4, 1, 2]);

    n'usoro egwuregwu {
    Nọmba
    ọ bụrụ na ọnụọgụ.iter ().nchịkọta::() == 10

    => {
    dobe (ọnụọgụ);
    }
    _ => enweghị ike iru ya!(),
    }
    }

  • ekwere ihe ngosi àgwà mgbe a na-akọwa paramita ọrụ, mmechi, na ntụnye ọrụ. Àgwàkọ mkpokọta ọnọdụ (cfg, cfg_attr) na-ejikwa nchoputa site na lint (kwe ka, dọọ aka ná ntị, gọnarị na machibido) yana ihe enyemaka nnukwu ịkpọ oku na-akwado.

    len (
    #[cfg(windows)] iberi: &[u16], // jiri paramita na Windows
    #[cfg (ọ bụghị (windo))] iberi: &[u8], // jiri na OS ndị ọzọ
    ) -> jiri {
    slice.len()
    }

  • Ịdọ aka ná ntị gbasara nsogbu ndị achọpụtara mgbe a na-enyocha nbinye nke mgbanwe (onye na-agbaziri agbaziri) site na iji usoro NLL (Non-Lexical Lifetimes), sụgharịa banye n'ụdị njehie na-egbu egbu. Ka anyị cheta na usoro nkwenye dabere na usoro ọhụrụ maka iburu n'uche oge ndụ nke mgbanwe ndị agbaziri agbaziri mere ka o kwe omume ịchọpụta nsogbu ụfọdụ nke koodu nkwenye ochie ahụghị. Ebe ọ bụ na mmepụta njehie maka ụdị ndenye ego dị otú ahụ nwere ike imetụta ndakọrịta na koodu arụrụ mbụ, enyere ịdọ aka ná ntị na mbụ kama mmejọ. E jirila mperi dochie ịdọ aka ná ntị mgbe ọ na-agba ọsọ na ọnọdụ Rust 2018. Na ntọhapụ na-esote, a ga-arụkwa ọrụ mmepụta njehie na Rust 2015 mode, nke ga-emecha kpochapụ onye na-agbazinye ego ochie;
  • A na-eji àgwà "const", nke na-ekpebi ohere nke iji n'ọnọdụ ọ bụla kama ịnọchite anya, maka ọrụ Vec :: ọhụrụ, eriri :: ọhụrụ, LinkedList :: ọhụrụ, str :: len, [T] :: len , str :: as_bytes,
    abs, wrapping_abs na tojubiga ókè_abs;

  • Ebufeela akụkụ ọhụrụ nke API gaa na ngalaba kwụsiri ike, gụnyere ụzọ ndị edoziworo
    Pin :: n'ime_inner, Ngwa ngwa :: enyocha_duration_ kemgbe na ozugbo :: saturating_duration_ebe;

  • Onye njikwa ngwugwu ibu ugbu a nwere ikike iji ndọtị ".toml" maka faịlụ nhazi. agbakwunyere nkwado mbido maka iwulite ọba akwụkwọ ọkọlọtọ ozugbo site na Cargo. Agbakwunyere ọkọlọtọ "--workspace", dochie ọkọlọtọ "--niile" na-ese okwu. Agbakwunyela ubi ọhụrụ na metadata"bipụta", nke na-enye gị ohere ibipụta ndabere site na ịkọwa mkpado git na nọmba ụdị. Nhọrọ nnwale agbakwunyere "-Ztimings" iji wepụta akụkọ HTML nke oge ogbugbu nke usoro nchịkọta dị iche iche.
  • N'ime ihe nchịkọta rustc, ozi nyocha gụnyere ibelata ọdụ koodu na-adabaghị na ọdụ. Enyere ọkwa nke atọ nkwado maka nyiwe ebumnuche
    i686-amaghị-uefi na sparc64-amaghị-openbsd. Ọkwa nke atọ gụnyere nkwado bụ isi, mana enweghị nnwale akpaaka na mbipụta nke ụlọ ọrụ gọọmentị.

isi: opennet.ru

Tinye a comment