De algemiene programmeertaal Rust 1.63, oprjochte troch it Mozilla-projekt mar no ûntwikkele ûnder auspysjes fan de ûnôfhinklike non-profit organisaasje Rust Foundation, is frijjûn. De taal rjochtet him op ûnthâld feilichheid en jout de middels te berikken hege baan parallelism wylst it foarkommen fan it brûken fan in garbage collector en runtime (runtime wurdt redusearre ta basis inisjalisaasje en ûnderhâld fan de standert bibleteek).
De metoaden foar ûnthâldbehanneling fan Rust besparje de ûntwikkelder fan flaters by it manipulearjen fan oanwizers en beskermje tsjin problemen dy't ûntsteane troch ûnthâldôfhanneling op leech nivo, lykas tagong krije ta in ûnthâldgebiet nei't it befrijd is, it ferwizen fan nul-oanwizers, buffer-oerrin, ensfh. Om bibleteken te fersprieden, builds te leverjen en ôfhinklikens te behearjen, ûntwikkelet it projekt de Cargo-pakketbehearder. It crates.io repository wurdt stipe foar hosting fan bibleteken.
Unthâld feilichheid wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom, byhâlden fan foarwerp lifetimes (omfang), en beoardielje de korrektheid fan ûnthâld tagong by koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.
Wichtichste ynnovaasjes:
- De std :: thread :: scope API tafoege, wêrmei jo scoped threads kinne oanmeitsje. Oars as earder beskikbere diskusjes, lit de nije std :: thread :: scope API it trochjaan fan net-statyske gegevens lienen, wylst diskusjes makke mei de klassike std :: thread :: spawn API ferplichte wiene om alle trochjûne arguminten te besit en koe net ûntfange liende fariabelen. De std :: thread :: scope API soarget derfoar dat alle spawned threads wurde beëinige foardat gegevens wurde weromjûn, en soarget foar adekwate feiligens foar it lienmeganisme.
- Nije wrappertypen foar bestânbeskriuwers binne foarsteld - BorrowedFd en OwnedFd, dy't liening en eigendom leverje. Soarten wurde markearre mei "#[repr(transparant)]", wêrtroch't se direkt kinne wurde brûkt yn eksterne C-bindingen op in eigendomsbewuste manier.
- Foarsjoen fan de mooglikheid om Condvar :: nij, Mutex :: nij en RwLock :: nij te skiljen yn 'e kontekst fan konstanten om globale statyske Mutex, RwLock en Condvar-wearden te meitsjen sûnder lazy_static-pakketten te brûken.
- Foar funksjes lykas fn foo (wearde: T, f: impl Kopiearje) syntaksis lykas "foo ::" is tastien (32, 3)", dy't eksplisyt it type generyk oanjout.
- De oergong nei it brûken fan de NLL (Non-Lexical Lifetimes) technyk om problemen mei lienfariabelen te identifisearjen is foltôge. NLL nimt rekken mei op it nivo fan in set fan oanwizers yn de útfiering flow grafyk, dat makket it mooglik om te fergrutsjen de kwaliteit fan de kontrôle foar lien fariabelen (borrow checker) en tastean de útfiering fan guon soarten fan juste koade, it brûken fan wat earder laat ta in flater. Stipe foar de âlde meganisme dat brûkt leksikaal-nivo lifetime bining is no folslein fuortsmiten fan rustc, en it brûken fan de nije NLL is ymplemintearre troch.
- In nij diel fan 'e API is ferpleatst nei de kategory stabile, ynklusyf de metoaden en ymplemintaasjes fan eigenskippen binne stabilisearre:
- array::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
- Paad :: besykje_bestean
- Ref::filter_map
- RefMut ::filter_map
- NonNull::<[T]>::len
- ToOwned :: clone_into
- Ipv6Addr::to_ipv4_mapped
- unix::io::AsFd
- unix::io::BorrowedFd<'fd>
- unix::io::OwnedFd
- finsters::io::AsHandle
- finsters :: io :: BorrowedHandle
Boarne: opennet.ru
