Rust 1.43 programmeringsspråkutgivelse

publisert utgivelse av systemprogrammeringsspråk Rust 1.43, grunnlagt av Mozilla-prosjektet. Språket fokuserer på minnesikkerhet, gir automatisk minnehåndtering og gir verktøy for å oppnå høy oppgaveparallellisme uten å bruke en søppeloppsamler og runtime.

Rusts automatiske minnebehandling frigjør utvikleren fra pekermanipulasjon og beskytter mot problemer som oppstår fra lavnivå minnemanipulering, for eksempel etterfrie minnetilganger, null-pekerdereferanser, bufferoverskridelser og lignende. En pakkebehandler utvikles for å distribuere biblioteker, sikre montering og administrere avhengigheter av prosjektet. Cargo, slik at du kan få bibliotekene som trengs for programmet med ett klikk. Et depot støttes for å være vert for biblioteker kasser.io.

Den viktigste innovasjoner:

  • Makroer gir muligheten til å bruke fragmenter av elementer for å gjøre dem om til kode for egenskaper (trekk), implementeringer (impl) eller eksterne blokker. For eksempel:

    makro_regler! mac_trait {
    ($i:item) => {
    egenskap T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Vil føre til generasjon:

    egenskap T {
    fn foo() {}
    }

  • Forbedret typedeteksjon av primitiver, referanser og binære operasjoner.
    For eksempel vil følgende kode, som tidligere forårsaket en feil, nå kunne kompileres (Rust bestemmer nå riktig at 0.0 og &0.0 må være av typen f32):

    la n: f32 = 0.0 + &0.0;

  • En ny miljøvariabel CARGO_BIN_EXE_{name} er lagt til Cargo, som settes når du bygger integrasjonstester og lar deg bestemme hele banen til den kjørbare filen som er definert i "[[bin]]"-delen av pakken.
  • Hvis setninger har lov til å bruke attributter som "#[cfg()]".
  • Biblioteket gir muligheten til å bruke tilknyttede konstanter direkte for heltalls- og brøktyper, uten å importere en modul. For eksempel kan du umiddelbart skrive u32::MAX eller f32::NAN uten først å spesifisere "bruk std::u32" og "bruk std::f32".
  • Ny modul lagt til primitiv, som re-eksporterer Rust primitive typer, for eksempel når du skal skrive en makro og sørge for at typene ikke er skjult.
  • En ny del av API-er er overført til stabil-kategorien, inkludert stabiliserte

    Once::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 og
    iter::en gang_med.

Kilde: opennet.ru

Legg til en kommentar