Lëshimi i gjuhës së programimit Rust 1.61

Ë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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster