Rust 1.43 programmēšanas valodas izlaidums

publicēts sistēmas programmēšanas valodas izlaidums 1.43. rūsa, ko dibināja Mozilla projekts. Valoda koncentrējas uz atmiņas drošību, nodrošina automātisku atmiņas pārvaldību un nodrošina rīkus augsta uzdevumu paralēlisma sasniegšanai, neizmantojot atkritumu savācēju un runtime.

Rust automātiskā atmiņas pārvaldība atbrīvo izstrādātāju no manipulācijām ar rādītāju un aizsargā pret problēmām, kas rodas no zema līmeņa atmiņas manipulācijām, piemēram, pēc brīvas piekļuves atmiņai, nulles rādītāja atsauču, bufera pārtēriņu un tamlīdzīgi. Tiek izstrādāts pakotņu pārvaldnieks, lai izplatītu bibliotēkas, nodrošinātu montāžu un pārvaldītu projekta atkarības. krava, kas ļauj ar vienu klikšķi iegūt programmai nepieciešamās bibliotēkas. Repozitorijs tiek atbalstīts bibliotēku mitināšanai crates.io.

Galvenais jauninājumiem:

  • Makro nodrošina iespēju izmantot elementu fragmentus, lai pārvērstu tos pazīmju (pazīme), implementāciju (impl) vai ārējo bloku kodā. Piemēram:

    makro_noteikumi! mac_trait {
    ($i:item) => {
    iezīme T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Novedīs pie paaudzes:

    iezīme T {
    fn foo() {}
    }

  • Uzlabota primitīvu, atsauču un bināro operāciju tipu noteikšana.
    Piemēram, šādu kodu, kas iepriekš izraisīja kļūdu, tagad varēs kompilēt (Rust tagad pareizi nosaka, ka 0.0 un &0.0 ir jābūt f32 tipam):

    pieņemsim n: f32 = 0.0 + &0.0;

  • Cargo ir pievienots jauns vides mainīgais CARGO_BIN_EXE_{name}, kas tiek iestatīts, veidojot integrācijas testus un ļauj noteikt pilnu ceļu uz izpildāmo failu, kas definēts pakotnes sadaļā “[[bin]]”.
  • Ja priekšrakstos ir atļauts izmantot atribūtus, piemēram, "#[cfg()]".
  • Bibliotēka nodrošina iespēju izmantot saistītās konstantes tieši veselu skaitļu un daļskaitļu tipiem, neimportējot moduli. Piemēram, varat uzreiz uzrakstīt u32::MAX vai f32::NAN, vispirms nenorādot “use std::u32” un “use std::f32”.
  • Pievienots jauns modulis primitīvs, kas atkārtoti eksportē Rust primitīvos tipus, piemēram, ja jums ir jāraksta makro un jāpārliecinās, ka veidi nav paslēpti.
  • Jauna API daļa ir pārcelta uz stabilo kategoriju, tostarp stabilizētā

    Kad::ir_pabeigts,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 un
    iter::vienreiz_ar.

Avots: opennet.ru

Pievieno komentāru