Rust 1.66 Kutulutsa Chilankhulo cha Mapulogalamu

Chilankhulo chothandizira anthu ambiri Rust 1.66, 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:

  • M'mawerengedwe okhala ndi zoyimira zonse (mawonekedwe a "#[repr(Int)]"), chizindikiritso chodziwikiratu cha tsankho (chiwerengero chosiyana m'kawerengero) chimaloledwa, ngakhale kuwerengerako kuli ndi magawo. #[repr(u8)] enum Foo {A(u8), # tsankho 0 B(i8), # tsankho 1 C(bool) = 42, # tsankho 42}
  • Ntchito yowonjezera ::hint::black_box yomwe imangobweza mtengo womwe walandilidwa. Popeza wopangayo akuganiza kuti ntchitoyi ikuchitapo kanthu, ntchito ya black_box ingagwiritsidwe ntchito kuletsa kukhathamiritsa kwa compiler kwa malupu poyesa kuyesa kwa ma code kapena powunika makina opangidwa (kuti wophatikiza asaganizire kachidindo kosagwiritsidwa ntchito ndikuchotsa). Mwachitsanzo, mu chitsanzo chomwe chili pansipa, black_box(v.as_ptr()) imalepheretsa wopanga kuganiza kuti vekitala v sikugwiritsidwa ntchito. gwiritsani ntchito std::hint::black_box; fn push_cap(v: &mut Vec) {kwa ine mu 0..4 {v.push(i); black_box(v.as_ptr()); }}
  • Woyang'anira phukusi la "katundu" amapereka lamulo la "chotsani", lomwe limakupatsani mwayi wochotsa zodalira pa Cargo.toml chiwonetsero kuchokera pamzere wolamula.
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, kusefukira_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_sanasainidwa, kusefukira_onjezani_osasainidwa, kuchulukitsa_onjezani_osasainidwa, kukulunga_kuwonjezera_osasainidwa}
    • i*::{checked_sub_unsigned, kusefukira_sub_osasainidwa, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{choyamba, chomaliza, pop_choyamba, pop_chomaliza}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Onjezani kukhazikitsa kwa AsFd pamitundu ya stdio lock mukamagwiritsa ntchito WASI.
    • impl TryFrom > kwa Bokosi<[T; N]>
    • pachimake::hint::black_box
    • Nthawi::try_from_secs_{f32,f64}
    • Njira::unzip
    • std::os::fd
  • Magawo "..X" ndi "..=X" amaloledwa muzithunzi.
  • Pomanga mapeto a kutsogolo kwa rustc compiler ndi LLVM backend, LTO (Link Time Optimization) ndi BOLT (Binary Optimization and Layout Tool) njira zowonjezera zimagwiritsidwa ntchito kuonjezera ntchito ya code yomwe imachokera ndikuchepetsa kukumbukira kukumbukira.
  • Thandizo la gawo 5 lokhazikitsidwa pamapulatifomu a armv5te-none-eabi ndi thumbvXNUMXte-none-eabi. Mulingo wachitatu umatanthawuza thandizo loyambira, koma popanda kuyezetsa kokha, ofalitsa ofalitsa amamanga ndikuwunika kuthekera kopanga kachidindo.
  • Zowonjezera zothandizira kulumikizana ndi macOS Generic Libraries.

Kuphatikiza apo, titha kuzindikira kuphatikizidwa mu codebase ya GCC ya wolemba-kumapeto kwa chilankhulo cha Rust (gccrs). Malo akutsogolo akuphatikizidwa munthambi ya GCC 13, yomwe idzatulutsidwa mu Meyi 2023. Kuyambira ndi GCC 13, zida zokhazikika za GCC zitha kugwiritsidwa ntchito kupanga mapulogalamu a Rust popanda kufunikira kokhazikitsa compiler ya rustc yomangidwa pogwiritsa ntchito chitukuko cha LLVM. Kukhazikitsa Rust mu GCC 13 kudzakhala mu beta, osayatsidwa mwachisawawa.

Source: opennet.ru

Kuwonjezera ndemanga