Hoʻokuʻu ʻia ʻo Rust 1.40

paʻi ʻia hoʻokuʻu ʻōlelo hoʻolālā ʻōnaehana Popo 1.40, 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 maʻalahi, a hāʻawi i nā mea paahana no ka loaʻa ʻana o ka parallelism hana kiʻekiʻe me ka hoʻohana ʻole ʻana i ka ʻohi ʻōpala a Runtime.

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ʻohui i ka hiki ke hōʻailona i nā hale (struct) a me nā helu (enum me Variant block) me ka hoʻohana ʻana i ke ʻano "#[ʻaʻole_pau]", ʻo ia Ua apono i ka wā e hiki mai ana, e hoʻohui i nā māla hou a me nā koho i nā hale i haʻi ʻia a me nā helu. No ka laʻana, hiki i nā mea hoʻomohala o nā modula i loaʻa nā hale me nā kahua i hoʻolaha ʻia e ka lehulehu ke hoʻohana i ka "#[non_exhaustive]" e hōʻailona i nā hale i hoʻohui ʻia paha nā māla hou i ka wā e hiki mai ana. A hiki i kēia manawa, i kēia kūlana, ua koi ʻia ka mea hoʻomohala e koho ma waena o ka haʻi pilikino ʻana i nā māla a me ka hoʻopaʻa ʻana i kahi papa inoa o nā māla. Hoʻopau ke ʻano hou i kēia palena a hiki iā ʻoe ke hoʻohui i nā kahua hou i ka wā e hiki mai ana me ka ʻole o ka haki ʻana i nā code waho i hōʻuluʻulu mua ʻia. I loko o nā pahu pahu, i ka wā e hoʻohālikelike ai i nā koho ma ka ʻāpana "match", pono kahi wehewehe kikoʻī o ka mask "_ => {...}", e uhi ana i nā mahina e hiki mai ana, inā ʻaʻole e hōʻike ʻia kahi hewa ke hoʻohui i nā kahua hou.
  • Hoʻohui ʻia ka hiki ke kapa i ka macro mac!() i loko o kahi ʻano pōʻaiapili. No ka laʻana, hiki iā ʻoe ke kākau i "type Foo = expand_to_type!(bar);" inā ʻo "expand_to_type" kahi macro kaʻina hana.
  • Ma nā poloka "waho { ... }". hoʻohui ʻia ka hiki ke hoʻohana i nā macros kaʻina hana a me nā hiʻohiʻona, me nā macros "bang!()", no ka laʻana:

    macro_rules! make_item { ($name:ident) => { fn $inoa(); } }

    waho {
    make_item!(alpha);
    make_item!(beta);
    }

    waho "C" {
    #[my_identity_macro] fn foo();
    }

  • I loko o nā macros hoʻokō ʻia hiki ke hana i nā mea "macro_rules!". E hana ana i "macro_rules!" hiki i nā macros like-like ("mac!()") a me nā macros ma ke ʻano o nā ʻano ("#[mac]").
  • Ma ka mea $m:meta palapala hoʻohui ʻia kākoʻo no nā waiwai helu helu hōʻailona ("[TOKEN_STREAM]", "{TOKEN_STREAM}" a me "(TOKEN_STREAM)"), no ka laʻana:

    macro_rules! accept_meta { ($m:meta) => {} }
    accept_meta!( my::path );
    accept_meta!( my::path = "lit" );
    accept_meta!( my::path ( abc ) );
    accept_meta!( my::path [ abc ] );
    accept_meta!( koʻu:: ala { abc } );

  • Ma ke ʻano Rust 2015, hiki ke hoʻopuka ʻia ka hewa no nā pilikia i ʻike ʻia i ka nānā ʻana i ka hōʻaiʻē ʻana o nā mea hoʻololi (borrow checker) me ka hoʻohana ʻana i ka ʻenehana NLL (Non-Lexical Lifetimes). Ma mua, ua hoʻololi ʻia nā ʻōlelo aʻo me nā hewa i ka wā e holo ana i ke ʻano Rust 2018.
    Ma hope o ka hoʻonui ʻia ʻana o ka hoʻololi i ke ʻano Rust 2015, hiki i nā mea hoʻomohala ke hoʻopau kīloi aku mai ka luna hōʻaiʻē kahiko.

    E hoʻomanaʻo mākou ʻo ka ʻōnaehana hōʻoia e pili ana i kahi ʻano hana hou no ka noʻonoʻo ʻana i ke ola o nā ʻano ʻ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.

  • Hoʻohana ʻia ka ʻano "const", ka mea e hoʻoholo ai i ka hiki ke hoʻohana ʻia i loko o nā pōʻaiapili ma kahi o nā mea mau, hoʻohana ʻia no ka hana is_power_of_two (no nā helu helu ʻole).
  • Ua hoʻoneʻe ʻia kahi ʻāpana hou o ka API i ka māhele paʻa, me ka todo!() macro a me ka slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, ua hoʻopaʻa ʻia nā ʻano hana.
    Koho::as_deref, Koho::as_deref_mut, Koho::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, { f32}::mai_be_bytes, {f64,f32}::mai_le_bytes, a me {f64,f32}::mai_ne_bytes.

  • I ka ukana luna hoʻokele
    hoʻokō ʻia ka hoʻokaʻawale ʻana i nā ʻōlelo aʻo a ka mea hoʻopili ma ka disk. Ua hoʻohui ʻia ke koho "cargo metadata" i ke kauoha "cargo metadata".--filter-platform"e hōʻike i nā pūʻolo wale nō i hoʻopaʻa ʻia i ka paepae i kuhikuhi ʻia ma ke kolamu hoʻoholo hilinaʻi. Hoʻohui ʻia ke koho hoʻonohonoho http.ssl-version e wehewehe i nā mana TLS kūpono.
    Hoʻohui i ka hiki ke hoʻopuka i ka ʻāpana "dev-dependencies" me ka wehewehe ʻole ʻana i ke kī "version".

  • Hāʻawi ka rustc compiler i ke kākoʻo pae ʻekolu no nā paepae pahuhopu thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 a me mips64el-unknown-linux-muslabi64. ʻ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