Rust 1.62 programmeringsspråkutgivelse

Utgivelsen av Rust 1.62 generell programmeringsspråk, grunnlagt av Mozilla-prosjektet, men nå utviklet i regi av den uavhengige ideelle organisasjonen Rust Foundation, har blitt publisert. Språket fokuserer på minnesikkerhet og gir midler til å oppnå høy jobbparallellisme samtidig som man unngår bruk av en søppeloppsamler og kjøretid (kjøretiden reduseres til grunnleggende initialisering og vedlikehold av standardbiblioteket).

Rusts minnehåndteringsmetoder sparer utvikleren fra feil ved manipulering av pekere og beskytter mot problemer som oppstår på grunn av minnehåndtering på lavt nivå, for eksempel tilgang til et minneområde etter at det har blitt frigjort, avreferering av null-pekere, bufferoverskridelser, etc. For å distribuere biblioteker, tilby bygg og administrere avhengigheter, utvikler prosjektet Cargo-pakkeansvarlig. Crates.io-depotet støttes for hosting av biblioteker.

Minnesikkerhet er gitt i Rust på kompileringstidspunktet gjennom referansesjekking, holde styr på objekteierskap, holde styr på objektlevetider (scopes), og vurdere riktigheten av minnetilgang under kjøring av kode. Rust gir også beskyttelse mot heltallsoverløp, krever obligatorisk initialisering av variabelverdier før bruk, håndterer feil bedre i standardbiblioteket, bruker konseptet med uforanderlige referanser og variabler som standard, tilbyr sterk statisk skriving for å minimere logiske feil.

Hovedinnovasjoner:

  • Pakkebehandleren "cargo" tilbyr kommandoen "add", som lar deg legge til nye avhengigheter til Cargo.toml-manifestet eller endre eksisterende avhengigheter fra kommandolinjen. Kommandoen lar deg også spesifisere individuelle funksjoner og versjoner, for eksempel: cargo add serde —features derive cargo add nom@5
  • Lagt til muligheten til å bruke "#[derive(Default)]" med enums der standardalternativet er definert ved å bruke "#[default]"-attributtet. #[derive(Standard)] enum Kanskje { #[standard] Ingenting, noe(T), }
  • På Linux-plattformen brukes en mer kompakt og raskere implementering av Mutex-synkroniseringsmekanismen, basert på bruk av futexes levert av Linux-kjernen. I motsetning til den tidligere brukte implementeringen basert på pthreads-biblioteket, bruker den nye versjonen kun 5 byte i stedet for 40 for å lagre Mutex-tilstanden. Tilsvarende har Condvar- og RwLock-låsemekanismene blitt overført til futex.
  • Et andre nivå av støtte for x86_64-unknown-none-målplattformen har blitt implementert, designet for å generere kjørbare filer som kan fungere uten et operativsystem. For eksempel kan den angitte målplattformen brukes når du skriver kjernekomponenter. Det andre støttenivået innebærer en monteringsgaranti.
  • Det tredje nivået av støtte er implementert for aarch64-pc-windows-gnullvm og x86_64-pc-windows-gnullvm-plattformene. Det tredje nivået innebærer grunnleggende støtte, men uten automatisert testing, publisering av offisielle bygg, eller sjekk om koden kan bygges.
  • En ny del av API har blitt flyttet til kategorien stabil, inkludert metodene og implementeringene av egenskaper er stabilisert:
    • bool::så_noen
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl standardverdi for AssertUnwindSafe
    • Fra > for Rc
    • Fra > for Arc<[u8]>
    • FusedIterator for EncodeWide

    Kilde: opennet.ru

Legg til en kommentar