Rust 1.58 Chirongwa Mutauro Kuburitswa

Kuburitswa kweiyo general-purpose programming language Rust 1.58, yakavambwa neMozilla purojekiti, asi iko zvino yakagadziridzwa pasi pehurongwa hwesangano rakazvimirira rerust Foundation, raburitswa. Mutauro unotarisana nekuchengetedza ndangariro, unopa otomatiki ndangariro manejimendi, uye inopa nzira dzekuwana yakakwira basa parallelism pasina kushandisa muunganidzi wemarara kana nguva yekumhanya (nguva yekumhanya inoderedzwa kuita yekutanga yekutanga uye kugadzirisa raibhurari yakajairwa).

Rust's otomatiki ndangariro manejimendi inobvisa zvikanganiso kana ichishandisa anongedza uye inodzivirira kubva kune yakaderera-level memory manipulation, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, null pointer dereferences, buffer overruns, nezvimwe. Kugovera maraibhurari, kuve nechokwadi kuungana uye kugadzirisa zvinotsamira, chirongwa ichi chiri kugadzira Cargo package maneja. Iyo crates.io repository inotsigirwa kuitisa maraibhurari.

Zvitsva zvikuru:

  • Mutambo yekugadzira mabhuroko, mukuwedzera kune yaimbovepo kugona kutsiva zvimiro zvakanyorwa zvakajeka mushure metambo nenhamba uye zita, kugona kutsiva zviziviso zvisina tsarukano nekuwedzera izwi rekuti "{identifier}" kune tambo rinoitwa. Semuyenzaniso: // Zvivakwa zvakambotsigirwa: println!("Mhoro, {}!", get_person()); println!("Mhoro, {0}!", get_person()); println!("Mhoro, {munhu}!", munhu = get_person()); // ikozvino unogona kutsanangura regai munhu = get_person(); println!("Mhoro, {munhu}!");

    Zviziviso zvinogona zvakare kutaurwa zvakananga mumafomati sarudzo. rega (hupamhi, kunyatsojeka) = get_format(); ye (zita, zvibodzwa) mu get_scores() {println!("{zita}: {score:width$.precision$}"); }

    Iko kutsiva kutsva kunoshanda mune ese macros anotsigira tambo fomati tsananguro, kunze kweiyo "kutya!" macro. mune 2015 uye 2018 shanduro yeRust mutauro, umo kutya!("{ident}") inobatwa setambo yenguva dzose (muRust 2021 iyo inotsiva inoshanda).

  • Maitiro eiyo std:: process::Command structure paWindows platform yakashandurwa kuitira kuti kana uchiita mirairo, nekuda kwezvikonzero zvekuchengetedza, haichatsvage mafaera anogona kuitiswa mudhairekitori razvino. Iro dhairekitori razvino haribatanidzwe nekuti rinogona kushandiswa kuita kodhi ine hutsinye kana zvirongwa zvichiitwa mumadhairekitori asina kuvimbika (CVE-2021-3013). Iyo nyowani inogoneka yekuona pfungwa inosanganisira kutsvaga iyo Rust madhairekitori, dhairekitori rekushandisa, iyo Windows system dhairekitori, uye madhairekitori anotsanangurwa muPATH nharaunda inosiyana.
  • Raibhurari yakajairwa yakawedzera huwandu hwemabasa akanyorwa "#[must_use]" kuburitsa yambiro kana kukosha kwekudzoka kukasateererwa, izvo zvinobatsira kuona zvikanganiso zvakakonzerwa nekufungidzira kuti basa richachinja kukosha pane kudzosera kukosha kutsva.
  • Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
    • Metadata::is_symlink
    • Nzira ::is_symlink
    • {integer}::saturating_div
    • Sarudzo::unwrap_unchecked
    • Mhedzisiro::unwrap_unchecked
    • Mhedzisiro::unwrap_err_unchecked
  • Iyo "const" hunhu, iyo inosarudza mukana wekuishandisa mune chero mamiriro pachinzvimbo chezvimiro, inoshandiswa mumabasa:
    • Nguva::zvitsva
    • Nguva::checked_add
    • Nguva::kugutsa_kuwedzera
    • Nguva::checked_sub
    • Nguva::saturating_sub
    • Nguva::checked_mul
    • Nguva::saturating_mul
    • Nguva::checked_div
  • Inotenderwa kudzoreredzwa kwe "*const T" anonongedzera mu "const" mamiriro.
  • MuCargo package maneja, iyo rust_version ndima yakawedzerwa kune metadata yepakeji, uye iyo "--message-format" sarudzo yakawedzerwa kune "cargo install" murairo.
  • Iyo compiler inoshandisa tsigiro yeCFI (Control Flow Integrity) nzira yekudzivirira, iyo inowedzera macheki isati yasvika imwe neimwe isina kunanga kufona kuti ione mamwe maitiro asina kutsanangurwa maitiro anogona kukonzera kutyorwa kweyakajairwa kuuraya kurongeka (kudzora kuyerera) semhedzisiro kushandiswa kwezvinhu zvinoshandura zvinongedzo zvakachengetwa mundangariro pamabasa.
  • Iyo compiler yakawedzera tsigiro yeshanduro 5 uye 6 yeLLVM yekuvhara yekuenzanisa fomati, inoshandiswa kuongorora kuvharwa kwekodhi panguva yekuyedzwa.
  • Mune iyo compiler, izvo zvinodikanwa zveiyo shoma vhezheni yeLLVM zvinosimudzwa kuLLVM 12.
  • Yechitatu nhanho yerutsigiro ye x86_64-isingazivikanwe-hapana chikuva chaitwa. Chikamu chechitatu chinosanganisira rutsigiro rwekutanga, asi pasina otomatiki kuyedzwa, kushambadza official kuvaka, kana kutarisa kuti kodhi inogona kuvakwa.

Pamusoro pezvo, tinogona kuona kuburitswa neMicrosoft kwekuburitswa kweRust yeWindows 0.30 maraibhurari, ayo anobvumidza iwe kushandisa mutauro weRust kugadzira maapplication eWindows OS. Iyo seti inosanganisira maviri crate mapakeji (mahwindo uye windows-sys), kuburikidza iyo iwe yaunogona kuwana iyo Win API muzvirongwa zveRust. Kodhi yerutsigiro yeAPI inogadzirwa zvine simba kubva kune metadata inotsanangura iyo API, iyo inokutendera iwe kushandisa rutsigiro kwete chete kune iripo Win API mafoni, asi kune mafoni anozoonekwa mune ramangwana. Iyo vhezheni nyowani inowedzera tsigiro yeUWP (Universal Windows Platform) chikuva chechinangwa uye inoshandisa iyo Handle uye Debug mhando.

Source: opennet.ru

Voeg