Rust 1.38 Kutulutsa Chilankhulo cha Mapulogalamu

Lofalitsidwa kutulutsidwa kwa chilankhulo cha pulogalamu yadongosolo Dzimbiri 1.38, yokhazikitsidwa ndi polojekiti ya Mozilla. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira, chimapereka kasamalidwe ka kukumbukira, ndipo chimapereka njira zopezera ntchito yofanana kwambiri popanda kugwiritsa ntchito chotolera zinyalala kapena nthawi yothamanga.

Kuwongolera kukumbukira kwa Rust kumamasula wopanga kuti asasokonezedwe ndi pointer ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira kwapang'onopang'ono, monga kulowa kwa kukumbukira kwaulere, kusokoneza null pointer, buffer overruns, ndi zina zotero. Woyang'anira phukusi akupangidwa kuti azigawira malaibulale, kuwonetsetsa kusonkhanitsa ndi kuyang'anira zodalira ndi polojekiti. katundu, kukulolani kuti mupeze malaibulale ofunikira pa pulogalamuyo ndikudina kamodzi. Malo osungiramo mabuku amathandizidwa kuti azisunga malaibulale makate.io.

waukulu zatsopano:

  • Anawonjezera njira yophatikizira mapaipi (yopangidwa ndi mapaipi), momwe kupangidwa kwa phukusi lodalira la crate kumayamba pomwe metadata yodalira ikupezeka, osadikirira kuti kumaliza kwake. Popanga phukusi, zodalira siziyenera kuphatikizidwa kwathunthu, kungofotokozera metadata, yomwe ili ndi mndandanda wamitundu, zodalira, ndi zinthu zotumizidwa kunja. Metadata imapezeka koyambirira pakuphatikiza, kotero mapaketi olumikizidwa tsopano atha kupangidwa kale kwambiri. Pomanga maphukusi amodzi, njira yomwe ikugwiritsidwira ntchito sikukhudza ntchito, koma ngati kumangako kumaphimba mapepala okhala ndi nthambi, nthawi yonse yomanga ikhoza kuchepetsedwa ndi 10-20%;
  • Imawonetsetsa kuti ikugwiritsidwa ntchito molakwika std::mem::zosadziwika и std::mem::ziroed. Mwachitsanzo, std::mem::zosasinthika ndizosavuta kupanga masinthidwe mwachangu, koma zimasokeretsa wophatikiza chifukwa zikuwoneka kuti zayambika, koma kwenikweni mtengo wake sunayambike. The mem :: ntchito yosadziwika idalembedwa kale kuti yachotsedwa ndipo tikulimbikitsidwa kugwiritsa ntchito mtundu wapakatikati m'malo mwake. Mwina Unit. Ponena za mem ::zeroed, ntchitoyi imatha kuyambitsa mavuto ndi mitundu yomwe singavomereze ziro.

    Kuthandizira kuzindikira khalidwe losadziŵika, kumasulidwa kwatsopano kumawonjezera cheke kwa wosonkhanitsa omwe amazindikira mavuto ena ndi mem :: osadziwika kapena mem :: zeroed. Mwachitsanzo, mukupeza cholakwika poyesa kugwiritsa ntchito mem::zosazindikirika kapena mem::ziroed ndi mitundu &T ndi Box‹T›, zomwe zikuyimira zinthu zolozera zomwe sizingavomereze zinthu zopanda pake;

  • Malingaliro a "#[deprecated]" awonjezedwa kuti alole kuti mapaketi a crate adziwike kuti ndi achikale komanso kuti adzachotsedwa mtsogolo. Monga Rust 1.38, chikhalidwe ichi chingagwiritsidwenso ntchito pa macros;
  • Anawonjezera kuthekera kogwiritsa ntchito "#[global_allocator]" m'ma submodule;
  • Anawonjezera ntchito std::aliyense::mtundu_name, zomwe zimakulolani kuti mudziwe dzina la mtunduwo, zomwe zingakhale zothandiza pazifukwa zowonongeka. Mwachitsanzo, pakukhazikitsa pulogalamu mutha kudziwa mtundu wanji womwe umatchedwa:

    fn gen_value‹T: Zofikira>() -› T {
    println!("Kuyambitsa chitsanzo cha {}", std::aliyonse::type_name::‹T›());
    Zofikira::zokhazikika()
    }

    fn chachikulu () {
    lolani _: i32 = gen_value(); # "i32" isindikizidwa
    lolani _: Chingwe = gen_value (); # isindikiza "alloc::string::String"
    }

  • Ntchito zowonjezera za library yokhazikika:
    • kagawo::{concat, connect, join} tsopano akhoza kutenga mtengo &[T] kuwonjezera pa &T;
    • "*const T" ndi "*mut T" tsopano khazikitsani chikhomo::Chotsani;
    • "Arc‹[T]›" ndi "Rc‹[T]›" tsopano khazikitsani FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} tsopano khazikitsani DoubleEndedIterator.
    • ascii :: EscapeDefault imagwiritsa ntchito Clone ndi Display.
  • Gawo latsopano la API lasamutsidwa ku gulu lokhazikika, kuphatikizapo njira zomwe zakhazikika
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Nthawi::as_secs_f{32|64},
    • Nthawi::div_duration_f{32|64},
    • Nthawi::div_f{32|64},
    • Nthawi::kuchokera_secs_f{32|64},
    • Nthawi::mul_f{32|64},
    • ntchito zogawa ndi zotsalira
      div_euclid ndi rem_euclid pazoyambira zonse;

  • Thandizo lowonjezera pofotokoza njira ya "--mawonekedwe" kangapo kuti muwongolere mawonekedwe osiyanasiyana pawoyang'anira katundu wonyamula katundu;
  • Wopangayo amapereka chachitatu mlingo kuthandizira nsanja zomwe mukufuna aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armvx7-osadziwika- -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl ndi riscv32i-osadziwika-none-elf. Mulingo wachitatu umakhudzanso chithandizo choyambirira, koma popanda kuyezetsa ndi kufalitsa zomanga zovomerezeka.

Source: opennet.ru

Kuwonjezera ndemanga