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

U publikua versioni i gjuhës së programimit të përgjithshëm Rust 1.58, i bazuar në projektin Mozilla, por tani zhvillohet nën mbështetje të organizatës së pavarur jo-fitimprurëse Rust Foundation. Gjuha është e fokusuar në sigurinë e menaxhimit të memories, ofron menaxhim automatik të memories dhe siguron mjete për arritjen e paralelizmit të lartë në ekzekutimin e detyrave, pa përdorur mbledhës plehrash dhe runtime (runtime përfshin vetëm inicializimin bazë 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:

  • NĂ« blloqet e formatimit tĂ« vargjeve, pĂ«rveç mundĂ«sisĂ« tashmĂ« tĂ« disponueshme pĂ«r zĂ«vendĂ«simin e variablave tĂ« pĂ«rmendur shprehimisht pas vargut sipas numrit dhe emrit, Ă«shtĂ« implementuar mundĂ«sia e zĂ«vendĂ«simit tĂ« identifikatorĂ«ve tĂ« rastĂ«sishĂ«m duke shtuar nĂ« varg shprehjet «{identifikator}». Shembuj: // MĂ« parĂ« pĂ«rdoreshin ndĂ«rtimet: println!(«Hello, {}!», get_person()); println!(«Hello, {0}!», get_person()); println!(«Hello, {person}!», person = get_person()); // tani mund tĂ« specifikohet let person = get_person(); println!(«Hello, {person}!»);

    Identifikatorët gjithashtu mund të specifikohen direkt në parametrat e formatimit. let (width, precision) = get_format(); for (name, score) in get_scores() { println!(«{name}: {score:width$.precision$}»); }

    Zëvendësimi i ri punon në të gjitha makros që mbështesin përcaktimin e formatit të vargjeve, përveç makros «panic!» në versionet e gjuhës Rust 2015 dhe 2018, ku panic!(«{ident}») trajtohet si një varg i zakonshëm (në Rust 2021 zëvendësimi funksionon).

  • PĂ«rfaqĂ«simi i strukturĂ«s std::process::Command Ă«shtĂ« ndryshuar nĂ« platformĂ«n Windows, e cila gjatĂ« ekzekutimit tĂ« komandave pĂ«r arsye sigurie nuk kĂ«rkon mĂ« skedarĂ«t ekzekutues nĂ« katalogun aktual. Katalogu aktual Ă«shtĂ« pĂ«rjashtuar pasi mund tĂ« pĂ«rdoret pĂ«r tĂ« organizuar ekzekutimin e kodit nga njĂ« sulmues nĂ« rast se programet ekzekutohen nĂ« katalogĂ« tĂ« pa besueshĂ«m (CVE-2021-3013). Logjika e re e pĂ«rcaktimit tĂ« skedarĂ«ve ekzekutues parashikon kĂ«rkimin nĂ« katalogĂ«t Rust, nĂ« katalogun e aplikacionit, katalogun sistemik tĂ« Windows dhe katalogĂ«t e specifikuar nĂ« variablin mjedisor PATH.
  • NĂ« bibliotekĂ«n standarde Ă«shtĂ« zgjeruar numri i funksioneve tĂ« shĂ«nuara me «#[must_use]» pĂ«r tĂ« ofruar paralajmĂ«rime nĂ« rast se vlera e kthyer injorohet, duke ndihmuar nĂ« identifikimin e gabimeve qĂ« shkaktohen nga supozimi se funksioni do tĂ« ndryshojĂ« vlerat, e jo tĂ« kthejĂ« njĂ« vlerĂ« tĂ« re.
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
    • Metadata::is_symlink
    • Path::is_symlink
    • {integer}::saturating_div
    • Option::unwrap_unchecked
    • Result::unwrap_unchecked
    • Result::unwrap_err_unchecked
  • Karakteristika «const», qĂ« pĂ«rcakton mundĂ«sinĂ« e pĂ«rdorimit nĂ« çdo kontekst nĂ« vend tĂ« konstantave, Ă«shtĂ« aplikuar nĂ« funksionet:
    • Duration::new
    • Duration::checked_add
    • Duration::saturating_add
    • Duration::checked_sub
    • Duration::saturating_sub
    • Duration::checked_mul
    • Duration::saturating_mul
    • Duration::checked_div
  • Lejohet dereferencimi i treguesve «*const T» nĂ« kontekste «const».
  • NĂ« menaxherin e paketave Cargo Ă«shtĂ« shtuar njĂ« fushĂ« rust_version nĂ« metadatĂ«n e paketĂ«s, dhe nĂ« komandĂ«n «cargo install» Ă«shtĂ« shtuar opsioni «—message-format».
  • Compileri pĂ«rmban mbĂ«shtetje pĂ«r mekanizmin e mbrojtjes CFI (Control Flow Integrity), i cili shton njĂ« kontroll para çdo thirrjeje tĂ« drejtpĂ«rdrejtĂ« tĂ« funksionit pĂ«r tĂ« identifikuar disa forma tĂ« sjelljes sĂ« paqartĂ« qĂ« potencialisht mund tĂ« çojnĂ« nĂ« shkeljen e rendit normal tĂ« ekzekutimit (control flow) si rezultat i pĂ«rdorimit tĂ« eksploitĂ«ve qĂ« ndryshojnĂ« treguesit e funksioneve tĂ« ruajtur nĂ« memorie.
  • Compileri tani mbĂ«shtet versionet 5 dhe 6 tĂ« formatit coverage-matching LLVM, i pĂ«rdorur pĂ«r tĂ« vlerĂ«suar mbulimin e kodit gjatĂ« testimit.
  • KĂ«rkesat pĂ«r versionin minimal tĂ« LLVM nĂ« compilerin janĂ« rritur nĂ« LLVM 12.
  • Implementohet niveli i tretĂ« i mbĂ«shtetjes pĂ«r platformĂ«n x86_64-unknown-none. Nivelit tĂ« tretĂ« i referohet mbĂ«shtetjes bazike, por pa testim automatizuar, publikimin e ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« pĂ«r ndĂ«rtimin e kodit.

Gjithashtu, mund të theksohet publikimi nga kompania Microsoft i versionit të bibliotekave Rust for Windows 0.30, të cilat e lejojnë përdorimin e gjuhës Rust për zhvillimin e aplikacioneve për sistemin operativ Windows. Në paketë përfshihen dy crate-paketa (windows dhe windows-sys), përmes të cilave mund të aksesoni Win API në programet në gjuhën Rust. Kodi për mbështetje API gjenerohet në mënyrë dinamike nga metadatat që përshkruajnë API, duke lejuar kështu mbështetje jo vetëm për thirrjet ekzistuese të Win API, por edhe për ato që do të shfaqen në të ardhmen. Në versionin e ri është shtuar mbështetje për platformën e synuar UWP (Universal Windows Platform), duke realizuar tipazhet Handle dhe Debug.

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