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
