ĂshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.68, e cila u zhvillua fillimisht nga projekti Mozilla, por tani Ă«shtĂ« nĂ«n mbĂ«shtetje tĂ« njĂ« organizate tĂ« pavarur jo-fitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« sigurimin e menaxhimit tĂ« memories dhe ofron mjete pĂ«r arritjen e njĂ« paralelizmi tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke u anashkaluar pĂ«rdorimin e mbledhĂ«sit tĂ« plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje tĂ« bibliotekĂ«s 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:
- Në menaxherin e paketave Cargo dhe në repositorin crates.io, është stabilizuar mbështetja për protokollin Sparse, i cili përcakton një mënyrë të re për të punuar me indeksin, i cili pasqyron versionet e disponueshme të të gjitha paketave ekzistuese në repo. Protokolli i ri lejon një rritje të konsiderueshme të shpejtësisë së punës me crates.io dhe zgjidh probleme me shkallëzimin në rritjen e numrit të paketimeve në repo.
Për të reduktuar vonesat që lindin nga ngarkimi i indeksit të plotë, në Sparse, përveç qasjes në indeks me Git, është përdorur shkarkimi direkt përmes HTTPS i vetëm të dhënave të nevojshme të indeksit që mbulojnë varësitë e projektit specifik. Për ofrimin e të dhënave të indeksit është përdorur një shërbim i ri, index.crates.io. Si parazgjedhje, protokolli i ri planifikohet të vendoset në degën Rust 1.70, ndërsa deri në atë kohë, për ta aktivizuar mund të vendosni variablin e ambientit "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" ose të shtoni në seksionin "[registries.crates-io]" të skedarit .cargo/config.toml parametrin 'protocol = "sparse"'.
- ĂshtĂ« shtuar makrosi "pin!", i cili lejon krijimin e njĂ« strukture Pin nga shprehja "T" me njĂ« pĂ«rfiks tĂ« lokalizuar tĂ« gjendjes sĂ« saj (ndryshe nga Box::pin, nuk e alokuar kujtesĂ« nĂ« heap, por kryen lidhjen nĂ« nivelin e stack-ut).
- ĂshtĂ« propozuar njĂ« trajtim i gabimeve nĂ« alokimin e memories, i cili pĂ«rdoret me paketĂ«n standarde alloc. Aplikacionet qĂ« aktivizojnĂ« vetĂ«m alloc (pa std) do tĂ« thĂ«rrasin prej tani e tutje trajtuesin "panic!" kur ndodhin dĂ«shtime tĂ« alokimit tĂ« memories, i cili sipas dĂ«shirĂ«s mund tĂ« kapet me anĂ« tĂ« "#[panic_handler]". Programet qĂ« pĂ«rdorin bibliotekĂ«n std do tĂ« vazhdojnĂ« tĂ« nxjerrin informacion nĂ« lidhje me gabimin nĂ« stderr dhe do tĂ« pĂ«rfundojnĂ« ngjarjen nĂ« mĂ«nyrĂ« emergjente.
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- {core,std}::pin::pin!
- impl From për {f32,f64}
- std::path::MAIN_SEPARATOR_STR
- impl DerefMut për PathBuf
- Shenja "const", e cila përcakton mundësinë e përdorimit në çdo kontekst në vend të konstantave, është aplikuar në funksionin VecDeque::new.
- Për përdorim në platformën Android tani kërkohet të paktën NDK r25 (API 19), pra, versioni minimal i mbështetur të rritet në 4.4 (KitKat).
- ĂshtĂ« realizuar niveli i tretĂ« i mbĂ«shtetjes pĂ«r platformĂ«n Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Niveli i tretĂ« nĂ«nkupton mbĂ«shtetje bazike, por pa teste automatike, publikimin e ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« sĂ« ndĂ«rtimit tĂ« kodit.
Burimi: opennet.ru
