Umhlwa 1.38 Ukukhutshwa koLwimi lweNkqubo

ipapashiwe inkqubo yolwimi ukukhululwa Umhlwa 1.38, yasekwa yiprojekthi yeMozilla. Ulwimi lujolise ekukhuselweni kwememori, lubonelela ngolawulo lwememori oluzenzekelayo, kwaye lubonelela ngeendlela zokufezekisa ukuhambelana okuphezulu komsebenzi ngaphandle kokusebenzisa umqokeleli wenkunkuma okanye ixesha lokuqhuba.

Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lukhulula umphuhlisi ekusetyenzisweni kwesalathisi kwaye ikhusela kwiingxaki ezivela kulawulo lwenkumbulo olukwinqanaba elisezantsi, elifana nofikelelo lwememori yasemva kwe-free, izalathisi ezingenanto, ukugqithiswa kwe-buffer, nokunye okunjalo. Umphathi wephakheji uyaphuhliswa ukuze asasaze amathala eencwadi, aqinisekise ukudibanisa kunye nokulawula ukuxhomekeka kwiprojekthi. Cargo, ikuvumela ukuba ufumane amathala eencwadi afunekayo kudweliso lwenkqubo ngonqakrazo olunye. Uvimba uyaxhaswa ukubamba amathala eencwadi iikhreyithi.io.

Siseko ezintsha:

  • Kongezwe indlela yokudibanisa engumbhobho (efakwe umbhobho), apho ukwakhiwa kwephakheji yekhreyithi exhomekeke kuyo iqala nje ukuba imetadata yokuxhomekeka ifumaneke, ngaphandle kokulinda ukuqokelelwa kwayo kugqitywe. Xa uqulunqa ipakethe, awudingi ukuba nazo zonke izixhomekeke zidityanisiwe, ufuna nje ukuchaza i-metadata, equka uluhlu lweentlobo, ukuxhomekeka, kunye nezinto ezithunyelwa ngaphandle. Imetadata yenziwa ifumaneke kwangoko kwinkqubo yoqulunqo, ngoko ke iipakethe ezidityanisiweyo zinokuqokelelwa kwangethuba. Xa ukwakhiwa kweepakethe enye, imodi ecetywayo ayichaphazeli ukusebenza, kodwa ukuba ukwakhiwa kugubungela iipakethe ezinokuxhomekeka kwe-branched, ixesha lokwakha elipheleleyo lingancitshiswa nge-10-20%;
  • Iqinisekisa ukubhaqwa kokusetyenziswa ngokungalunganga kwemisebenzi std::mem::ayenziwanga и std::mem::zeroed. Umzekelo, std::mem::uninitialized ilungele ukudala ngokukhawuleza uluhlu, kodwa ilahlekisa umqokeleli kuba ibonakala iqalwa, kodwa eneneni ixabiso lihlala lingaqaliswanga. I mem ::umsebenzi ongamiselwanga sele uphawulwe njengolahlisiweyo kwaye kuyacetyiswa ukuba kusetyenziswe udidi oluphakathi endaweni yoko. Mhlawumbi iYunithi. Ngokuphathelele i-mem::i-zeroed, lo msebenzi unokubangela iingxaki ngeentlobo ezingakwaziyo ukwamkela amaxabiso angu-zero.

    Ukunceda ukuchonga indlela yokuziphatha engachazwanga, ukhupho olutsha longeza i-lint check kumqokeleli obona iingxaki ezithile nge-mem ::engaqalwanga okanye i-mem::i-zeroed. Umzekelo, ngoku ufumana imposiso xa uzama ukusebenzisa i-mem::engamiselwanga okanye i-mem::i-zeroed ngeentlobo &T neBhokisi‹T›, emele izinto zesalathisi ezingenakwamkela amaxabiso angasebenziyo;

  • Uphawu loyelelwano “#[luyekiwe]” lwandisiwe ukuvumela iipakethe zekhreyithi ukuba ziphawulwe njengephelelwe lixesha kwaye zicwangciselwe ukucinywa kwixesha elizayo. Ukusukela kwiRust 1.38, olu phawu lungasetyenziselwa iimacros;
  • Kongezwe ukukwazi ukusebenzisa uphawu lwe-“#[global_allocator]” kwiimodyuli ezincinci;
  • Umsebenzi ongezelelweyo std::nayiphi::type_igama, ekuvumela ukuba ufumane igama lodidi, elinokuba luncedo kwiinjongo zokucoca. Umzekelo, ngexesha lokwenziwa kwenkqubo ungafumanisa ukuba loluphi uhlobo lomsebenzi owawubizwa ngalo:

    fn gen_value‹T: Default>() -› T {
    println!("Ukuqala umzekelo we- {}", std::nayiphi::type_name::‹T›());
    Okuhlala kukho::okuhlala kukho ()
    }

    fn eyona () {
    vumela _: i32 = gen_value(); # "i32" iya kuprintwa
    vumela _: Umtya = gen_value (); # iya kuprinta "alloc::string::String"
    }

  • Imisebenzi eyandisiweyo yethala leencwadi elisemgangathweni:
    • slice::{concat, connect, join} ngoku ingathatha ixabiso &[T] ukongeza kwi &T;
    • "*const T" kunye "*mut T" ngoku sebenzisa isiphawuli::Susa ukuphina;
    • "Arc‹[T]›" kunye "Rc‹[T]›" ngoku phumeza FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} ngoku sebenzisa i-DoubleEndedIterator.
    • ascii ::EscapeDefault sebenzisa Clone kunye nomboniso.
  • Inxalenye entsha ye-APIs idluliselwe kwinqanaba elizinzile, kubandakanywa neendlela ezizinzile
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Ubude bexesha::as_secs_f{32|64},
    • Ubude bexesha::div_duration_f{32|64},
    • Ubude bexesha::div_f{32|64},
    • Ubude bexesha::ukusuka_imizuzwana_f{32|64},
    • Ubude bexesha::mul_f{32|64},
    • imisebenzi yokwahlula kunye nentsalela
      div_euclid kunye ne-rem_euclid yazo zonke iiprimitives ezipheleleyo;

  • Inkxaso eyongeziweyo yokucacisa "--iimpawu" ukhetho amaxesha amaninzi ukwenza iimpawu ezahlukeneyo kumphathi wepakethe yempahla;
  • Umqambi ubonelela ngeyesithathu bakala inkxaso yamaqonga ekujoliswe kuwo aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armvlinux-unknown-unknown -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl kunye riscv7i-unknown-none-elf. Inqanaba lesithathu libandakanya inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo kunye nokupapashwa kokwakhiwa kwasemthethweni.

umthombo: opennet.ru

Yongeza izimvo