Rust 1.46 programmeringsspråkutgivelse

publisert utgivelse 1.46 av systemprogrammeringsspråket Rust, 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 eliminerer feil ved manipulering av pekere og beskytter mot problemer som oppstår fra lavnivå minnemanipulering, som tilgang til et minneområde etter at det har blitt frigjort, null-pekereferanser, bufferoverskridelser, etc. 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:

  • Mulighetene til funksjoner definert ved hjelp av uttrykket "const fn" har blitt utvidet, som ikke bare kan kalles som vanlige funksjoner, men også brukes i enhver kontekst i stedet for konstanter. Disse funksjonene beregnes på kompileringstidspunktet, ikke ved kjøretid, så de er underlagt visse begrensninger, for eksempel muligheten til å lese kun fra konstanter.

    Den nye utgivelsen fjerner forbudet mot å bruke boolske operatorer ("&&" og "||") i slike funksjoner, og tillater bruk av "if", "if let", "match"-konstruksjoner,
    "while", "while let" og "loop", og gir også muligheten til å konvertere til skiver (slice, dynamiske arrays) ved å bruke uttrykket "&[T]". Bruken av disse funksjonene i "const fn"-funksjonene lar deg flytte noen ressurskrevende operasjoner til kompileringsstadiet. For eksempel gjør implementeringen av "const-sha1" det mulig å beregne SHA-1-hasher på kompileringstidspunktet, noe som fører til å øke hastigheten på WinRT-bindinger for Rust med nesten 40 ganger.

  • For å gjøre feilmeldinger mer informative, har støtte for «#[track_caller]»-attributtet blitt stabilisert, noe som er nyttig for funksjoner som unwrap, som kan forårsake panikk hvis typene brukes feil. Det angitte attributtet vil bli brukt av panikkbehandleren for å skrive ut anroperens plassering i en feilmelding.
  • «const»-attributtet, som bestemmer muligheten for å bruke det i enhver kontekst i stedet for konstanter, brukes i std::mem::forget-metoden.
  • En ny del av API har blitt flyttet til den stabile kategorien, inkludert den stabiliserte Option::zip og vec::Drain::as_slice.
  • I pakkeforvalteren Cargo la til støtte for nye miljøvariabler satt ved kompilering av en pakke: CARGO_BIN_NAME (navnet på den resulterende kjørbare filen), CARGO_CRATE_NAME (pakkenavn), CARGO_PKG_LICENSE (lisens spesifisert i manifestet), CARGO_PKG_LICENSE_FILE (bane til lisensfilen).

Kilde: opennet.ru

Legg til en kommentar