Rust 1.44 programmeertaal release

gepubliceerd systeem programmeertaal release Roest 1.44, opgericht door het Mozilla-project. De taal richt zich op geheugenveiligheid, biedt automatisch geheugenbeheer en biedt hulpmiddelen voor het bereiken van hoge taakparallelliteit zonder gebruik te maken van een garbage collector en runtime.

Het automatische geheugenbeheer van Rust elimineert fouten bij het manipuleren van pointers en beschermt tegen problemen die voortkomen uit geheugenmanipulatie op laag niveau, zoals toegang tot een geheugengebied nadat het is vrijgegeven, null pointer-dereferenties, bufferoverruns, enz. Er wordt een pakketbeheerder ontwikkeld om bibliotheken te distribueren, de assemblage te garanderen en de afhankelijkheden van het project te beheren. Cargo, zodat u met één klik de bibliotheken kunt verkrijgen die nodig zijn voor het programma. Er wordt een repository ondersteund om bibliotheken te hosten kratten.io.

In de tekst van de aankondiging van de nieuwe release raakten de Rust-ontwikkelaars betrokken bij de politiek en weigerden nadrukkelijk een volledig overzicht van de veranderingen in Rust 1.44 te publiceren als teken van solidariteit met demonstranten tegen politiegeweld, wat aangeeft dat deze kwestie belangrijker is. dan de uitwisseling van technische kennis. Basis innovaties:

  • De Cargo-pakketbeheerder integreert het commando ‘cargo tree’, dat een boomachtige afhankelijkheidsgrafiek weergeeft. Ook toegevoegd is de optie “—duplicates” (“cargo tree -d”), waarmee u afhankelijkheden in verschillende versies van hetzelfde pakket kunt evalueren.

    mdbook v0.3.2 (/Gebruikers/src/rust/mdbook)
    ├── ammoniak v3.0.0
    │ ├──html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [build-afhankelijkheden] │ │ │ └── versie_check v0.1.5
    ...

  • Voor applicaties die niet gebonden zijn aan een std ("#![no_std]"), wordt ondersteuning voor asynchrone programmeertechnieken geïmplementeerd op basis van de "async"-functie, het async move { ... }-blok en de ".await"-operator, die vereenvoudig het schrijven van de hoofdopdrachtstroom van niet-blokkerende handlers.
  • Ondersteuning voor een uitbreidbaar definitieschema voor de modulehiërarchie is aan de parser toegevoegd. De volgende constructie zal bijvoorbeeld geen fout opleveren, ondanks de feitelijke afwezigheid van de module "foo/bar/baz.rs" (de constructie is nog steeds semantisch ongeldig en kan een fout veroorzaken, maar de wijzigingen kunnen worden bekeken en geparseerd op het macro- en voorwaardelijke compilatieniveau):

    #[cfg(FALSE)] mod foo {
    mod-balk {
    mod baz;
    }
    }

  • De rustc-compiler heeft de mogelijkheid toegevoegd om de vlag "-C codegen-units" in incrementele modus te gebruiken. De implementatie van catch_unwind is herwerkt, zodat deze geen invloed heeft op de prestaties als het afwikkelproces is uitgeschakeld en er geen uitzonderingen optreden.
  • Er is niveau 64-ondersteuning geboden voor de platforms aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos en x64_XNUMX-apple-tvos. Het derde niveau omvat basisondersteuning, maar zonder geautomatiseerd testen en publiceren van officiële builds.
  • Een nieuw deel van de API's is overgebracht naar de stabiele categorie, inclusief gestabiliseerd
    PathBuf::with_capacity,
    PathBuf::capaciteit,
    PathBuf::duidelijk,
    PathBuf::reserveren,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Indeling::align_to,
    Indeling::pad_to_align,
    Indeling::matrix en
    Indeling::uitbreiden.

  • Uitgebreide functies van de standaardbibliotheek:
    • Een speciale "vec![]" variant toegevoegd die direct wordt weerspiegeld in Vec::new(), waardoor "vec![]" in context kan worden gebruikt in plaats van constanten.
    • Er is een implementatie (impl) van de eigenschap toegevoegd om::Onfeilbaar te converteren Hachee.
    • OsString implementeert slimme pointers DerefMut и IndexMut, en retourneert "&mut OsStr".
    • Ondersteuning toegevoegd voor Unicode 13.
    • Geïmplementeerd in String Van<&mut str>.
    • IoSlice implementeert de eigenschap Kopiëren.
    • Vec geïmplementeerd Van<[T; N]>.
    • proc_macro::LexError implementeert fmt::Display en Error.
  • Het attribuut “const”, dat de mogelijkheid bepaalt om het in elke context te gebruiken in plaats van constanten, wordt gebruikt in de methoden from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes en to_ne_bytes voor alle typen gehele getallen.
  • Ondersteuning toegevoegd voor het genereren van statische bibliotheken in ".a"-formaat in plaats van ".lib" voor GNU-platforms op Windows.
  • De minimumvereisten voor LLVM zijn verhoogd naar LLVM versie 8.

Bron: opennet.ru

Voeg een reactie