Rust 1.65 Kutulutsa Chilankhulo cha Mapulogalamu

Chilankhulo chothandizira anthu ambiri Rust 1.65, chomwe chinakhazikitsidwa ndi polojekiti ya Mozilla koma tsopano chapangidwa mothandizidwa ndi bungwe lodziyimira pawokha lopanda phindu la Rust Foundation, chatulutsidwa. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira ndipo chimapereka njira zopezera kufananiza kwakukulu kwa ntchito ndikupewa kugwiritsa ntchito chotolera zinyalala ndi nthawi yothamanga (nthawi yothamanga imachepetsedwa kuti ikhale yoyambira ndikukonza laibulale yokhazikika).

Njira zogwiritsira ntchito kukumbukira za Rust zimapulumutsa wopanga ku zolakwika pamene akuwongolera zolozera ndikuteteza ku zovuta zomwe zimadza chifukwa cha kukumbukira kwapang'onopang'ono, monga kupeza malo okumbukira atamasulidwa, kuchotsa zolozera zopanda pake, ma buffer overruns, etc. Kugawira malaibulale, kupereka zomanga ndi kusamalira zodalira, pulojekitiyi imapanga woyang'anira phukusi la Cargo. Malo osungiramo crates.io amathandizidwa kuti azisunga malaibulale.

Kutetezedwa kwa Memory kumaperekedwa mu Rust panthawi yophatikiza kudzera pakuwunika, kuyang'anira umwini wa chinthu, kuyang'anira nthawi ya moyo wa chinthu (ma scopes), ndikuwunika kulondola kwa kukumbukira kukumbukira panthawi yopanga ma code. Dzimbiri limaperekanso chitetezo ku kusefukira kwazinthu zonse, kumafuna kukhazikitsidwa kovomerezeka kwa zinthu zosinthika musanagwiritse ntchito, kuwongolera zolakwika bwino mulaibulale yokhazikika, kumagwiritsa ntchito lingaliro la maumboni osasinthika ndi zosintha mwachisawawa, kumapereka zilembo zolimba kuti muchepetse zolakwika zomveka.

Zatsopano zazikulu:

  • Thandizo lowonjezera la mitundu yogwirizana ndi ma generic (GAT, Generic Associated Types), zomwe zimapangitsa kuti zitheke kupanga zilembo zamtundu wogwirizana ndi mtundu wina ndikukulolani kugwirizanitsa omanga amitundu ndi mawonekedwe. khalidwe Foo {mtundu Bar <'x>; }
  • Mawu oti "let ... else" akhazikitsidwa, kukulolani kuti muwone momwe mawonekedwe akufananira mkati mwa mawu oti "loleni" ndikuyika nambala yokhazikika ngati mawonekedwewo sakufanana. lolani Ok(kuwerengera) = u64::kuchokera_str(count_str) kwina {mantha!("Sitingawerenge chiwerengero chonse: '{count_str}'"); };
  • Lolani kugwiritsa ntchito mawu opuma kuti mutuluke midadada yotchulidwa nthawi isanakwane, pogwiritsa ntchito dzina la block (chizindikiro) kuti muzindikire chipikacho kuti chithe. lolani zotsatira = 'block: {do_thing(); ngati condition_not_met() {break 'block 1; } do_next_thing(); ngati condition_not_met() {break 'block 2; } do_last_thing(); 3};
  • Kwa Linux, kuthekera kosunga padera zidziwitso zosokoneza (split-debuginfo), zomwe zidapezeka kale papulatifomu ya macOS, zawonjezedwa. Mukatchula njira ya "-Csplit-debuginfo=unpacked", debuginfo data mumtundu wa DWARF idzasungidwa m'mafayilo angapo osiyana ndi ".dwo" yowonjezera. Kutchula "-Csplit-debuginfo=packed" kudzapanga phukusi limodzi mumtundu wa ".dwp" womwe uli ndi deta yonse ya debuginfo ya polojekiti. Kuti muphatikize debuginfo mwachindunji mu gawo la .debug_* la zinthu za ELF, mutha kugwiritsa ntchito njira ya "-Csplit-debuginfo=off".
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
    • std::backtrace::Backtrace
    • Yomangidwa::monga_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mokhazikika, limagwiritsidwa ntchito muzolemba <*const T&>::offset_from ndi <*mut T>::offset_from.
  • Monga gawo lomaliza la kusamutsa kukhazikitsidwa kwa protocol ya LSP (Language Server Protocol) kupita ku rust-analyzer, kukhazikitsidwa kwakanthawi kwa Rust Language Server (RLS) kudasinthidwa ndi seva ya stub yomwe imapereka chenjezo ndi lingaliro losinthira ku. pogwiritsa ntchito rust analyzer.
  • Pakuphatikiza, kuthandizira kutumizidwa kwa inline code ya MIR yapakati kumayatsidwa, zomwe zimafulumizitsa kuphatikizika kwa mapaketi wamba ndi 3-10%.
  • Kuti mufulumizitse zomanga zomwe zakonzedwa, woyang'anira phukusi la Cargo amapereka masanjidwe a ntchito zomwe zikuyembekezera kuchitidwa pamzere.

Kuphatikiza apo, mutha kuzindikira kuyankhulana pakugwiritsa ntchito chilankhulo cha Rust ku Volvo kupanga magawo azidziwitso zamagalimoto. Palibe mapulani olemberanso ma code omwe alipo komanso oyesedwa ku Rust, koma pamakhodi atsopano, Rust ndi imodzi mwazinthu zomwe amakonda pakuwongolera pamitengo yotsika. Magulu ogwira ntchito okhudzana ndi kugwiritsa ntchito chinenero cha Rust adapangidwanso m'magulu a magalimoto AUTOSAR (AUTomotive Open System ARchitecture) ndi SAE (Society of Automotive Engineers).

Kuphatikiza apo, David Kleidermacher, wachiwiri kwa purezidenti waukadaulo wa Google, adalankhula za kumasulira kwa kachidindo komwe amagwiritsidwa ntchito papulatifomu ya Android kuti azitha kuyendetsa makiyi achinsinsi ku dzimbiri, komanso kugwiritsa ntchito dzimbiri pakukhazikitsa DNS pa protocol ya HTTPS mu stack. za UWB- tchipisi (Ultra-Wideband) komanso mu mawonekedwe a virtualization (Android Virtualization Framework) yolumikizidwa ndi chipangizo cha Tensor G2. Mitaka yatsopano ya Bluetooth ndi Wi-Fi, yolembedwanso ku Rust, ikupangidwiranso Android. Njira yayikulu ndikulimbitsa chitetezo pang'onopang'ono, choyamba posintha zida zapulogalamu zomwe zili pachiwopsezo komanso zofunika kwambiri kukhala Rust, kenako ndikuwonjezera kuzinthu zina zofananira. Chaka chatha, chilankhulo cha dzimbiri chidaphatikizidwa pamndandanda wa zilankhulo zomwe zimaloledwa kupanga nsanja ya Android.

Source: opennet.ru

Kuwonjezera ndemanga