Rust 1.54 programmeringssprog udgivelse

Udgivelsen af ​​systemprogrammeringssproget Rust 1.54, grundlagt af Mozilla-projektet, men nu udviklet i regi af den uafhængige non-profit organisation Rust Foundation, er blevet offentliggjort. Sproget fokuserer på hukommelsessikkerhed, giver automatisk hukommelsesstyring og giver mulighed for at opnå høj opgaveparallelisme uden brug af en skraldeopsamler eller runtime (runtime reduceres til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Rusts automatiske hukommelseshåndtering eliminerer fejl ved manipulation af pointere og beskytter mod problemer, der opstår fra manipulation af hukommelse på lavt niveau, såsom adgang til en hukommelsesregion, efter at den er blevet frigivet, nul pointer-dereferencer, bufferoverskridelser osv. For at distribuere biblioteker, sikre samling og administrere afhængigheder udvikler projektet Cargo-pakkemanageren. Crates.io-lageret understøttes til hosting af biblioteker.

Vigtigste innovationer:

  • Tilføjet muligheden for at bruge funktionslignende makroer inde i attributter (proceduremæssige makroer og makroer oprettet ved hjælp af makroen "macro_rules!"). Sådanne makroer adskilles fra funktioner ved symbolet "!" efter navnet (makro!(...)) og erstatte makrokildeteksten i stedet for at generere et funktionskald. Kaldning af makroer inden for attributter kan være nyttigt til at inkludere indhold fra andre filer i dokumenterende kommentarer. For at indsætte indholdet af README-filen og resultatet af scriptudførelsen kan du f.eks. angive: #![doc = include_str!("README.md")] #[sti = concat!(env!("OUT_DIR) "), "/generated.rs" )] mod genereret;
  • De indbyggede compilerfunktioner (Intrinsics) til wasm32-platformen er blevet stabiliseret, hvilket muliggør brugen af ​​SIMD-instruktioner i WebAssembly. De fleste funktioner, såsom v128_bitselect, er tilgængelige i "sikker" tilstand, men nogle funktioner, der fungerer med pointere (f.eks. v128_load), forbliver "usikre".
  • Standardbrugen af ​​trinvis kompilering er vendt tilbage, hvilket giver dig mulighed for kun at genopbygge de ændrede dele af koden, hvilket betydeligt kan reducere den tid, det tager at bygge et projekt, når du genkompilerer efter at have foretaget mindre ændringer. Inkrementel kompilering blev deaktiveret i version 1.52.1 på grund af skjulte fejl, der dukkede op efter tilføjelse af en ekstra kontrol for indlæsning af data fra diskcachen.
  • En ny del af API'er er blevet overført til den stabile kategori, inklusive følgende stabiliserede:
      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::partition_point
  • Indstillinger er blevet tilføjet til lasttræet: "—beskær " for at fjerne en pakke fra afhængighedsgrafen, "—dybde" for kun at vise elementer fra et givet indlejringsniveau i afhængighedstræet, "—kanter no-proc- makro" for at skjule afhængigheder af proceduremæssige makroer.

Kilde: opennet.ru

Tilføj en kommentar