Rust 1.65 programmeringssprog udgivelse

Det generelle programmeringssprog Rust 1.65, grundlagt af Mozilla-projektet, men nu udviklet i regi af den uafhængige non-profit organisation Rust Foundation, er blevet frigivet. Sproget fokuserer på hukommelsessikkerhed og giver midlerne til at opnå høj jobparallelisme, samtidig med at man undgår brugen af ​​en skraldeopsamler og runtime (runtime reduceres til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Rusts hukommelseshåndteringsmetoder sparer udvikleren for fejl ved manipulation af pointere og beskytter mod problemer, der opstår på grund af hukommelseshåndtering på lavt niveau, såsom adgang til et hukommelsesområde efter det er blevet frigivet, dereferencing af nul-pointere, bufferoverskridelser osv. For at distribuere biblioteker, levere builds og administrere afhængigheder udvikler projektet Cargo Package Manager. Crates.io-lageret understøttes til hosting af biblioteker.

Hukommelsessikkerhed er tilvejebragt i Rust på kompileringstidspunktet gennem referencekontrol, holde styr på objektejerskab, holde styr på objektlevetider (scopes) og vurdere rigtigheden af ​​hukommelsesadgang under kodeudførelse. Rust giver også beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl.

Vigtigste innovationer:

  • Understøttelse af Generic Associated Types (GAT) er blevet tilføjet, hvilket gør det muligt at oprette typealiaser knyttet til en anden type, og tillader typekonstruktører at blive associeret med karaktertræk. egenskab Foo { type Bar<'x>; }
  • "lad ... andet"-udtrykket er implementeret, hvilket giver dig mulighed for at kontrollere mønstertilpasningsbetingelsen direkte inde i "lad"-udtrykket og udføre vilkårlig kode, hvis mønsteret ikke matcher. lad Ok(count) = u64::from_str(count_str) else { panic!("Kan ikke parse heltal: '{count_str}'"); };
  • Det er tilladt at bruge break-sætningen til at afslutte navngivne blokke for tidligt, ved at bruge bloknavnet (label) til at bestemme, hvilken blok der skal afsluttes. lad resultat = 'blok: {do_thing(); if condition_not_met() { break 'blok 1; } gør_næste_ting(); if condition_not_met() { break 'blok 2; } gør_sidste_ting(); 3};
  • Til Linux tilføjede man muligheden for at gemme fejlfindingsoplysninger separat (split-debuginfo), som tidligere kun var tilgængelig for macOS-platformen. Angivelse af "-Csplit-debuginfo=unpacked"-indstillingen vil gemme debuginfo-data i DWARF-format i flere separate objektfiler med filtypenavnet ".dwo". Angivelse af "-Csplit-debuginfo=packed" vil oprette en enkelt pakke i ".dwp"-format, der inkluderer alle debuginfo-data for projektet. For at integrere debuginfo direkte i .debug_*-sektionen af ​​ELF-objekter, kan du bruge "-Csplit-debuginfo=off" muligheden.
  • En ny del af API'et er blevet flyttet til kategorien stabil, inklusive metoder og implementeringer af egenskaber er blevet stabiliseret:
    • std::backtrace::backtrace
    • Indbundet::as_ref
    • std::io::læs_til_streng
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • "const"-attributten, som bestemmer muligheden for at bruge den i enhver sammenhæng i stedet for konstanter, bruges i funktionerne <*const T&>::offset_from og <*mut T>::offset_from
  • Som en del af den sidste fase af overførsel af implementeringen af ​​LSP (Language Server Protocol) protokollen til rust-analyzer, er den forældede implementering af Rust Language Server (RLS) blevet erstattet med en stubserver, der udsender en advarsel, der foreslår at skifte til brug af rust -analysator.
  • Ved kompilering er understøttelse af inline-implementering af MIR-mellemkoden aktiveret, hvilket fremskynder kompileringen af ​​typiske kassepakker med 3-10 %.
  • For at fremskynde planlagte opbygninger sørger Cargo Package Manager for sortering af job, der venter i køen.

Derudover kan et interview om brugen af ​​Rust-sproget hos Volvo til udvikling af komponenter til automotive informationssystemer bemærkes. Der er ingen planer om at omskrive eksisterende og testet kode i Rust, men for ny kode er Rust en af ​​de foretrukne muligheder for at forbedre kvaliteten til en lavere pris. Rustrelaterede arbejdsgrupper er også blevet oprettet i bilforeningerne AUTOSAR (AUTomotive Open System ARchitecture) og SAE (Society of Automotive Engineers).

Derudover talte David Kleidermacher, VP of Engineering hos Google, om Rust-oversættelse af koden, der bruges i Android-platformen til at administrere krypteringsnøgler, samt brugen af ​​Rust i implementeringen af ​​DNS over HTTPS-protokollen, i stakken for UWB-chips (Ultra-Wideband) og i virtualiseringsrammerne (Android Virtualization Framework), der er forbundet med Tensor G2-chippen. Til Android udvikles der også nye stakke til Bluetooth og Wi-Fi, omskrevet i Rust. Den generelle strategi er gradvist at øge sikkerheden, først ved at flytte de mest usikre og vitale softwarekomponenter til Rust og derefter udvide til andre undersystemer, der er forbundet med dem. Sidste år blev Rust inkluderet på listen over tilladte sprog til udviklingen af ​​Android-platformen.

Kilde: opennet.ru

Tilføj en kommentar