Mutauro wehurongwa hwese-chinangwa Rust 1.84, wakavambwa neMozilla purojekiti asi ikozvino wakagadziridzwa pasi perubatsiro rwesangano rakazvimirira rerust Foundation, raburitswa. Mutauro unotarisana nekuchengetedza ndangariro uye unopa nzira dzekuwana yakakwirira basa parallelism uchidzivirira kushandiswa kwemarara uye nguva yekumhanya (nguva yekumhanya inoderedzwa kusvika yekutanga yekutanga uye kugadzirisa raibhurari yakajairwa).
Rust's memory yekubata nzira dzinochengetedza mugadziri kubva mukukanganisa kana achibata anonongedzera uye kudzivirira kubva kumatambudziko anomuka nekuda kweakadzika-level ndangariro kubata, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, kudzoreredza null pointer, buffer overruns, nezvimwe. Kugovera maraibhurari, kupa kuvaka uye kugadzirisa zvinotsamira, purojekiti inovandudza Cargo package maneja. Iyo crates.io repository inotsigirwa kuitisa maraibhurari.
Kuchengetedzwa kwendangariro kunopihwa muRust panguva yekuunganidza kuburikidza nekutariswa kwekutarisa, kuchengeta track yemuridzi wechinhu, kuchengeta track yehupenyu hwechinhu (scopes), uye kuongorora iko kurongeka kwekuwana ndangariro panguva yekuita kodhi. Ngura inopawo dziviriro kubva pahuwandu hwekufashukira, inoda kusungirirwa kwekutanga kwemhando dzakasiyana usati washandiswa, inobata zvikanganiso zviri nani muraibhurari yakajairwa, inoshandisa iyo pfungwa yezvisingachinjiki mareferensi uye zvinosiyana nekusarudzika, inopa yakasimba static typing kuderedza zvikanganiso zvine musoro.
Zvitsva zvikuru:
- Iyo Cargo package maneja ine yakagadzikana yekutsamira yekugadzirisa magadzirirwo ayo anosarudza shanduro dzezvinhu zvinotsamira zvichifunga kuenderana neshanduro dzeRust compiler yakaziviswa seyakatsigirwa zvishoma nepurojekiti (MSRV, Minimum Inotsigirwa Rust Version). Ichi chitsva chinobvisa kudiwa kwevanochengetedza kuti vasarudze nemaoko mavhezheni echinyakare ega ega ekutsamira mumapurojekiti anoramba achienderana neshanduro dzekare dzeRust toolkit. Iyo nyowani yekutsamira kugadzirisa modhi inogoneswa nekusarudzika muRust 1.85 kuburitswa, asi parizvino iripo senge sarudzo inogona kugoneswa nekutsanangura 'incompatible-rust-versions = "mu"[resolver]" chikamu che ". cargo/config.toml" file. fallback"'.
- Tatanga kushandura compiler kuita rudzi rutsva rwe solver, rakagadzirirwa kuyedza miganhu yekushanda kwehunhu, normalize mhando, uye kuongorora kuenderana kwemhando. Mushanduro 1.84, mugadziri mutsva anoshandiswa kutarisa kuenderana kwemaitiro ekuita, i.e. kuongorora kuvepo kweakawanda hunhu hwemhando iri mubvunzo, uchifunga nezve kodhi kubva kune mamwe crate mapakeji. Cheki iyi yakatibvumira kubvisa matambudziko mukushandiswa kwemhando yekare iyo inogona kukonzera kukakavara nekuda kwekusangana kwemhando dzakasiyana dzekuita.
- A API nyowani "Strict Provenance" yakatsanangurwa, iyo inogona kushandiswa kushandura chinongedzo kuita nhamba uye kumashure, uchifunga nezve metadata yakanamirwa kune pointer ine ruzivo nezve kwayakabva uye nzvimbo yekushandiswa (pamwe ne iyo kero, iyo "provenance" kukosha yakasungirirwa kune chinongedzo neruzivo nezve kubatana nemamwe anongedzo , izvo zvinokutendera kuti uone kuti kupi uye riini chinongedzo chinogona kuwana ndangariro). Kana uchikanda chinongedzo kune nhamba uye kumashure, maitiro asina kutsanangurwa anoitika nekuda kwekunetseka kwekutevera kwakabva kunongedza. Iyo API nyowani inobvumidza iwe kuita yakaderera-level pointer mashandiro, sekuchengeta rumwe ruzivo mune yakaderera-odha mabhiti einongedza, pasina kukanda chinongedzo kune nhamba.
- Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
- Ipv6Addr::is_unique_local
- Ipv6Addr::is_unicast_link_local
- musimboti::ptr::with_exposed_provenance
- musimboti::ptr::with_exposed_provenance_mut
- ::add
- ::expose_provenance
- ::pamwe_addr
- ::map_addr
- ::isqrt
- ::checked_isqrt
- ::isqrt
- NonZero::isqrt
- musimboti::ptr::without_provenance
- musimboti::ptr::without_provenance_mut
- musimboti::ptr::dangling
- musimboti::ptr::dangling_mut
- Pin::as_deref_mut
- Chiratidzo che "const" chinoshandiswa mumabasa:
- AtomicBool::from_ptr
- AtomicPtr::from_ptr
- AtomicU8::kubva_ptr
- AtomicU16::kubva_ptr
- AtomicU32::kubva_ptr
- AtomicU64::kubva_ptr
- AtomicUsize::from_ptr
- AtomicI8::kubva_ptr
- AtomicI16::kubva_ptr
- AtomicI32::kubva_ptr
- AtomicI64::kubva_ptr
- AtomicIsize::from_ptr
- ::is_null
- ::se_ref
- ::as_mut
- Pini ::itsva
- Pini::itsva_isina kutariswa
- Pini::tora_ref
- Pin::mu_ref
- Pin::get_mut
- Pin::wana_unchecked_mut
- Pini::static_ref
- Pini::static_mut
- Tsigiro yeassembler inline inoisa ye s390x uye Arm64EC zvivakwa zvakadzikamiswa.
- Tsigiro yeakawanda, mareferensi-mhando uye muswe-kufona mashandiro akagadziriswa kune iyo WebAssembly chinangwa chikuva.
- Yechipiri nhanho yekutsigira iyo wasm32v1-hapana chikuva chaitwa. Chikamu chechipiri chekutsigira chinosanganisira vimbiso yegungano.
Pamusoro pezvo, mapurojekiti akati wandei ane hukama neRust anogona kucherechedzwa:
- Kuburitswa kweiyo Tock 2.2 inoshanda sisitimu, yakanyorwa mumutauro weRust uye ine chinangwa chekushandiswa mune microcontrollers, yakaburitswa. Iyo sisitimu inobvumira kuitiswa panguva imwe chete yeakawanda asina kuvimbika maapplication pamidziyo yakamisikidzwa ine mashoma RAM saizi, senge sensors, TPM (Trusted Platform Module), echokwadi makiyi fobs uye zvinopfekeka zvishandiso. Mapuratifomu ane microcontrollers akavakirwa paARM Cortex-M uye RISC-V zvivakwa zvinotsigirwa. Chinhu chakakosha cheTock ndiko kuparadzaniswa kwechishandiso, kernel uye mutyairi mataira, pamwe nekuparadzaniswa kwega yega application uye mutyairi zvakasiyana. Isolation inoshandisa zvese kugona kweRust mutauro uye kupatsanura padanho rekuchengetedza ndangariro.
- Iyo VEKOS (Verified Experimental Kernel OS) chirongwa chinogadzira sisitimu yekushandisa kernel mumutauro weRust, iyo inopa humbowo hwezvinhu zvinogoneka. Kune yega yega faira system mashandiro, kugadzirwa kwemaitiro, uye kugoverwa kwendangariro, chiratidzo chekrisptographic chinogadzirwa chinobvumira kuti kushanda kuonekwe panguva yekuurayiwa (kuita kunofananidzwa nekushandisa blockchain kuratidza zviito muhurongwa hwekushandisa). MuVKFS faira system, kuve nechokwadi chekutendeseka uye kuchengetedzwa kubva pakukanganisa retroactive, iyo Merkle Tree chimiro inoshandiswa, rimwe nerimwe bazi rinoona ese ari pasi pematavi uye node, nekuda kwemuti hashing. Memory allocation inoitwa muCOW (Copy-On-Write) mode.
- Boka revatsvagiri kubva kuMicrosoft neInria riri kugadzira chidimbu chemutauro weC, Mini-C, chakagadzirirwa kushandura otomatiki zvirongwa zveC kuita Rust inomiririra. Kusiyana neiyo c2rust compiler, iyo nyowani purojekiti inokutendera iwe kugadzira Rust kodhi pasina kushandisa isina kuchengetedzeka, asi yakanangana nekushandura mapurojekiti eC ane humbowo hwechokwadi hwekuvimbika. Zvazvinoreva ndezvekuti zvichave nyore kutanga washandura chirongwa cheC kuMini-C chinomiririra chisingatenderi masvomhu pane kunyora patsva mabhuroko asina kuchengetedzeka mushure mekunyora zvakananga kubva kuC kuenda kuRust.
Iyo compiler kuita yakavakirwa paKaRaMeL toolkit. Mini-C yakagadzirwa uye yakaedzwa sechikamu chepurojekiti yekunyorazve HACL* cryptographic library muRust, iyo yakapihwa humbowo hwekuvimbika. Humbowo hwakafanana hwakashandiswa kuratidza kugona kugadzira yakachengeteka Rust kodhi kubva kuMini-C.
- Daniel Stenberg, munyori weiyo curl utility, akazivisa kuti chirongwa cheCurl hachichavandudza uye kuchengetedza imwe HTTP backend yakanyorwa muRust uchishandisa iyo Hyper library. Chikonzero chakapihwa kushaikwa kwekufarira kune vanogadzira uye vashandisi.
- Kuburitswa kwebeta kwehove 4.0 yekuraira shell, yakanyorwazve muRust, yakaziviswa. Zvinocherechedzwa kuti mushure memakore maviri ebudiriro, iyo Hove codebase yakatamiswa zvachose kubva kuC ++ kuenda kuRust. Shanduko kuenda kuRust yakatibvumira kugadzirisa matambudziko nekuverenga akawanda, kuwana maturusi emazuva ano anoona zvikanganiso padanho rekubatanidza, kuvandudza kuchengetedzwa kwendangariro, uye kuita kuti chirongwa chiwedzere kukwezva kune vanogadzira vatsva.
- Iyo Tor Project yakaburitsa kuburitswa kweArti 1.3.2, imwe nzira yekuitwa kweTor mutengi muRust. Arti inopa raibhurari inosungirirwa iyo inogona kushandiswa neakasiyana maapplication. Paunenge uchigadzira Arti, ruzivo rwekare mukugadzira Tor rwakatariswa kuitira kudzivirira zvinozivikanwa matambudziko ekuvaka uye kuita kuti chirongwa chiwedzere modular uye inoshanda. Bazi re 1.x rinomakwa serinokodzera kushandiswa nevashandisi vese uye rinopa mwero wakafanana wekuvanzika, usability, uye kugadzikana sekuitwa kukuru kweC. Iyo vhezheni nyowani inoenderera mberi nekuvandudzwa kweRPC, gadziriro dzakaitwa dzekushandisa relay rutsigiro, uye dziviriro kubva kuDoS kurwiswa paOnion masevhisi yakawedzerwa.
- Kuburitswa kweinjini yeBevy 0.15, yakanyorwa muRust, yakaburitswa. Iyo injini inoshandisa iyo Data Driven modhi yekutsanangura mutambo logic, yakavakirwa pamusoro peseti yeakagadzirira-yakagadzirwa Bevy ECS (Entity Component System) zvikamu zvinogona kuitwa zvakafanana. Inotsigira 2D uye 3D kupa, skeletal animation, kupa tsananguro yegirafu, chiitiko chizvarwa system, mushandisi interface chimiro, kuita shanduko kune zviratidziro nezviwanikwa pasina chikonzero chekutangazve.
- Iyo console text editor Helix 25.01 yakaburitswa, yakanyorwa muRust uye nekuwedzera mazano arimo muvim uye neovim. Inotsigira kubatanidzwa nemaseva eLSP uye Tree-sitter, kusarudzwa panguva imwe chete yezvivharo zvakawanda, kushandiswa kwemavara akawanda pakugadzirisa, zvinyorwa, uye DAP (Debug Adapter Protocol) debugging protocol.
- Iyo Servo browser injini, yakanyorwa muRust, yakawedzera tsigiro yerima dhizaini modhi. Saizi yeServoShell browser yakaderedzwa ne20%. Tsigiro yekutsanangurwa kwewebhu yakawedzerwa kusvika pakukwanisa kupinda nekuverenga mameseji muDiscord (kutumira mameseji hakusati kwaita).
- Mozilla yakaunza Uniffi yeReact Native toolkit yekugadzira mamodule eReact Native mumutauro weRust.
- Kuita kwePNG mifananidzo encoders kwakaedzwa. Rust decoder (png, zune-png, wuffs) yakave nekukasira kupfuura C decoder (libpng, spng, stb_image). Semuenzaniso, crate png package (image-rs) yakapfuura libpng neka 1.8 pane x86 system uye 1.5 nguva paArM system. mufananidzo-rs: 375.401 MP/s (avhareji) 318.632 MP/s (geomean) zune-png: 376.649 MP/s (avhareji) 302.529 MP/s (geomean) wuffs: 376.205 MP/s 287.181 MP208.906/173.034 (avhareji. geomean) libpng: 299.515 MP/s (avhareji) 235.495 MP/s (geomean) spng: 234.353 MP/s (avhareji) 171.505 MP/s (geomean) stb_image: XNUMX MP/s (avhareji) XNUMX MP/s (avhareji) XNUMX MP/s
Source: opennet.ru
