Kutulutsidwa kwa chinenero cha pulogalamu ya Rust 1.51, yomwe inakhazikitsidwa ndi polojekiti ya Mozilla, koma tsopano yapangidwa mothandizidwa ndi bungwe 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:
- Magwiridwe okhudzana ndi kugwiritsa ntchito ma const generics adasankhidwa kukhala chinthu chocheperako (MVP), chopatsa kuwala kobiriwira kuti anthu ambiri azitengera. Ma generics a Const amalola kuphatikizika kwa mitundu pamtengo wokhazikika, mwachitsanzo, kugwiritsa ntchito mikangano yanthawi zonse yotsatiridwa kumitundu ingapo yokhazikika m'malo mwa mitundu kapena moyo wonse. Kuthekera kumeneku kumathandizira kugwiritsa ntchito mitundu yophatikizika-parameterized ndi kuphatikizika popanga mikhalidwe yamagulu amtundu uliwonse, popanda kufunikira kopanga mtundu wosiyana pamitundu iliyonse yovomerezeka kuti muwonetsetse kuti zovomerezeka sizikupitilira.
Kuyambira ndi kutulutsidwa kwapano, magulu amtundu wa "[T; N]" (mtundu wa T ndi kukula N) tsopano ali ndi kuthekera kofotokozera mtundu ndi kukula kwake, pogwiritsa ntchito mitundu yamtundu uliwonse, boolean, kapena mitundu (mitundu yamitundu ndi enum sinagwiritsidwebe). Const generics imathandizira kwambiri kukula kwa library; mwachitsanzo, kuti mugwiritse ntchito gulu lomwe silinamangidwe kumtundu ndi kukula kwake, mutha kufotokoza: struct Array. {// ^^^^^^^^^^^^^^^^^^^^^ tanthauzo la mndandanda wanthawi zonse: [T; LENGTH] // ^^^^^^ ntchito yake }
Akagwiritsidwa ntchito ndi tanthauzo ili, "Array "Wopangayo apanga mtundu wa monomorphic wa Array: struct Array {mndandanda: [u8; [Chithunzi patsamba 32]
- The std::array::IntoIter API, kutengera ma generic okhazikika, yakhazikika. Ndi izo, mutha kupanga obwereza ndi mtengo wamtundu uliwonse: fn main () {let array = [1, 2, 3, 4, 5]; // M'mbuyomu, kuti muwonjezere mtengo, mumayenera kuyimba njira ya .iter() ya chinthu mu array.iter(). copied() {println!(«{}», item); } // Tsopano mutha kutchula chinthu chomwe chili mu std::array::IntoIter::new(array) {println!(«{}», item); }}
- Woyang'anira phukusi la katundu tsopano amathandizira gawo latsopano la Cargo.toml, lomwe lingagwiritsidwe ntchito kuthandizira mtundu wachiwiri wa chosinthira. Wothandizira watsopanoyu amapewa kuphatikizira zinthu zodalira zomwe zalembedwa mu gawo la "[zida]" pomwe kuchita izi sikuli koyenera, monga kuphatikiza kudalira komwe kumafunikira gawo lokhazikika pamapangidwe omangika ndi ma macros, koma amagwiritsa ntchito chinthu chosakhazikika pomaliza.
M'mbuyomu, kuthekera kwa phukusi lotchulidwa kangapo mu graph yodalira adalumikizidwa. Mwachitsanzo, ngati pulojekiti ikuphatikizapo kudalira foo komwe kumatanthawuza mphamvu A ndi B, ndipo phukusili linagwiritsidwa ntchito m'mapaketi ena ndi baz, ndipo bar imadalira foo yokhala ndi mphamvu A, ndipo baz imadalira foo yokhala ndi mphamvu B, ndiye kuti katunduyo angaphatikize izi ndikuphatikiza foo ndi mphamvu A ndi B zothandizidwa. Njira iyi ikhoza kupangitsa kuti kuthekera kothandizidwa ndi kudalira kumasemphana ndi dongosolo lomwe cholinga chake chimapangidwira. Mwachitsanzo, pamene mtundu wa foo wokhala ndi "#![no_std]" unkafunika kugwiritsidwa ntchito pomangidwa ndi "#![no_std]", ndipo foo wokhala ndi "std" anafunika kugwiritsidwa ntchito pomanga build.rs. Potchula solver="2" mu Cargo.toml, woyang'anira phukusi ayesa kuthana ndi mkanganowu moyenera, kulekanitsa dev, host, ndi zodalira zomwe mukufuna.
- Cargo imagwiritsa ntchito njira ya split-debuginfo, yomwe yatchulidwa mu gawo la "[profile]", ndi mbendera yofananira ya "-Csplit-debuginfo=unpacked" mu rustc, zomwe zimapereka njira yatsopano yosungira zambiri za debug, zomwe zimachotsa kufunika koyimbira dsymutil utility ndikufulumizitsa kwambiri njira yomanga ndi zambiri za debug mu macOS.
- "ptr::addr_of!" ndi "ptr::addr_of_mut!" ma macros adakhazikika, kulola kupangidwa kwa zolozera zosasinthika kuminda yosasinthika. gwiritsani ntchito std::ptr; #[repr(packed)] struct Yodzaza {f1: u8, f2: u16, } lolani odzaza = Odzaza {f1: 1, f2: 2}; // &packed.f2 ipanga cholozera chosasinthika, chotsogolera ku khalidwe losadziŵika lolani raw_f2 = ptr::addr_of!(packed.f2); assert_eq!(osatetezeka {raw_f2.read_unaligned()}, 2);
- Gawo latsopano la API lasamutsidwa ku gulu lokhazikika, kuphatikizapo njira zotsatirazi zakhazikika:
- Arc::decrement_strong_count
- Arc::increment_strong_count
- Kamodzi::call_once_force
- Zowoneka:: next_if_eq
- Zowoneka:: next_ngati
- Fufuzani::stream_position
- gulu::IntoIter
- mantha::panic_aliyense
- ptr::addr_wa!
- ptr::addr_of_mut!
- kagawo::dzaza_ndi
- chidutswa::split_inclusive_mut
- chidutswa::split_kuphatikizapo
- chidutswa::strip_prefix
- kagawo::chingwe_chokwanira
- str::split_kuphatikizapo
- kulunzanitsa::OnceState
- ntchito::Wake
- Thandizo la Level 3 lakhazikitsidwa kwa i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32, ndi aarch64_be-unknown-linux-gnu_ilp32 platform. Level 3 imapereka chithandizo chofunikira, koma popanda kuyesa zokha, zomanga zovomerezeka, kapena kutsimikizira zomanga.
Source: opennet.ru
