Lugha ya programu ya madhumuni ya jumla Rust 1.63, iliyoanzishwa na mradi wa Mozilla lakini sasa imeendelezwa chini ya ufadhili wa shirika huru lisilo la faida la Rust Foundation, imetolewa. Lugha inazingatia usimamizi salama wa kumbukumbu na hutoa njia za kufikia usawa wa juu wa kazi huku ikiepuka matumizi ya mtoaji wa takataka na wakati wa kukimbia (muda wa kukimbia umepunguzwa kuwa uanzishaji wa kimsingi na matengenezo ya maktaba ya kawaida).
Mbinu za utunzaji wa kumbukumbu za kutu huokoa msanidi programu kutokana na hitilafu wakati wa kuendesha viashiria na kulinda dhidi ya matatizo yanayotokea kutokana na utunzaji wa kumbukumbu wa kiwango cha chini, kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa, kuondoa marejeleo ya viashiria visivyofaa, utiririshaji wa bafa, n.k. Ili kusambaza maktaba, kutoa miundo na kudhibiti utegemezi, mradi huunda msimamizi wa kifurushi cha Cargo. Hazina ya crates.io inatumika kwa kupangisha maktaba.
Usalama wa kumbukumbu hutolewa katika Rust wakati wa kukusanya kupitia kukagua marejeleo, kufuatilia umiliki wa kitu, kufuatilia muda wa maisha ya kitu (wigo), na kutathmini usahihi wa ufikiaji wa kumbukumbu wakati wa utekelezaji wa nambari. Kutu pia hutoa ulinzi dhidi ya mafuriko kamili, inahitaji uanzishaji wa lazima wa maadili tofauti kabla ya matumizi, hushughulikia makosa vyema katika maktaba ya kawaida, hutumia dhana ya marejeleo yasiyobadilika na vigeu kwa chaguo-msingi, hutoa uchapaji thabiti wa tuli ili kupunguza makosa ya kimantiki.
Ubunifu kuu:
- std::thread::scope API imeongezwa, ikiruhusu uundaji wa nyuzi za upeo. Tofauti na nyuzi zilizopatikana hapo awali, API mpya ya std::thread::scope inaruhusu kukopa kwa data isiyo tuli, wakati nyuzi zilizoundwa kwa kutumia API ya kawaida ya std::thread::spawn ilibidi kumiliki hoja zote zilizopitishwa na haikuweza kupata vigeu vilivyokopwa. API ya std::thread::scope inahakikisha kwamba nyuzi zozote zilizotolewa zitakoma kabla ya kurejesha data, ikitoa kiwango cha usalama kinachohitajika kwa utaratibu wa kukopa.
- Aina mpya za kuunganisha kifafanuzi cha faili, BorrowedFd na OwnedFd, zinapendekezwa, kutoa ukopaji na umiliki. Aina hizo zimealamishwa kwa "#[repr(transparent)]", na kuziruhusu zitumike moja kwa moja kwenye vifungo vya C vya nje na umiliki.
- Ilitoa uwezo wa kupiga simu Condvar::new, Mutex::new, na RwLock::mpya katika miktadha isiyobadilika ili kuunda maadili tuli ya kimataifa ya Mutex, RwLock, na Condvar bila kutumia vifurushi vya lazy_static.
- Kwa kazi za aina fn foo (thamani: T, f: impl Copy) syntax kama "foo:: inaruhusiwa (3, 3)”, ikionyesha wazi aina ya generic.
- Mpito kwa mbinu ya NLL (Non-Lexical Lifetimes) kwa ajili ya kugundua masuala ya kukopa yenye kutofautiana imekamilika. NLL hufanya uhasibu kwa kiwango cha seti ya viashiria katika grafu ya mtiririko wa utekelezaji, ambayo inaboresha ubora wa kikagua kukopa na inaruhusu utekelezaji wa aina fulani za msimbo sahihi ambao hapo awali ulisababisha makosa. Usaidizi wa utaratibu wa zamani, ambao ulitumia kuunganisha maisha ya lexical, sasa umeondolewa kabisa kutoka kwa rustc, na matumizi ya NLL mpya yametekelezwa kwa ulimwengu wote.
- Sehemu mpya ya API imehamishwa hadi kwa kitengo cha uthabiti, ikijumuisha mbinu na utekelezaji wa sifa zimeimarishwa:
- safu::kutoka_fn
- Kisanduku::kwenye_pini
- BinaryHeap::jaribu_hifadhi
- BinaryHeap::jaribu_hifadhi_haswa
- OsString::jaribu_hifadhi
- OsString::try_reserve_exact
- PathBuf::jaribu_hifadhi
- PathBuf:: try_reserve_exact
- Njia::jaribu_ipo
- Rejea::map_ya_chujio
- RefMut::chujio_map
- NonNnull::<[T]>::len
- Inamilikiwa::clone_into
- Ipv6Addr::to_ipv4_mapped
- unix::io::AsFd
- unix::io::BorrowedFd<'fd>
- unix::io::InayomilikiwaFd
- windows::io::AsHandle
- windows::io::BorrowedHandle
Chanzo: opennet.ru
