Rust 1.57 Kutulutsa Chilankhulo cha Mapulogalamu

Kutulutsidwa kwa chinenero cha pulogalamu ya Rust 1.57, yomwe inakhazikitsidwa ndi polojekiti ya Mozilla, koma tsopano yapangidwa mothandizidwa ndi bungwe lopanda phindu la Rust Foundation, lasindikizidwa. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira, chimapereka kasamalidwe ka kukumbukira, ndipo chimapereka njira zopezera kufananiza kwakukulu kwa ntchito popanda kugwiritsa ntchito chotolera zinyalala kapena nthawi yothamanga (nthawi yothamanga imachepetsedwa kukhala yoyambira ndi kukonza laibulale yokhazikika).

Kuwongolera kukumbukira kwa Rust kumachotsa zolakwika pakuwongolera zolozera ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira pang'ono, monga kulowa mdera la kukumbukira zitamasulidwa, kuchotsedwa kwa null pointer, buffer overruns, ndi zina zambiri. Kugawa malaibulale, kuwonetsetsa kusonkhana ndikuwongolera zodalira, polojekiti ikupanga woyang'anira phukusi la Cargo. Malo osungiramo crates.io amathandizidwa kuti azisunga malaibulale.

Zatsopano zazikulu:

  • Kugwiritsa ntchito "mantha!" macro kwakhazikika. m'mawu omwe adapangidwa pakuphatikiza, monga "const fn" zolengeza. Kuwonjezera apo, kuwonjezera pa ntchito "mantha!" const declarations amalola kugwiritsa ntchito "assert!" macro. ndi ma API ena okhazikika a library. Kukhazikika sikunaphatikizepo mawonekedwe onse, kotero mu mawonekedwe ake apano "mantha!" macro angagwiritsidwe ntchito ndi zingwe zokhazikika (mantha!(β€œ..."))) kapena ndi mtengo umodzi wothira "&str" polowa m'malo (panic!("{}", a)), zomwe ziyenera kungokhala m'malo "{ }" popanda zofotokozera ndi mitundu ina. M'tsogolomu, kugwiritsidwa ntchito kwa ma macros nthawi zonse kudzakulitsidwa, koma mphamvu zokhazikika ndizokwanira kale kuchita cheke pophatikiza: const _: () = assert!(std::mem::size_of:: () == 64; const _: () = kunena!(std::mem::size_of:: () == 8);
  • Woyang'anira phukusi la Cargo amalola kugwiritsa ntchito ma profaili okhala ndi mayina osasintha, osangokhala "dev", "kutulutsa", "test" ndi "bench". Mwachitsanzo, kuti muthe kukhathamiritsa pamlingo wolumikizira (LTO) pokhapokha ngati zomaliza zomaliza zapangidwa, mutha kupanga mbiri ya "kupanga" mu Cargo.toml ndikuwonjezera mbendera ya "lto = zoona". Komabe, pofotokozera mbiri yanu, muyenera kutchula mbiri yomwe ilipo kuti mutenge zosintha zosasintha kuchokera pamenepo. Chitsanzo chomwe chili pansipa chimapanga mbiri ya "kupanga" yomwe ikugwirizana ndi mbiri ya "kumasulidwa" pophatikiza mbendera ya "lto = zoona". Mbiri yokhayo imayatsidwa poyitanira katundu ndi njira ya "--profile production", ndipo zopangira zapagulu zidzayikidwa mu "chandage/kupanga". [profile.production] cholowa = "kumasulidwa" lto = zoona
  • Kugwiritsa ntchito try_reserve kwa mitundu ya Vec, String, HashMap, HashSet ndi VecDeque kwakhazikika, zomwe zimakulolani kusunga malo pasadakhale zinthu zingapo zamtundu womwe wapatsidwa kuti muchepetse kuchuluka kwa ntchito zogawa kukumbukira ndikupewa. kuwonongeka pakugwira ntchito chifukwa chosowa kukumbukira.
  • Zimaloledwa kutchula ma macros okhala ndi zingwe zopindika m'mawu ngati "m!{ .. }.method()" ndi "m!{ .. }?".
  • Kachitidwe ka Fayilo::read_to_end ndi read_to_string ntchito zakonzedwa.
  • Kuthandizira kwa Unicode specifications kwasinthidwa kukhala mtundu 14.0.
  • Wonjezerani chiwerengero cha ntchito zolembedwa "#[must_use]" kuti mupereke chenjezo ngati mtengo wobwezerawo wanyalanyazidwa, zomwe zimathandiza kuzindikira zolakwika zomwe zimachitika poganiza kuti ntchitoyo idzasintha mtengo m'malo mobwezera mtengo watsopano.
  • Onjezani zoyeserera zoyeserera pogwiritsa ntchito libgccjit.
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
    • [T; N]::as_mut_slice
    • [T; N]::monga_kagawo
    • zosonkhanitsira::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • Chingwe::try_reserve
    • Chingwe:: try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • Iterator::map_while
    • iter::MapWhile
    • proc_macro::ikupezeka_ikupezeka
    • Lamulo::get_programu
    • Lamulo::get_args
    • Lamulo::get_envs
    • Lamulo::get_current_dir
    • CommandArgs
    • CommandEnvs
  • Lingaliro la "const", lomwe limatsimikizira ngati lingagwiritsidwe ntchito m'malo aliwonse m'malo mwa zokhazikika, limagwiritsidwa ntchito polemba ntchito:: unreachable_unchecked.
  • Gawo lachitatu lothandizira lakhazikitsidwa pa armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi-kmv7abi solid_asp3-eabihf nsanja. Mulingo wachitatu umakhudzanso chithandizo choyambirira, koma popanda kuyesa kokha, kusindikiza kovomerezeka, kapena kuwona ngati code ingamangidwe.

Source: opennet.ru

Kuwonjezera ndemanga