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

Publikuar lëshimi 1.47 i gjuhës së programimit sistemor Rust, i bazuar në projektin Mozilla. Gjuha është e fokusuar në punën e sigurt me memorie, siguron menaxhim automatik të memories dhe ofron mjete për arritjen e një paralelizmi të lartë të ekzekutimit të detyrave, ndërsa eviton përdorimin e mbledhësit të mbeturinave dhe runtime (runtime përbakohet në inicializimin bazë dhe mbështetje të bibliotekës standarde).

Menaxhimi automatizuar i memories në Rust e çliron zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbron nga problemet që lindin nga puna e ulët me kujtesën, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers dhe të tjera. Për shpërndarjen e bibliotekave, sigurimin e ndërtimit dhe menaxhimin e varësive, po zhvillohet menaxheri i paketave. Cargo. Për vendosjen e librarive mbështetet një depo crates.io.

Ndryshimet kryesore risitë:

  • ËshtĂ« realizuar mbĂ«shtetje pĂ«r tipazhe pĂ«r arrays me madhĂ«si tĂ« rastĂ«sishme. MĂ« parĂ«, pĂ«r shkak tĂ« pamundĂ«sisĂ« pĂ«r tĂ« pĂ«rcaktuar funksione generike pĂ«r tĂ« gjitha vlerat e plota, biblioteka standarde ofronte mbĂ«shtetje tĂ« integruar pĂ«r tipazhe vetĂ«m pĂ«r array qĂ« nuk kalonin 32 elemente (tipazhet pĂ«r çdo madhĂ«si ishin tĂ« definuara statikisht). FalĂ« krijimit tĂ« funksionalitetit tĂ« gjenerikĂ«ve konstantĂ« («const generics») u krijua mundĂ«sia pĂ«r tĂ« pĂ«rcaktuar funksione generike pĂ«r çdo madhĂ«si array, por ato akoma nuk janĂ« pĂ«rfshirĂ« nĂ« mundĂ«sitĂ« stabile tĂ« gjuhĂ«s, megjithatĂ« janĂ« realizuar nĂ« kompilator dhe tani pĂ«rfshihen nĂ« bibliotekĂ«n standarde pĂ«r tipazhe tĂ« array tĂ« çdo madhĂ«sie.

    Për shembull, kjo konstruktion në Rust 1.47 do të sjellë në daljen e përmbajtjes së array, ndonëse më parë do të kishte rezultuar në një gabim:

    fn main() {
    let xs = [0; 34];

    println!(«{:?}», xs);
    }

  • Sigurohet njĂ« dalje mĂ« e shkurtĂ«r e gjurmĂ«ve (backtrace), tĂ« cilat printohen nĂ« situata jashtĂ«zakonisht. Nga gjurmat pĂ«rjashtohen elemente qĂ« nuk paraqesin interes nĂ« shumicĂ«n e situatave, por mbushin daljen dhe shpĂ«rqendrojnĂ« vĂ«mendjen nga arsyet kryesore tĂ« problemit. PĂ«r tĂ« kthyer gjurmĂ«n e plotĂ« mund tĂ« pĂ«rdoret variabla e ambientit «RUST_BACKTRACE=full». PĂ«r shembull, pĂ«r kodin

    fn main() {
    panic!();
    }

    më parë printohej një gjurmë në 23 etapa, tani ajo do të reduktohet në
    3 etapa, të cilat lejojnë të kapet menjëherë thelbi:

    thread ‘main’ panicked at ‘explicit panic’, src/main.rs:2:5
    stack backtrace:
    0: std::panicking::begin_panic
    at /rustc/d
d75a/library/std/src/panicking.rs:497
    1: playground::main
    at ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    at /rustc/d
d75a/library/core/src/ops/function.rs:227

  • Kompilatorin rustc e ka azhurnuar nĂ« ndĂ«rtimin me pĂ«rdorimin LLVM 11 (Rust pĂ«rdor LLVM si backend pĂ«r gjenerimin e kodit). NĂ« kĂ«tĂ« mĂ«nyrĂ« Ă«shtĂ« ruajtur mundĂ«sia e ndĂ«rtimit me LLVM tĂ« vjetrĂ«ve, deri nĂ« versionin 8, por si parazgjedhje (nĂ« rust-lang/llvm-project) tani pĂ«rdoret LLVM 11. LĂ«shimi i LLVM 11 pritet nĂ« ditĂ«t nĂ« vazhdim.
  • NĂ« platformĂ«n Windows, kompilatori rustc mbĂ«shtet aktivizimin e kontrolleve tĂ« integritetit tĂ« rrjedhĂ«s sĂ« ekzekutimit (Control Flow Guard), aktivizuar pĂ«rmes flagut «-C control-flow-guard». NĂ« platformat e tjera ky flag akoma injorohet.
  • NĂ« kategorinĂ« stabile Ă«shtĂ« pĂ«rkthyer njĂ« grup i ri API-sh, duke stabilizuar
    Ident::new_raw,
    Range::is_empty,
    RangeInclusive::is_empty,
    Result::as_deref,
    Result::as_deref_mut,
    Vec::leak,
    pointer::offset_from,
    f32::TAU dhe
    f64::TAU.
  • Tregu «const», qĂ« pĂ«rcakton mundĂ«sinĂ« e pĂ«rdorimit nĂ« çdo kontekst nĂ« vend tĂ« konstantave, aplikohet nĂ« metodat:
    • i ri pĂ«r tĂ« gjithĂ« tĂ« plotĂ«, pĂ«rveç zeros;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub dhe saturating_mul pĂ«r tĂ« gjithĂ« tĂ« plota;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace dhe is_ascii_control pĂ«r llojet char dhe u8.
  • PĂ«r FreeBSD aktivizuar instrumenti nga FreeBSD 11.4 (FreeBSD 10 nuk mbĂ«shtet LLVM 11).

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