Rust 1.54 programmeringsspråkutgivelse

Utgivelsen av systemprogrammeringsspråket Rust 1.54, 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:

  • Lagt til muligheten til å bruke funksjonslignende makroer i attributter (prosedyremakroer og makroer opprettet ved hjelp av makroen "macro_rules!"). Slike makroer skilles fra funksjoner ved symbolet "!" etter navnet (makro!(...)) og erstatte makrokildeteksten i stedet for å generere et funksjonskall. Å kalle makroer innenfor attributter kan være nyttig for å inkludere innhold fra andre filer i dokumenterende kommentarer. For å sette inn innholdet i README-filen og resultatet av skriptkjøringen, kan du for eksempel spesifisere: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR) "), "/generated.rs" )] mod generert;
  • De innebygde kompilatorfunksjonene (Intrinsics) for wasm32-plattformen er stabilisert, noe som tillater bruk av SIMD-instruksjoner i WebAssembly. De fleste funksjoner, som v128_bitselect, er tilgjengelige i "sikker" modus, men noen funksjoner som fungerer med pekere (for eksempel v128_load) forblir "usikre".
  • Standardbruken av inkrementell kompilering har returnert, slik at du kun kan bygge om de endrede delene av koden, noe som kan redusere tiden det tar å bygge et prosjekt på nytt etter å ha gjort mindre endringer betydelig. Inkrementell kompilering ble deaktivert i versjon 1.52.1 på grunn av skjulte feil som dukket opp etter å ha lagt til en ekstra sjekk for å laste data fra diskbufferen.
  • En ny del av APIer har blitt overført til den stabile kategorien, inkludert følgende stabiliserte:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partisjonspunkt
  • Alternativer er lagt til lasttreet: "—prune " for å fjerne en pakke fra avhengighetsgrafen, "—depth" for å vise bare elementer av et gitt hekkenivå i avhengighetstreet, "—edges no-proc- makro" for å skjule avhengigheter av prosedyremakroer .

Kilde: opennet.ru

Legg til en kommentar