Rust 1.55 programmeringsspråkutgivelse

Utgivelsen av systemprogrammeringsspråket Rust 1.55, grunnlagt av Mozilla-prosjektet, men nå utviklet i regi av den uavhengige ideelle organisasjonen Rust Foundation, er publisert. Språket fokuserer på minnesikkerhet, gir automatisk minnebehandling og gir midler til å oppnå høy oppgaveparallellisme uten å bruke en søppeloppsamler eller kjøretid (kjøretiden reduseres til grunnleggende initialisering og vedlikehold av standardbiblioteket).

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. For å distribuere biblioteker, sikre montering og administrere avhengigheter, utvikler prosjektet Cargo-pakkebehandleren. Crates.io-depotet støttes for hosting av biblioteker.

Hovedinnovasjoner:

  • Cargo-pakkebehandleren har muligheten til å slå sammen dupliserte feil og advarsler som oppstår under en bygging. Når du utfører kommandoer som "lasttest" og "lastsjekk --all-targets" som resulterer i flere bygg av en pakke med forskjellige parametere, får brukeren nå vist et sammendrag av forekomsten av et gjentatt problem, i stedet for å bli vist flere identiske advarsler når du bygger det samme gjentatte ganger. $ cargo +1.55.0 check —all-targets Sjekker foo v0.1.0 advarsel: funksjonen brukes aldri: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note: '#[warn(dead_code)]' på som standard advarsel: 'foo' (lib) genererte 1 advarsel advarsel: 'foo' (lib test) genererte 1 advarsel (1 duplikat) Ferdig dev [uoptimalisert + debuginfo] mål (s) på 0.84 s
  • Flytpunkt-parsing-koden i standardbiblioteket har blitt flyttet for å bruke den raskere og mer nøyaktige Eisel-Lemire-algoritmen, som har løst noen tidligere observerte problemer med avrunding og parsing av tall med svært store tall.
  • Muligheten til å spesifisere ulukkede områder i maler har blitt stabilisert (“X..” tolkes som et område som starter med verdien X og slutter med maksimalverdien for heltallstypen): match x as u32 { 0 => println! ("null!"), 1.. => println!("positivt tall!"), }
  • Utvidede feilvarianter dekket av std::io::ErrorKind (klassifiserer feil i kategorier som NotFound og WouldBlock). Tidligere falt feil som ikke passet inn i eksisterende kategorier inn i kategorien ErrorKind::Other, som også ble brukt for feil i tredjepartskode. Det er nå en egen intern kategori ErrorKind::Uncategorized for feil som ikke passer inn i eksisterende kategorier, og ErrorKind::Other-kategorien er begrenset til feil som ikke forekommer i standardbiblioteket (standard bibliotekfunksjoner som returnerer io::Error ikke lenger bruker ErrorKind:: kategorien Annet).
  • En ny del av API har blitt flyttet til kategorien stabil, inkludert metodene og implementeringene av egenskaper er stabilisert:
    • Bundet::klonet
    • Avløp::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • Kanskje Uninit::assume_init_mut
    • Kanskje Uninit::assume_init_ref
    • Kanskje Uninit::skriv
    • array::map
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandkomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • «const»-attributtet, som bestemmer muligheten for å bruke det i enhver kontekst i stedet for konstanter, brukes i str::from_utf8_unchecked-metoden.
  • Det tredje støttenivået er implementert for powerpc64le-unknown-freebsd-plattformen. Det tredje nivået innebærer grunnleggende støtte, men uten automatisert testing, publisering av offisielle bygg, eller sjekk om koden kan bygges.

Kilde: opennet.ru

Legg til en kommentar