Avaldatud on Mozilla projektiga rajatud, kuid nĂŒĂŒdseks sĂ”ltumatu mittetulundusĂŒhingu Rust Foundation egiidi all vĂ€lja töötatud ĂŒldotstarbelise programmeerimiskeele Rust 1.63 vĂ€ljalase. Keel keskendub mĂ€lu ohutusele ja pakub vahendeid töö kĂ”rge paralleelsuse saavutamiseks, vĂ€ltides samal ajal prĂŒgikoguja ja kĂ€itusaja kasutamist (kĂ€itusaeg lĂŒheneb standardse teegi pĂ”hikĂ€ivitamise ja hoolduseni).
Rusti mĂ€lukĂ€sitlusmeetodid sÀÀstavad arendajat osutitega manipuleerimisel esinevate vigade eest ja kaitsevad madala tasemega mĂ€lukĂ€sitluse tĂ”ttu tekkivate probleemide eest, nagu mĂ€lualale juurdepÀÀs pĂ€rast selle vabastamist, nullviidate viitamise tĂŒhistamine, puhvri ĂŒlekoormus jne. Teekide levitamiseks, jĂ€rkude pakkumiseks ja sĂ”ltuvuste haldamiseks arendab projekt Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.
MĂ€lu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiĂ”iguse jĂ€lgimise, objektide eluea (ulatuse) jĂ€lgimise ja mĂ€lule juurdepÀÀsu Ă”igsuse hindamise kaudu koodi tĂ€itmise ajal. Rooste pakub ka kaitset tĂ€isarvude ĂŒletĂ€itumise eest, nĂ”uab muutujate vÀÀrtuste kohustuslikku lĂ€htestamist enne kasutamist, kĂ€sitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.
Peamised uuendused:
- Lisatud std::thread::scope API, mis vÔimaldab luua ulatusega lÔime. Erinevalt varem saadaolevatest lÔimedest vÔimaldab uus std::thread::scope API edastada laenavaid mittestaatilisi andmeid, samas kui klassikalise std::thread::spawn API abil loodud lÔimed pidid omama kÔiki edastatud argumente ja neid ei saanud vastu vÔtta. laenatud muutujad. Std::thread::scope API tagab, et kÔik tekkinud lÔimed lÔpetatakse enne andmete tagastamist, tagades laenamismehhanismile piisava turvalisuse.
- Failideskriptorite jaoks on vĂ€lja pakutud uued ĂŒmbristĂŒĂŒbid â BorrowedFd ja OwnedFd, mis pakuvad laenutamist ja omandiĂ”igust. TĂŒĂŒbid on tĂ€histatud tĂ€hisega "#[repr(transparent)]", mis vĂ”imaldab neid otse kasutada vĂ€listes C-köites omandist teadlikul viisil.
- VÔimalus kutsuda konstantide kontekstis vÀlja Condvar::new, Mutex::new ja RwLock::new, et luua globaalseid staatilisi Mutexi, RwLocki ja Condvari vÀÀrtusi ilma pakette lazy_static kasutamata.
- Funktsioonide jaoks nagu fn foo (vÀÀrtus: T, f: impl Kopeeri) sĂŒntaks nagu "foo::" on lubatud (32, 3)â, mis nĂ€itab selgesĂ”naliselt ĂŒldnimetuse tĂŒĂŒpi.
- Ăleminek NLL-tehnikale (Non-Lexical Lifetimes) muutujate laenutamisega seotud probleemide tuvastamiseks on lĂ”pule viidud. NLL arvestab tĂ€itmisvoo graafikus osutite komplekti tasemel, mis vĂ”imaldab tĂ”sta laenumuutujate kontrollimise kvaliteeti (laenamise kontrollija) ja vĂ”imaldab tĂ€ita teatud tĂŒĂŒpi Ă”iget koodi, mis varem pĂ”hjustas vea. Tugi vanale mehhanismile, mis kasutas leksikaalsel tasemel eluaegset sidumist, on nĂŒĂŒd rustc-st tĂ€ielikult eemaldatud ja uue NLL-i kasutamine on lĂ€bivalt rakendatud.
- API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
- massiiv::from_fn
- Box::into_pin
- BinaryHeap::try_reserve
- BinaryHeap::try_reserve_exact
- OsString::try_reserve
- OsString::try_reserve_exact
- PathBuf::try_reserve
- PathBuf::try_reserve_exact
- Tee::try_exists
- Ref::filter_map
- RefMut::filter_map
- NonNull::<[T]>::len
- Omandatud::clone_into
- Ipv6Addr::to_ipv4_mapped
- unix::io::AsFd
- unix::io::LaenatudFd<'fd>
- unix::io::OwnedFd
- windows::io::AsHandle
- windows::io::LaenatudHandle
Allikas: opennet.ru
