Lëshimi i gjuhës së programimit Rust 1.39.

Publikuar lëshimi i gjuhës së programimit sistemor Rust 1.39, i zhvilluar nga projekti Mozilla. Gjuha fokusohet në punën e sigurt me memorien, ofron menaxhim automatik të memories dhe siguron mjete për të arritur një paralelism të lartë në ekzekutimin e detyrave, pa përdorur mbledhës plehrash apo runtime.

Menaxhimi automatik i memories në Rust përmban zhvilluesit nga manipulimi i treguesve dhe mbron ata nga problemet që lindin për shkak të punës me nivel të ulët me memorien, siç janë qasjet në hapësirën e memories pas lirimit të saj, dereferencimi i treguesve nul, dalja jashtë kufijve të tamponit etj. Për shpërndarjen e biblioteka, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti po zhvillohet menaxher për paketat Cargo, që lejon shfrytëzimin e bibliotekave të nevojshme për programin me një klik. Për vendosjen e bibliotekave, mbështetet repository crates.io.

Ndryshimet kryesore risitë:

  • E stabilizuar Sintaksitë e reja të programimit asinkron, të bazuara në funksionin «async», bllokun async move { … } dhe operatorin «.await», që lehtësojnë shkrimin e trajtuesve që nuk bllokojnë rrjedhën kryesore të komandeve. Në krahasim me API-në e mëparshme për I/O asinkron, strukturat async/.await janë të thjeshta për t'u kuptuar, lexohen lehtë dhe lejojnë realizimin e ndërveprimeve komplekse asinkrone duke përdorur teknika të njohura të menaxhimit të rrjedhës së ekzekutimit bazuar në cikle, operatorë kushtorë dhe përjashtime.

    Sintaksa Async-await lejon krijimin e funksioneve që mund të pezullojnë ekzekutimin e tyre, të kthejnë kontrollin në rrjedhën kryesore dhe pastaj të vazhdojnë ekzekutimin nga vendi ku ishin ndalur. Për shembull, një pezullim i tillë është i nevojshëm gjatë përpunimit të I/O, ku gjatë pritjes për një sasi të re të dhënash mund të kryhen punë të tjera. Funksionet dhe blloqet, të përcaktuara përmes «async fn» dhe «async move», kthejnë një tipazh Të ardhmes, përcakton paraqitjen e llogaritjeve asinkrone të shtyra në të ardhmen. Për të iniciuar drejtpërdrejt një llogaritje të shtyrë dhe për të marrë rezultatin, mund të përdoret operatori «.await». Para thirrjes «.await», nuk realizohet asnjë veprim dhe nuk planifikohet asgjë paraprakisht, duke lejuar krijimin e strukturave të ndërlikuara të ngulitura pa shpenzime shtesë.

    async fn first_function() -> u32 { .. }

    let future = first_function();

    let result: u32 = future.await;

  • E stabilizuar «#![feature(bind_by_move_pattern_guards)]», që lejon përdorimin e variablave me llojin e lidhjes «by-move» në modele dhe përdorimin e referencave për këto variabla në seksionin «if» të shprehjes «përputhje«. Për shembull, tani lejohet ndërtimi i mëposhtëm:

    fn main() {
    let array: Box = Box::new([1, 2, 3, 4]);

    match array {
    nums
    if nums.iter().sum::() == 10

    => {
    drop(nums);
    }
    _ => unreachable!(),
    }
    }

  • Lejohet caktimi atributëve në përcaktimin e parametrave të funksioneve, mbylljeve dhe referencave për funksione. Mbështeten atributet e kompilimit të kushtëzuar (cfg, cfg_attr), që kontrollojnë diagnostikimin përmes lint (allow, warn, deny dhe forbid) dhe atributet ndihmëse për thirrjen e makros.

    fn len(
    #[cfg(windows)] slice: &[u16], // использовать параметр в Windows
    #[cfg(not(windows))] slice: &[u8], // использовать в остальных ОС
    ) -> usize {
    slice.len()
    }

  • Paralajmërimet për problemet e identifikuara gjatë kontrollit të huazimeve të variablave (borrow checker) duke përdorur teknikën NLL (Non-Lexical Lifetimes), u përkthyen në kategori gabimesh fatale. Për t'i rikujtuar, sistemi i kontrollet mbi bazën e mekanizmit të ri të menaxhimit të kohëzgjatjes së huazimeve të variablave lejoi identifikimin e disa problemeve që ishin lënë pa u vënë re nga kodi i vjetër të kontrollit. Duke qenë se shpallja e gabimit për këto kontrolle mund të kishte ndikuar në përputhshmërinë me kodin që kishte funksionuar më parë, fillimisht jepeshin paralajmërime në vend të gabimeve. Tani, gjatë punës në modalitetin Rust 2018, paralajmërimet janë zëvendësuar me gabime. Në versionin e ardhshëm, shpallja e gabimit do të implementohet gjithashtu në modalitetin Rust 2015, që do të lejojë përfundimin e përdorimit të kontrolluesit të vjetër të huazimeve;
  • Shenja «const», që përcakton mundësinë e përdorimit në çdo kontekst në vend të konstantave, është aplikuar për funksionet Vec::new, String::new, LinkedList::new, str::len, [T]::len, str::as_bytes,
    abs, wrapping_abs dhe overflowing_abs;
  • Në rangun e stabilëve është kaluar një grusht i ri API, përfshirë metodat e stabilizuara
    Pin::into_inner, Instant::checked_duration_since dhe Instant::saturating_duration_since;
  • Menaxheri i paketave cargo ka shtuar mundësinë e përdorimit të skedave të konfigurimit me zgjerimin «.toml». Është shtuar mbështetje paraprake për ndërtimin e bibliotekës standarde drejtpërdrejt nga Cargo. Është shtuar flagu «—workspace», i cili zëvendëson flagun e paqartë «—all». Në metadatat është shtuar fusha e re ««, e cila lejon publikimin e varësive duke treguar një etiketë në git dhe numrin e versions. Është shtuar një mundësi testimi «-Ztimings» për gjenerimin e një raporti HTML mbi kohën e ekzekutimit të fazave të ndryshme të përpilimit.publish«, e cila lejon publikimin e varësive duke treguar një etiketë në git dhe numrin e versions. Është shtuar një mundësi testimi «-Ztimings» për gjenerimin e një raporti HTML mbi kohën e ekzekutimit të fazave të ndryshme të përpilimit.
  • Në kompajlerin rustc, mesazhet diagnostike tani përfshijnë prerjen e fundeve të kodit që nuk përputhen në terminal. Është siguruar një mbështetje e tretë për platformat e synuara
    i686-unknown-uefi dhe sparc64-unknown-openbsd. Mbështetjeja e tretë nënkupton mbështetje bazike, por pa testim automatizuar dhe publikim të ndërtimeve zyrtare.

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