Rust 1.93 programming language, yakavambwa neMozilla purojekiti asi iko zvino yakagadziridzwa pasi peiyo yakazvimirira isiri purofiti Rust Foundation, yakaburitswa. Mutauro unotarisana nekuchengetedza ndangariro uye unopa maturusi ekuwana yakakwira kufanana kwekuita basa, uchiita pasina kushandisa muunganidzi wemarara uye nguva yekumhanya (nguva yekumhanya inoderedzwa kuita 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:
- Raibhurari yeMusl standard C, yakavakirwa muRust distribution uye inoshandiswa pakubatanidza static kune "*-linux-musl" target platforms (aarch64-unknown-linux-musl, x86_64-unknown-linux-musl, powerpc64le-unknown-linux-musl, nezvimwewo) pamasystem asina Musl, yakagadziridzwa kuvhezheni 1.2.5. Shanduro yeMusl shoma inotsigirwa yekubatanidza dynamic yawedzerwawo ku1.2.5. Rust yaimboshandisa Musl 1.2.3, iyo yaive nematambudziko nekushandiswa kweDNS resolver. MuMusl 1.2.4, DNS resolver yakagadziridzwa kuti itsigire kutumira TCP query kana chikumbiro cheUDP chikakundikana, izvo zvakagadzirisa dambudziko nekubvunza marekodhi makuru eDNS uye kuvandudza kushandira pamwe nemaDNS servers asingatsigire kudzorera mhedzisiro isina kukwana mumhinduro dzeUDP dzakapfupikiswa. Musl 1.2.5 inoshandisa kugadzirisa mhinduro dzine maCNAME sequences marefu muDNS resolver uye inogadzirisa dambudziko rakakonzera kuti dzimwe mhinduro huru dzakatumirwa pamusoro peTCP dzibviswe.
- Raibhurari yakajairika yakagadzirwazve kugadzirisa matambudziko ekudzoka kwedata ne std::thread_local! macro uye std::thread::current function muma global memory allocators akanyorwa muRust, izvo zvakaita kuti pave nekudzoka kusingaperi. Kudzivirira std::thread_local! uye std::thread::current kuti vasadaidze stir imwe chete yavanoshandiswa pakuedza kugovera memori, ikozvino vanoshandisa zvakananga system memory allocation mechanism.
- Kushandiswa kwe cfg attributes ikozvino kwabvumidzwa mukati memabhuroko e "asm!" ane kodhi yemusangano. Izvi zvinobvumira, semuenzaniso, kudzora kushandiswa kwemaseti emirairo yeCPU akawedzerwa muchirevo chezvirevo zvega zvega mukati me asm block (kare, cfg attributes dzaigona kutsanangurwa chete kune asm block yese). asm!( // kana global_asm! kana naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // inoshandiswa chete pa sse2 );
- Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
- <[ZvichidaUninit ]>::assume_init_drop
- <[ZvichidaUninit ]>::assume_init_ref
- <[ZvichidaUninit ]>::assume_init_mut
- <[ZvichidaUninit ]>::nyora_kopi_ye_chidimbu
- <[ZvichidaUninit ]>::nyora_clone_ye_chidimbu
- Tambo::into_raw_parts
- Vec::into_raw_parts
- ::zvisina kusarudzwa_neg
- ::zvisina kusarudzwa_shl
- ::zvisina kusarudzwa_shr
- ::zvisina kusarudzwa_shl
- ::zvisina kusarudzwa_shr
- <[T]>::as_array
- <[T]>::as_array_mut
- <*const [T]>::as_array
- <*mut [T]>::as_mut_array
- VecDeque::pop_front_if
- VecDeque::pop_back_if
- Nguva::from_nanos_u128
- char::MAX_LEN_UTF8
- char::MAX_LEN_UTF16
- std::fmt::kubva_ku_fn
- std::fmt::KubvaFn
- Puratifomu yakanangwa "riscv64a23-unknown-linux-gnu" yaendeswa padanho rechipiri rekutsigira, iro rinosanganisira vimbiso yekuvaka asi pasina vimbiso yekupasa bvunzo.
Pamusoro pezvo, mapurojekiti akati wandei ane chekuita neRust akakodzera kutaurwa:
- Kune musimboti Linux Hurongwa hweRex huri kugadzirwa, zvichibvumira kugadzirwa kwezvimwe zvinhu zvemukati Linux mumutauro weRust, uyo unogona kushandiswa kuwedzera mashandiro epakati panzvimbo peeBPF. Rex inopa vimbiso dzekuchengetedza dzakafanana nedzeeBPF, asi inoshandisa maficha emutauro waRust uye nguva yekumhanya yakareruka kupa kupatsanurwa uye kuchengetedzeka. Mapurogiramu akadaro haashandise verifier, uye anounganidzwa mukodhi yemuno neRust compiler.
Mapurogiramu eRex anobvumira kushandiswa kwechikamu chidiki chemutauro weRust chinopa vimbiso dzekuchengetedza. Parizvino, kune marudzi mashanu eeBPF mapurogiramu anotsigirwa: kprobe, perf_event, tracepoint, xdp, uye tc. Zvinokwanisika kudana mabasa eBPF helper, kutaurirana nemapuratifomu eBPF map, kugadzirisa zviwanikwa zvekernel, kubata zvisizvo, uye kushandisa wrappers uye abstractions pamusoro pemapuratifomu ekernel.
- Fjall 3, chitoro che key-value chakanyorwa muRust, chave kuwanikwa. Data rinochengetwa muchimiro chelog uchishandisa muti weLog-Structured-Merge (LSM), wakafanana neRocksDB, uko shanduko dzinonyorwa nekubatanidza data kumagumo kwefaira. BTreeMap-style API inopihwa kuti isvike mudhatabhesi. Zvinhu zvinotsigirwa zvinosanganisira nzvimbo dzemazita, kutsvaga kwemberi nekudzoka, kudzvanywa kwakavakirwa mukati, kutengeserana kunogona kuseria, kuchengetwa kwakasiyana kwemakiyi uye kukosha kwawo kukuru, uye kugadzirisa otomatiki dhatabhesi. Kodhi iyi yakavhurika pasi peApache 2.0 rezinesi.
- Tor Project yakaburitsa Arti 1.9.0, iyo implementation yeRust yeTor toolkit. Kana kodhi yeArti yasvika padanho rinokwanisa kutsiva zvachose C implementation, vagadziri veTor vanoda kuita kuti Arti ive iyo yekutanga Tor implementation uye zvishoma nezvishoma vabvise kuchengetedza C implementation. Shanduro itsva iyi inoramba ichiita mashandiro erelay uye servers madhairekitori (Directory Authority), rutsigiro rwakavandudzwa rwekushanda nemaports akapihwa simba (proxy.socks_listen = "auto"), vakawedzera API yekuedza yekugadzirisa makiyi emabasa eanyoni.
Source: opennet.ru
