Hoʻokuʻu ʻia ʻo Rust 1.39

paʻi ʻia hoʻokuʻu ʻōlelo hoʻolālā ʻōnaehana Popo 1.39, i hoʻokumu ʻia e ka papahana Mozilla. Hoʻopili ka ʻōlelo i ka palekana hoʻomanaʻo, hāʻawi i ka hoʻokele hoʻomanaʻo ʻakomi, a hāʻawi i kahi ala e hoʻokō ai i ka parallelism hana kiʻekiʻe me ka hoʻohana ʻole ʻana i ka ʻōpala a i ʻole ka wā holo.

Hoʻokuʻu ka hoʻokele hoʻomanaʻo ʻakomi a Rust i ka mea hoʻomohala mai ka hoʻopololei ʻana i ka pointer a pale aku i nā pilikia e kū mai ana mai ka hoʻohana ʻana i ka hoʻomanaʻo haʻahaʻa haʻahaʻa, e like me ka loaʻa ʻana o ka hoʻomanaʻo ʻana ma hope o ka manuahi, ka hoʻihoʻi ʻole ʻana o ka pointer, ka hoʻonui ʻana i ka buffer, a me nā mea like. Ke kūkulu ʻia nei kahi luna pūʻolo e puʻunaue i nā hale waihona puke, e hōʻoia i ka hui ʻana a me ka mālama ʻana i nā hilinaʻi e ka papahana. waiwai, hiki iā ʻoe ke kiʻi i nā hale waihona puke e pono ai no ka papahana i hoʻokahi kaomi. Kākoʻo ʻia kahi waihona no ka mālama ʻana i nā hale waihona puke crates.io.

