ĂshtĂ« publikuar versioni 1.61 i gjuhĂ«s sĂ« programimit tĂ« pĂ«rgjithshĂ«m Rust, qĂ« fillimisht Ă«shtĂ« zhvilluar nga Mozilla, por tani po mbĂ«shtetet nga njĂ« organizatĂ« tĂ« pavarur jo-fitimprurĂ«se, Rust Foundation. Gjuha pĂ«rqendrohet nĂ« sigurinĂ« e menaxhimit tĂ« memories dhe ofron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« nĂ« ekzekutimin e detyrave, pa pĂ«rdorur kolektor mbetjeve dhe runtime (runtime reduktohet nĂ« inicializimin e bazĂ«s 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:
- ĂshtĂ« ofruar mundĂ«sia pĂ«r tĂ« pĂ«rcaktuar kodet e veta tĂ« rikthimit nga funksioni main. Fillimisht, funksioni main nĂ« Rust mund tĂ« kthejĂ« vetĂ«m tipin â()â (unit), i cili gjithmonĂ« tregon njĂ« status tĂ« suksesshĂ«m pĂ«rfundimi, pĂ«rveç nĂ«se programuesi nuk e thĂ«rret shprehimisht funksionin âprocess::exit(code)â. NĂ« Rust 1.26, me ndihmĂ«n e tipit tĂ« paqĂ«ndrueshĂ«m Termination, u ofrua mundĂ«sia pĂ«r tĂ« rikthyer vlera âOkâ dhe âErrâ, qĂ« pĂ«rkojnĂ« me kodet EXIT_SUCCESS dhe EXIT_FAILURE nĂ« programet nĂ« gjuhĂ«n C. NĂ« Rust 1.61, tipi Termination u bĂ« stabil, dhe pĂ«r pĂ«rfaqĂ«simin e kodit specifik tĂ« rikthimit u propozohet njĂ« tip i veçantĂ« ExitCode, i cili abstrahon tipet specifike pĂ«r platformĂ«n tĂ« vlerave tĂ« rikthimit, duke ofruar si konstantet e paracaktuara SUCCESS dhe FAILURE, ashtu dhe metodĂ«n From pĂ«r rikthimin e njĂ« kodi tĂ« rastĂ«sishĂ«m tĂ« rikthimit. use std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(42); } ExitCode::SUCCESS }
- JanĂ« stabilizuar mundĂ«sitĂ« shtesĂ« tĂ« funksioneve tĂ« pĂ«rcaktuara duke pĂ«rdorur shprehjen âconst fnâ, tĂ« cilat mund tĂ« thirren jo vetĂ«m si funksione tĂ« zakonshme, por gjithashtu tĂ« pĂ«rdoren nĂ« çdo kontekst nĂ« vend tĂ« konstantave. KĂ«to funksione llogariten nĂ« fazĂ«n e kompilimit, dhe jo gjatĂ« ekzekutimit, prandaj u vendosen disa kufizime, si leximi i vetĂ«m nga konstantat. NĂ« versionin e ri brenda funksioneve const, janĂ« lejuar operacione themelore me tregues funksionesh (lejohet krijimi, kalimi dhe shndĂ«rrimi i treguesve, por jo thirrja e funksionit pĂ«rmes treguesit); kufizimet e tipizimeve (trait bounds) pĂ«r parametrat e pĂ«rgjithshĂ«m tĂ« funksioneve const, si T: Copy; tipo dinamike tĂ« dispatchuar (dyn Trait); tipet impl Trait pĂ«r argumentet dhe vlerat e rikthimit tĂ« funksionit.
- Deshkruesit e rrjedhjeve Stdin, Stdout dhe Stderr nĂ« std::io tani kanĂ« njĂ« jetĂ«gjatĂ«si statike (ââstaticâ) gjatĂ« bllokimit, e cila lejon pĂ«rdorimin e konstrukcioneve tĂ« tilla si âlet out = std::io::stdout().lock();â me marrjen e deshkruesit dhe vendosjen e bllokimit nĂ« njĂ« shprehje.
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- Pin::static_mut
- Pin::static_ref
- Vec::retain_mut
- VecDeque::retain_mut
- Write për Cursor
- std::os::unix::net::SocketAddr::from_pathname
- std::process::ExitCode
- std::process::Termination
- std::thread::JoinHandle::is_finished
- Karakteristika «const», që përcakton mundësinë e përdorimit në çdo kontekst në vend të konstantave, është aplikuar në funksionet:
- ::offset dhe ::offset
- ::wrapping_offset dhe ::wrapping_offset
- ::add dhe ::add
- ::sub dhe ::sub
- ::wrapping_add dhe ::wrapping_add
- ::wrapping_sub dhe ::wrapping_sub
- ::as_mut_ptr
- ::as_ptr_range
- ::as_mut_ptr_range
Gjithashtu, mund tĂ« theksohet artikulli "Rust: A Critical Retrospective" me njĂ« pĂ«rmbledhje tĂ« pĂ«rshtypjeve pĂ«r gjuhĂ«n Rust pas shkrimit tĂ« 100,000 rreshtave tĂ« kodit gjatĂ« zhvillimit tĂ« njĂ« sistemi operativ mikro-kernel Xous, qĂ« pĂ«rdoret nĂ« firmware. Nga disavantazhet, theksohet sintaksa e vĂ«shtirĂ« pĂ«r tu kuptuar, papĂ«rfundueshmĂ«ria dhe vazhdimi i zhvillimit tĂ« gjuhĂ«s, mungesa e ndĂ«rtimeve tĂ« pĂ«rsĂ«ritshme, çështjet tipike me besueshmĂ«rinĂ« e varĂ«sive nĂ« Crates.io, nevoja pĂ«r ndjekjen e njĂ« disipline tĂ« caktuar pĂ«r tĂ« shkruar kod tĂ« sigurt. Nga mundĂ«sitĂ« qĂ« e kaluan pritshmĂ«rinĂ« pĂ«rmenden mjetet pĂ«r ristrukturimin e kodit dhe rregullimin e âhack-Ă«veâ, tĂ« shtuar gjatĂ« krijimit tĂ« shpejtĂ« tĂ« prototipave.
Burimi: opennet.ru
