Ulwimi lwenkqubo lweRust 1.95, olwasekwa yiprojekthi yeMozilla kodwa ngoku luphuhliswe phantsi kwenkxaso ye-Rust Foundation ezimeleyo engenzi nzuzo, lukhutshiwe. Ulwimi lujolise ekukhuselweni kwememori kwaye lubonelela ngezixhobo zokuphumeza ukuhambelana okuphezulu kokwenziwa komsebenzi, ngelixa usenza ngaphandle kokusetyenziswa komqokeleli wenkunkuma kunye nexesha lokuqhuba (ixesha lokuqhuba liyancitshiswa ekuqaliseni okusisiseko kunye nokugcinwa kwelayibrari esemgangathweni).
Iindlela zolawulo lwememori zeRust zenzelwe ukususa iimpazamo ekulawuleni i-pointer kunye nokukhusela kwimiba evela kulawulo lwememori olusezantsi, njengokufikelela kwimemori emva kokuba ikhululwe, ukususa ii-null pointers, ukugqithisa kwe-buffer, njl. Le projekthi iphuhlisa umphathi wephakheji yeCargo ukuze asasaze iilayibrari, enze lula ukwakhiwa, kwaye alawule ukuxhomekeka. Indawo yokugcina ii-crates.io igcinelwe iilayibrari ezibamba ii-hosting.
Ukhuseleko lwenkumbulo lubonelelwa kwiRust ngexesha lokudibanisa ngokujongwa kwereferensi, ukugcina umkhondo wobunini bento, ukugcina umkhondo wobomi bento (i-scopes), kunye nokuvavanya ukuchaneka kokufikelela kwimemori ngexesha lokwenziwa kwekhowudi. Umhlwa ukwabonelela ngokhuseleko ngokuchasene nokuphuphuma kwenani elipheleleyo, kufuna ukuqaliswa okunyanzelekileyo kwamaxabiso aguquguqukayo ngaphambi kokusetyenziswa, iphatha iimpazamo ngcono kwithala leencwadi elisemgangathweni, isebenzisa ingqikelelo yeembekiselo ezingenakuguquguquka kunye nezinto eziguquguqukayo ngokungagqibekanga, ibonelela ngochwethezo olomeleleyo ukuze kuncitshiswe iimpazamo ezinengqiqo.
Iinguqulelo eziphambili:
- Kongezwe i-"cfg_select!" macro, engasetyenziswa endaweni yephakheji ye-"cfg-if" ukuphatha iimeko ezininzi zokuhlanganiswa kwisitayile sebhloko "yomdlalo", ngaphandle kokuchaza uthotho lwee-conditionals kunye nolwakhiwo lwe-"#[cfg]". cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* non-unix, 32-bit */ } } _ => { fn foo() { /* not unix kwaye not 32-bit */ } }
- Ubuchule bokuchaza amabinzana athi "ukuba let" ngaphakathi kweebhloko "match" ukwenza ukufanisa ipateni enemiqathango buzinzile. Ngaphambili, inkxaso yokuchaza amabinzana amaninzi athi "let" kusetyenziswa umqhubi we-"&&" yayizinzile kwiibhloko "ukuba" kunye "ngexesha". ixabiso lomdlalo { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
- Inkxaso yokudibanisa ekwi-inline eqinileyo yezakhiwo zePowerPC kunye nePowerPC64.
- Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
- MhlawumbiUninit<[T; N]>: Ukusuka<[MhlawumbiUninit ; N]>
- MhlawumbiUninit<[T; N]>: AsRef<[MhlawumbiUninit ; N]>
- MhlawumbiUninit<[T; N]>: AsRef<[MhlawumbiUninit ]>
- MhlawumbiUninit<[T; N]>: AsMut<[MhlawumbiUninit ; N]>
- MhlawumbiUninit<[T; N]>: AsMut<[MhlawumbiUninit ]>
- [MhlawumbiUninit ; N]: Ukusuka
- Iseli<[T; N]>: AsRef<[Iseli ; N]>
- Iseli<[T; N]>: AsRef<[Iseli ]>
- Iseli<[T]>: AsRef<[Iseli ]>
- bool: TryFrom<{integer}>
- uhlaziyo lwe-AtomicPtr::
- I-AtomicPtr::zama_uhlaziyo
- I-AtomicBool::uhlaziyo
- I-AtomicBool::zama_uhlaziyo
- uhlaziyo lwe-AtomicIn::
- I-AtomicIn::zama_uhlaziyo
- uhlaziyo lwe-AtomicUn::
- I-AtomicUn::zama_uhlaziyo
- khetha i-cfg!
- i-mod core::range
- i-core::range::RangeInclusive
- undoqo::uluhlu::Uluhlu oluBandakanyiweyoIter
- isiseko::icebiso::indlela_ebandayo
- <*const T>::as_ref_engakhangelwanga
- <*mut T>::as_ref_unchecked
- <*mut T>::as_mut_unchecked
- Vec::push_mut
- Vec::insert_mut
- I-VecDeque::push_front_mut
- I-VecDeque::push_back_mut
- I-VecDeque::insert_mut
- Uluhlu oluDibeneyo::push_front_mut
- Uluhlu oluDibeneyo::push_back_mut
- Uyilo::dangling_ptr
- Uyilo::phinda
- Uyilo::luphindaphindiwe_ngokuphindaphindiweyo
- Uyilo::lwandiso_lupakishwe
- Uphawu "const" lusetyenziswa kwimisebenzi:
- fmt::from_fn
- Ulawulo lokuHamba::is_break
- Ulawulo Lokuhamba:: luyaqhubeka
- Kwiinguqulelo ezizinzileyo zesixhobo sezixhobo, inkxaso yokudlulisela iinkcukacha zeqonga leethagethi zemveli kwi-compiler isusiwe.
- Amaqonga e-powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos, kunye ne-aarch64-apple-visionos-sim afuduselwe kwinqanaba lesi-2 lokuxhasa, eliquka isiqinisekiso sokwakha kodwa akukho siqinisekiso sokupasa kwi-test suite.
Ukongeza, singathanda ukugxininisa iiprojekthi kunye neziganeko ezisandula ukwaziswa ezinxulumene neRust:
- I-Canonical ingenise iseva yokubonisa ye-Mir 2.26, ebonelela ngeseti yeelayibrari zokwenza imifanekiso edibeneyo. abancedisi Ngokusekelwe kwiprotocol yeWayland kunye nokubandakanya umsebenzi oqhelekileyo wabaphathi beefestile kunye neeseva zokubonisa, iMir isetyenziswa kwiiprojekthi ezifana neMiracle compositing manager, ishell ye-web kiosk, kunye Ubuntu Indawo yokusebenza yesakhelo kunye neMiriway.
Olu khuphelo lutsha luphawuleka ngokongeza amandla okuphuhlisa izinto kwiRust. Inkqubo engaphantsi yolawulo lokufaka enye, i-evdev-rs, isetyenzisiwe kwiRust, kwaye umsebenzi uqalile kwi-frontend esekwe kwiRust, i-wayland-rs, yeWayland. Utshintsho olungengolweRust kwiMir luquka inkxaso yeenkqubo zeWayland ext_image_copy_capture_v1 kunye ne-input-triggers.
- Ukukhutshwa kokuqala kwe-ayaFlow traffic analyzer, ebhalwe kwiRust kwaye isebenzisa inkqubo engaphantsi kwekernel, kupapashwe. Linux I-eBPF yokuthintela iipakethi zenethiwekhi (i-IPv4/TCP/UDP) kunye neefreyimu ze-Ethernet ezinempembelelo encinci yokusebenza. Ixhasa ukuhlolwa okunzulu kweeprotocol ze-application-layer (L7), ezifana nokukhupha imibuzo ye-TLS SNI kunye ne-DNS xa kuhlalutywa ithrafikhi efihliweyo. Inkqubo igcina itafile yemeko yonxibelelwano lwangoku kwifomathi yeDashMap, igcina imbali kwi-SQLite, kwaye ibuyisela izibalo nge-REST API kwi-Prometheus.
- Ubuchule bokwenza usetyenziso olunemisonto emininzi kulwimi lweRust kusetyenziswa imisebenzi ye-std::thread kunye ne-GPU side buphunyeziwe.
umthombo: opennet.ru
