Ăshte publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.63, e cila Ă«shtĂ« zhvilluar nga Mozilla dhe tani zhvillohet nĂ«n mbĂ«shtetje tĂ« organizatĂ«s jofitimprurĂ«se Rust Foundation. Gjuha fokusohet nĂ« sigurinĂ« e menaxhimit tĂ« memories dhe ofron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« pa pĂ«rdorur mbledhĂ«sin e mbetjeve dhe runtime (runtime pĂ«rfshin vetĂ«m inicializimin themelor dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).
Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.
Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.
TĂ« rejat kryesore:
- Shtuar API std::thread::scope, e cila lejon krijimin e fijeve të lidhura me fushën e dukshmërisë (Scoped threads). Ndryshe nga fijet e mëparshme, API i ri std::thread::scope lejon kalimin e të dhënave të huazuara (borrowing) që nuk janë statike, ndërsa fijet e krijuara me API klasik std::thread::spawn duhej të zotëronin të gjitha argumentet e kaluara dhe nuk mund të merrnin variablat e huazuara. API std::thread::scope garanton që çdo fije e krijuar do të përfundojë para se të kthehen të dhënat, duke siguruar një nivel të duhur sigurie për mekanizmin e huazimit.
- Propozuar tipe tĂ« reja pĂ«r skedarĂ«t e descriptorĂ«ve â BorrowedFd dhe OwnedFd, qĂ« ofrojnĂ« huazim dhe zotĂ«rim. TĂ« dyja tipet janĂ« tĂ« shĂ«nuara me «#[repr(transparent)]», duke lejuar pĂ«rdorimin e drejtpĂ«rdrejtĂ« nĂ« lidhjet C pĂ«r tĂ« pasur parasysh zotĂ«rimin.
- E mundësuar thirrjen e Condvar::new, Mutex::new dhe RwLock::new në kontekstin e konstantave për krijimin e vlerave statike globale Mutex, RwLock dhe Condvar pa përdorur paketa si lazy_static.
- Për funksionet e tipit fn foo<T>(value: T, f: impl Copy) është lejuar përdorimi i sintaksës «foo::<u32>(3, 3)», duke e treguar qartë tipin e gjenerikëve.
- Përfunduar kalimi në përdorimin e teknikës NLL (Non-Lexical Lifetimes) për identifikimin e problemeve me huazimin e variablave. NLL mbikëqyr në nivelin e grupit të treguesve në grafikun e ekzekutimit, duke lejuar rritjen e cilësisë së verifikimit të huazimit të variablave (borrow checker) dhe duke lejuar ekzekutimin e disa llojeve të kodit të saktë që më parë çonin në gabime. Mbështetje për mekanizmin e vjetër, që përdorte lidhjen e jetës në nivel leksik, është eliminuar plotësisht nga rustc, dhe përdorimi i NLL të ri është implementuar gjithandej.
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- 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
- Path::try_exists
- 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
- windows::io::AsHandle
- windows::io::BorrowedHandle
Burimi: opennet.ru