ka papa kuhikuhiE nā mea hou:

  • Hoʻopaʻa ʻia he syntax hoʻolālā asynchronous hou e pili ana i ka hana "async", ka async neʻe { ... } poloka, a me ka ".await" mea hoʻohana, i mea e maʻalahi ai ke kākau ʻana i nā mea lawelawe ʻaʻole e ālai i ke kahe kauoha nui. Hoʻohālikelike ʻia me ka API i hāʻawi mua ʻia no ka I/O asynchronous, maʻalahi nā kūkulu async/.await e hoʻomaopopo, hiki ke heluhelu ʻia, a hiki iā ʻoe ke hoʻokō i nā pilina asynchronous paʻakikī me ka hoʻohana ʻana i nā ʻenehana hoʻokele kahe maʻamau e pili ana i nā puka lou, nā ʻōlelo kūlana, a me nā ʻokoʻa.

    ʻO ka syntax Async-await hiki iā ʻoe ke hana i nā hana e hiki ke hoʻomaha i kā lākou hoʻokō ʻana, e hoʻihoʻi i ka mana i ka pae nui, a laila hoʻomaka hou i ka hoʻokō mai kahi i haʻalele ai. No ka laʻana, koi ʻia kahi hoʻomaha i ka wā e hoʻoponopono ai i ka I/O, kahi e hana ʻia ai nā hana ʻē aʻe i ke kali ʻana no ka hōʻea ʻana o ka ʻikepili aʻe. ʻO nā hana a me nā poloka i wehewehe ʻia me "async fn" a me "async move" e hoʻihoʻi i kahi ʻano wā e hiki mai, ka mea e wehewehe ana i ka hoʻohālikelike helu asynchronous i hoʻopanee ʻia. Hiki iā ʻoe ke hoʻomaka pololei i kahi helu hoʻopanee a loaʻa ka hopena me ka hoʻohana ʻana i ka mea hoʻohana ".await". ʻAʻohe hana i hana ʻia a i hoʻolālā mua ʻia a hiki i ke kāhea ʻia ʻana o .await, e ʻae ana i nā hana pūnana paʻakikī e hana ʻia me ka ʻole o ke poʻo.

    async fn first_function() -> u32 { .. }
    ...
    e hiki mai = first_function ();
    ...
    let result: u32 = future.await;

  • Hoʻopaʻa ʻia "#![feature(bind_by_move_pattern_guards)]", e ʻae ana i ka hoʻohana ʻana i nā ʻano like ʻole me ke ʻano paʻa "ka neʻe ʻana" i loko o nā templates a hoʻohana i nā kuhikuhi i kēia mau ʻano ma ka ʻāpana "inā" o ka huaʻōlelo "ń". No ka laʻana, ua ʻae ʻia nā kūkulu ʻana i kēia manawa:

    fn nui() {
    let array: pahu<[u8; 4]> = Pahu::hou([1, 2, 3, 4]);

    hui hoʻokūkū {
    helu
    ina nums.iter().sum::() == 10

    => {
    hāʻule(nums);
    }
    _ => hiki ʻole ke loaʻa!(),
    }
    }

  • ʻAe ʻia ka hōʻailona ʻano ʻano i ka wehewehe ʻana i nā ʻāpana hana, pani, a me nā kuhikuhi hana. Kākoʻo ʻia nā hiʻohiʻona hoʻohui kūlana (cfg, cfg_attr) e hoʻomalu i nā diagnostics ma o ka lint (ʻae, ʻae, hōʻole a pāpā) a me nā ʻano kelepona macro kōkua.

    fn len(
    #[cfg(windows)] slice: &[u16], // hoʻohana i ka ʻāpana ma Windows
    #[cfg(not(windows))] slice: &[u8], // hoʻohana ma OS ʻē aʻe
    ) -> hoʻohana {
    slice.len()
    }

  • ʻO nā ʻōlelo aʻo e pili ana i nā pilikia i ʻike ʻia i ka wā e nānā ai i ka hōʻaiʻē ʻana i nā mea hoʻololi (borrow checker) me ka hoʻohana ʻana i ka ʻenehana NLL (Non-Lexical Lifetimes), unuhi ʻia i loko o ka māhele o nā hewa make. E hoʻomanaʻo kākou ʻo ka ʻōnaehana hōʻoia e pili ana i kahi mīkini hou no ka noʻonoʻo ʻana i ke ola o nā mea ʻaiʻē i hiki ke ʻike i kekahi mau pilikia i ʻike ʻole ʻia e ka code hōʻoia kahiko. No ka mea hiki ke hoʻololi i ka hoʻopuka hewa no ia mau loiloi i ka hoʻohālikelike ʻana me nā code hana mua, ua hoʻopuka mua ʻia nā ʻōlelo aʻo ma mua o nā hewa. Ua hoʻololi ʻia nā ʻōlelo aʻo me nā hewa i ka wā e holo ana i ke ʻano Rust 2018. Ma ka hoʻokuʻu hou aʻe, e hoʻokō ʻia ka hoʻopuka hewa ma ke ʻano Rust 2015, ka mea e hoʻopau hope loa i ka mea loiloi hōʻaiʻē kahiko;
  • Hoʻohana ʻia ka ʻano "const", ka mea e hoʻoholo ai i ka hiki ke hoʻohana i kekahi pōʻaiapili ma kahi o nā mea mau, hoʻohana ʻia no nā hana Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
    abs, wrapping_abs a overflowing_abs;

  • Ua hoʻoili ʻia kahi ʻāpana hou o nā API i ka ʻāpana paʻa, me nā ʻano hana i hoʻopaʻa ʻia
    Pin::i_inner, Instant::checked_duration_since and Instant::saturating_duration_since;

  • I kēia manawa, hiki i ka luna ukana ukana ke hoʻohana i ka hoʻonui ".toml" no nā faila hoʻonohonoho. Hoʻohui i ke kākoʻo mua no ke kūkulu ʻana i ka waihona maʻamau mai Cargo. Hoʻohui i ka hae "--workspace", pani i ka hae "--all" hoʻopaʻapaʻa. Ua hoʻohui ʻia kahi kahua hou i ka metadata "hoolaha aku", ka mea e hiki ai iā ʻoe ke hoʻolaha i nā hilinaʻi ma ke kuhikuhi ʻana i kahi git tag a me ka helu helu. Hoʻohui i kahi koho hoʻāʻo "-Ztimings" e hoʻopuka i kahi hōʻike HTML o nā manawa hoʻokō o nā pae hoʻohui like ʻole.
  • Ma ka rustc compiler, ʻo nā memo diagnostic e ʻoki i nā huelo o ke code i kūpono ʻole i ka pahu. Hāʻawi ʻia i ke kolu o ke kākoʻo ʻana no nā paepae i manaʻo ʻia
    i686-unknown-uefi a me sparc64-unknown-openbsd. ʻO ke kolu o ka pae e pili ana i ke kākoʻo maʻamau, akā me ka ʻole o ka hoʻāʻo ʻana a me ka hoʻolaha ʻana i nā hale kūhelu.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka