Rust 1.60 Kutulutsa Chilankhulo cha Mapulogalamu

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

  • Rustc compiler ili ndi dongosolo lokhazikika la LLVM lopangira deta yowunikira yomwe imagwiritsidwa ntchito poyesa kufalitsa ma code pakuyesa. Kuti mutsegule deta panthawi ya msonkhano, muyenera kugwiritsa ntchito mbendera ya "-Cinstrument-coverage", mwachitsanzo, kuyambitsa msonkhano ndi lamulo la "RUSTFLAGS = "-C instrument-coverage" cargo build". Pambuyo poyendetsa fayilo yomwe ingagwiritsidwe ntchito motere, fayilo ya default.profraw idzasungidwa m'ndandanda wamakono, kuti mugwiritse ntchito zomwe mungagwiritse ntchito llvm-profdata utility kuchokera ku llvm-tools-preview component. Zomwe zimakonzedwa ndi llvm-profdata zitha kuperekedwa ku llvm-cov kuti apange lipoti lofotokozera. Zambiri zokhudzana ndi ulalo wa code source zimatengedwa kuchokera ku fayilo yomwe ikuyenera kufufuzidwa, yomwe imaphatikizapo zofunikira zokhudzana ndi kulumikizana pakati pa zowerengera zowerengera ndi ma code. 1 | 1|fn chachikulu () {2| 1 | println!("Moni, dziko!"); 3 | 1|}
  • Mu woyang'anira phukusi la katundu, kuthandizira mbendera ya "-timings" yakhazikika, yomwe imaphatikizapo kupanga lipoti latsatanetsatane la momwe ntchito ikuyendera komanso nthawi yokonzekera sitepe iliyonse. Lipotilo litha kukhala lothandiza pakuwongolera magwiridwe antchito a msonkhano.
  • Woyang'anira katundu wonyamula katundu amapereka syntax yatsopano pamakina ophatikizira mokhazikika ndikusankha zodalira zomwe mwasankha, zokonzedwa mufayilo ya Cargo.toml polemba mndandanda wazinthu zomwe zatchulidwa mugawo la [zigawo] ndikuyambitsanso ndikupangitsa katunduyo pakumanga phukusi. pogwiritsa ntchito mbendera ya "--mawonekedwe". Mtundu watsopanowu umawonjezera kuthandizira kudalira m'malo osiyanasiyana a mayina ndi kudalira kofooka.

    Pachiyambi choyamba, ndizotheka kugwiritsa ntchito zinthu zomwe zili ndi mawu oyambira "dep:" mkati mwa gawo la "[mawonekedwe]" kuti mulumikizane momveka bwino ndi kudalira kosankha popanda kuyimira kudalira uku ngati mawonekedwe. Pachigawo chachiwiri, chothandizira choyika chizindikiro ndi β€œ?” chawonjezeredwa. ("package-name?/feature-name") zodalira zomwe mwasankha zomwe ziyenera kuphatikizidwa pokhapokha ngati katundu wina ali ndi kudalira komwe mwapatsidwa. Mwachitsanzo, mu chitsanzo chomwe chili pansipa, kuthandizira katundu wa serde kungathandize kudalira "serde", komanso katundu wa "serde" pa kudalira "rgb", koma pokhapokha ngati kudalira kwa "rgb" kuthandizidwa kwina: [dependencies] serde = {mtundu = " 1.0.133", optional = true } rgb = { version = "0.8.25", optional = true } [mawonekedwe] serde = ["dep:serde", "rgb?/serde"]

  • Thandizo la kuphatikizika kowonjezera, lomwe linali lolemala pakutulutsidwa komaliza, labwezedwa. Vuto la compiler lomwe lapangitsa kuti mawonekedwewo azimitsidwa lathetsedwa.
  • Kuthetsa mavuto ena popereka ma Instant timers ndi chitsimikizo cha nthawi ya monotonic, yomwe imaganizira nthawi yomwe dongosololi limagwiritsidwa ntchito pogona. M'mbuyomu, OS API idagwiritsidwa ntchito ngati kuli kotheka kugwiritsa ntchito chowerengera, chomwe sichinaganizire zovuta zomwe zimasokoneza nthawi, monga mavuto a hardware, kugwiritsa ntchito virtualization, kapena zolakwika pamakina opangira.
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
    • Arc::new_cyclic
    • Rc::new_cyclic
    • chidutswa::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::kuthawa_ascii
    • Vec::spare_capacity_mut
    • MwinaUninit::asume_init_drop
    • MwinaUninit::kuganiza_init_werengani
    • i8::ab_dif
    • i16::ab_dif
    • i32::ab_dif
    • i64::ab_dif
    • i128::ab_dif
    • izi::abs_diff
    • u8::ab_dif
    • u16::ab_dif
    • u32::ab_dif
    • u64::ab_dif
    • u128::ab_dif
    • ntchito::abs_diff
    • Onetsani kwa io::ErrorKind
    • Kuchokera ku ExitCode
    • Osati za! (mtundu "never")
    • _Op_Pakani<$t>
    • arch::is_aarch64_feature_yazindikirika!
  • Gawo lachitatu lothandizira lakhazikitsidwa pa nsanja za mips64-openwrt-linux-musl* ndi armv7-unknown-linux-uclibceabi (softfloat). Mulingo wachitatu umakhudzanso chithandizo choyambirira, koma popanda kuyesa kokha, kusindikiza kovomerezeka, kapena kuwona ngati code ingamangidwe.
  • Wopangayo wasinthidwa kuti agwiritse ntchito LLVM 14.

