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

ËshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.57, e cila Ă«shtĂ« bazuar nĂ« projektin Mozilla, por tani Ă«shtĂ« duke u zhvilluar nĂ«n mbikĂ«qyrjen e njĂ« organizate tĂ« pavarur dhe jo-fitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« sigurinĂ« e menaxhimit tĂ« memories, ofron menaxhim automatik tĂ« memories dhe siguron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« tĂ« ekzekutimeve, duke shmangur pĂ«rdorimin e mbledhĂ«sve tĂ« plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazik dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).

Menaxhimi automatik i memories në Rust e shpëton zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbron nga probleme që lindin nga puna në nivel të ulët me memorien, si aksesimi në një zonë të memories pas çlirimit të saj, dereferimi i treguesve nul, dalja jashtë kufijve të buffers dhe të tjerë. Për shpërndarjen e bibliotekave, sigurinë e ndërtimit dhe menaxhimin e varësive, projekti zhvillon menaxherin e pakove Cargo. Për hostimin e bibliotekave, mbështetet repozitari crates.io.

TĂ« rejat kryesore:

  • ËshtĂ« stabilizuar pĂ«rdorimi i makrosĂ« «panic!» nĂ« kontekstet e krijuara gjatĂ« kompilimit, tĂ« tilla si shpalljet «const fn». PĂ«r mĂ« tepĂ«r, pĂ«rveç pĂ«rdorimit tĂ« «panic!» nĂ« shpalljet const, lejohet pĂ«rdorimi i makrosĂ« «assert!» dhe disa API tĂ« tjera tĂ« bibliotekĂ«s standarde. Stabilizimi akoma nuk mbulon gjithĂ« infrastrukturĂ«n e formatimit, prandaj nĂ« formĂ«n aktuale makroja «panic!» mund tĂ« pĂ«rdoret vetĂ«m me stringje statike (panic!(« »)) ose me njĂ« vlerĂ« tĂ« njĂ« ndĂ«rvlerĂ«suar «&str» gjatĂ« vendosjes (panic!(«{}», a)), e cila duhet tĂ« kufizohet nĂ« vendosjen e «{}» pa specifikatorĂ« formatimi dhe tipa tĂ« tjerĂ«. NĂ« tĂ« ardhmen, aplikueshmĂ«ria e makrosĂ«ve nĂ« kontekstet konstante do tĂ« zgjerohen, por mundĂ«sitĂ« e stabilizuara tashmĂ« janĂ« tĂ« mjaftueshme pĂ«r tĂ« kryer verifikime assert nĂ« fazĂ«n e kompilimit: const _: () = assert!(std::mem::size_of::() == 8); const _: () = assert!(std::mem::size_of::() == 1);
  • NĂ« menaxherin e paketave Cargo, lejohet pĂ«rdorimi i profileve me emra tĂ« rastĂ«sishĂ«m, pa u kufizuar nĂ« «dev», «release», «test» dhe «bench». PĂ«r shembull, pĂ«r tĂ« aktivizuar optimizimin gjatĂ« procesit tĂ« lidhjes (LTO) vetĂ«m gjatĂ« krijimit tĂ« montimeve pĂ«rfundimtarĂ« tĂ« produktit, mund tĂ« krijoni njĂ« profil «production» nĂ« Cargo.toml dhe tĂ« shtoni flagun «lto = true». NĂ« kĂ«tĂ« rast, kur pĂ«rcaktoni profilet tuaja, Ă«shtĂ« e nevojshme tĂ« specifikoni njĂ« profil ekzistues nga i cili tĂ« trashĂ«goni cilĂ«simet pĂ«rkatĂ«se. NĂ« shembullin mĂ« poshtĂ« krijohet njĂ« profil «production», i cili plotĂ«son profilin «release» duke shtuar flagun «lto = true». Profili aktivizohet kur thirrni cargo me opsionin «—profile production», dhe artefaktet e ndĂ«rtimit do tĂ« vendosen nĂ« katalogun «target/production». [profile.production] inherits = «release» lto = true
  • Stabilizimi i pĂ«rdorimit tĂ« try_reserve pĂ«r tipet Vec, String, HashMap, HashSet dhe VecDeque, i cili lejon rezervimin paraprak tĂ« hapĂ«sirĂ«s pĂ«r njĂ« numĂ«r tĂ« caktuar elementesh tĂ« tipit tĂ« caktuar pĂ«r tĂ« ulur frekuencĂ«n e operacioneve tĂ« alokimit tĂ« memories dhe pĂ«r tĂ« shmangur pĂ«rfundimin e papritur tĂ« procesit pĂ«r shkak tĂ« mungesĂ«s sĂ« memories.
  • Lejohet pĂ«rdorimi i makrove me kurriza nĂ« shprehje si «m!{ .. }.method()» dhe «m!{ .. }?».
  • Optimizimi i ekzekutimit tĂ« funksioneve File::read_to_end dhe read_to_string Ă«shtĂ« bĂ«rĂ«.
  • MbSupportimi i specifikimit Unicode Ă«shtĂ« pĂ«rditĂ«suar nĂ« versionin 14.0.
  • Numri i funksioneve tĂ« shĂ«nuara si «#[must_use]» Ă«shtĂ« zgjeruar pĂ«r tĂ« dhĂ«nĂ« njĂ« paralajmĂ«rim nĂ« rast tĂ« injorimit tĂ« vlerĂ«s sĂ« kthyer, çka ndihmon nĂ« identifikimin e gabimeve qĂ« lindin nga supozimi se funksioni do tĂ« ndryshojĂ« vlerat, dhe jo tĂ« kthejĂ« njĂ« vlerĂ« tĂ« re.
  • Shtuar njĂ« backend eksperimental pĂ«r gjenerimin e kodit duke pĂ«rdorur libgccjit.
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • [T; N]::as_mut_slice
    • [T; N]::as_slice
    • collections::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • String::try_reserve
    • String::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • Iterator::map_while
    • iter::MapWhile
    • proc_macro::is_available
    • Command::get_program
    • Command::get_args
    • Command::get_envs
    • Command::get_current_dir
    • CommandArgs
    • CommandEnvs
  • TĂ« dhĂ«nat «const», qĂ« pĂ«rcakton mundĂ«sinĂ« e pĂ«rdorimit nĂ« çdo kontekst, nĂ« vend tĂ« konstanteve, aplikohet nĂ« funksionin hint::unreachable_unchecked.
  • ËshtĂ« realizuar niveli i tretĂ« i mbĂ«shtetjes pĂ«r platformat armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi dhe armv7a-kmc-solid_asp3-eabihf. Niveli i tretĂ« nĂ«nkupton mbĂ«shtetje bazĂ«, por pa testim automatizuar, publikim tĂ« ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« sĂ« ndĂ«rtimit tĂ« kodit.

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