Rust 1.58 Kutulutsa Chilankhulo cha Mapulogalamu

Kutulutsidwa kwa chilankhulo chokonzekera pulogalamu ya Rust 1.58, yomwe idakhazikitsidwa ndi polojekiti ya Mozilla, koma tsopano yapangidwa mothandizidwa ndi bungwe lodziyimira pawokha 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:

  • Muzitsulo zopangira mizere, kuwonjezera pa kuthekera komwe kulipo kale kosinthira zosintha zomwe zidalembedwa momveka bwino pambuyo pa mzere ndi nambala ndi dzina, kuthekera kolowa m'malo mwa zizindikiritso zosagwirizana powonjezera mawu oti "{identifier}" pamzerewo. Mwachitsanzo: // Zomanga zomwe zidathandizidwa kale: println!("Moni, {}!", get_person()); println!("Moni, {0}!", get_person()); println!("Moni, {munthu}!", munthu = get_person()); // tsopano mutha kufotokoza lolani munthu = get_person(); println!("Moni, {munthu}!");

    Zozindikiritsa zithanso kufotokozedwa mwachindunji muzosankha zamasanjidwe. lolani (m'lifupi, molondola) = get_format(); kwa (dzina, mphambu) mu get_scores() {println!("{name}: {score:width$.precision$}"); }

    Kusintha kwatsopano kumagwira ntchito m'macros onse omwe amathandizira kutanthauzira kwamtundu wa zingwe, kupatula "mantha!" m'matembenuzidwe a 2015 ndi 2018 a Chilankhulo cha Dzimbiri, momwe mantha!("{ident}") amatengedwa ngati chingwe chokhazikika (mu Rust 2021 m'malo mwake amagwira ntchito).

  • Khalidwe la std:: process::Lamulo la dongosolo pa Windows lasinthidwa kotero kuti popereka malamulo, pazifukwa zachitetezo, siliyang'ananso mafayilo omwe angathe kuchitidwa mu bukhu lapano. Chikwatu chomwe chilipo sichikuphatikizidwa chifukwa chitha kugwiritsidwa ntchito kuyitanitsa ma code oyipa ngati mapulogalamu akuyendetsedwa m'makalata osadalirika (CVE-2021-3013). Njira yatsopano yodziwira yomwe ingathe kuchitika ikuphatikizapo kufufuza zolemba za Rust, chikwatu cha mapulogalamu, Windows system directory, ndi zolemba zomwe zafotokozedwa mu PATH chilengedwe variable.
  • Laibulale yokhazikika yakulitsa kuchuluka kwa magwiridwe antchito olembedwa "#[must_use]" kuti apereke chenjezo ngati mtengo wobweza unyalanyazidwa, zomwe zimathandiza kuzindikira zolakwika zomwe zimayambitsidwa poganiza kuti ntchito isintha mitengo m'malo mobwezera mtengo watsopano.
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
    • Metadata::is_symlink
    • Njira::is_symlink
    • {integer}::saturating_div
    • Njira::unwrap_chosasankhidwa
    • Zotsatira::unwrap_unchecked
    • Zotsatira::unwrap_err_unchecked
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mwa zokhazikika, limagwiritsidwa ntchito muzochita:
    • Nthawi::zatsopano
    • Nthawi::checked_add
    • Nthawi::kukhutitsa_kuwonjezera
    • Nthawi::checked_sub
    • Nthawi::saturating_sub
    • Nthawi::checked_mul
    • Nthawi::saturating_mul
    • Nthawi::checked_div
  • Amalola kuchotsedwa kwa zolozera za "*const T" mu "const".
  • Mu kasamalidwe ka phukusi la Cargo, gawo la rust_version lawonjezeredwa ku metadata ya phukusi, ndipo njira ya "--message-format" yawonjezeredwa ku lamulo la "cargo install".
  • Wopangayo amagwiritsa ntchito njira yodzitetezera ya CFI (Control Flow Integrity), yomwe imawonjezera macheke isanayimbidwe mwanjira iliyonse kuti azindikire mitundu ina ya machitidwe osadziwikiratu omwe angayambitse kuphwanya lamulo lanthawi zonse (control flow) chifukwa cha kugwiritsa ntchito zinthu zomwe zimasintha zolozera zomwe zimasungidwa muzokumbukira pazochita.
  • Wopangayo wawonjezera chithandizo chamitundu 5 ndi 6 ya mtundu wofananira wa LLVM, womwe umagwiritsidwa ntchito kuwunika ma code pakuyesa.
  • Mu compiler, zofunikira za mtundu wocheperako wa LLVM zimakwezedwa ku LLVM 12.
  • Gawo lachitatu lothandizira pa nsanja ya x86_64-yosadziwika-palibe yakhazikitsidwa. Mulingo wachitatu umakhudzanso chithandizo choyambirira, koma popanda kuyesa kokha, kusindikiza kovomerezeka, kapena kuwona ngati code ingamangidwe.

Kuphatikiza apo, titha kuzindikira kufalitsidwa ndi Microsoft za kutulutsidwa kwa Rust kwa malaibulale a Windows 0.30, omwe amakulolani kugwiritsa ntchito chilankhulo cha Dzimbiri kupanga mapulogalamu a Windows OS. Setiyi imaphatikizapo mapaketi awiri a crate (mawindo ndi windows-sys), momwe mungapezere Win API mu mapulogalamu a Rust. Code for API support imapangidwa mwamphamvu kuchokera ku metadata yofotokoza API, yomwe imakulolani kuti mugwiritse ntchito chithandizo osati pama foni a Win API omwe alipo, komanso mafoni omwe adzawonekere mtsogolo. Mtundu watsopanowu umawonjezera chithandizo cha nsanja ya UWP (Universal Windows Platform) ndikuyika mitundu ya Handle ndi Debug.

Source: opennet.ru

Kuwonjezera ndemanga