Kuwonjezera apo, mukhoza kuzindikira:

  • Thandizo lowonjezera la bootstrapping rustc compiler pogwiritsa ntchito rustc_codegen_gcc backend, zomwe zimakulolani kugwiritsa ntchito laibulale ya libgccjit kuchokera ku polojekiti ya GCC monga jenereta ya code mu rustc, yomwe imalola rustc kupereka chithandizo cha zomangamanga ndi kukhathamiritsa komwe kulipo ku GCC. Kukwezeleza kwa compiler kumatanthauza kutha kugwiritsa ntchito jenereta ya GCC yochokera ku rustc kuti apange rustc compiler yokha. Kumbali yothandiza, izi zimakupatsani mwayi wopanga dzimbiri mapulogalamu omanga omwe sanathandizidwepo kale mu rustc.
  • Kutulutsidwa kwa uutils coreutils 0.0.13 toolkit ikupezeka, momwe analogue ya phukusi la GNU Coreutils, lolembedwanso m'chinenero cha Rust, likupangidwa. Ma Coreutils amabwera ndi zida zopitilira zana, kuphatikiza mtundu, mphaka, chmod, chown, chroot, cp, deti, dd, echo, hostname, id, ln, ndi ls. Cholinga cha polojekitiyi ndikupanga njira ina yogwiritsira ntchito Coreutils, yomwe imatha kuyendetsa pa Windows, Redox ndi Fuchsia nsanja, komanso kugawa pansi pa chilolezo cha MIT chololedwa, m'malo mwa chilolezo cha GPL copyleft.

    Mtundu watsopanowu wapititsa patsogolo kukhazikitsidwa kwazinthu zambiri, kuphatikiza kugwirizanitsa bwino kwa cp, dd, df, split and tr utility ndi anzawo aku projekiti ya GNU. Zolemba pa intaneti zaperekedwa. The clap parser amagwiritsidwa ntchito kufotokoza mfundo za mzere wa malamulo, zomwe zathandiza kuti mbendera ya "--help" ikhale yabwino komanso kuwonjezera thandizo lachidule cha malamulo aatali (mwachitsanzo, mukhoza kutchula "ls -col" m'malo mwa "ls -color". ”).

Source: opennet.ru

Kuwonjezera ndemanga