Rust 1.54 programmeertaal release

De release van de systeemprogrammeertaal Rust 1.54, opgericht door het Mozilla-project, maar nu ontwikkeld onder auspiciën van de onafhankelijke non-profitorganisatie Rust Foundation, is gepubliceerd. De taal richt zich op geheugenveiligheid, biedt automatisch geheugenbeheer en biedt de middelen om een ​​hoge taakparallelliteit te bereiken zonder gebruik te maken van een garbage collector of runtime (runtime wordt teruggebracht tot basisinitialisatie en onderhoud van de standaardbibliotheek).

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. Om bibliotheken te distribueren, de assemblage te garanderen en afhankelijkheden te beheren, ontwikkelt het project de Cargo-pakketbeheerder. De kratten.io-repository wordt ondersteund voor het hosten van bibliotheken.

Belangrijkste innovaties:

  • De mogelijkheid toegevoegd om functie-achtige macro's binnen attributen te gebruiken (procedurele macro's en macro's gemaakt met behulp van de macro "macro_rules!"). Dergelijke macro's onderscheiden zich van functies door het symbool “!” achter de naam (macro!(...)) en vervang de brontekst van de macro in plaats van een functieaanroep te genereren. Het aanroepen van macro's binnen attributen kan handig zijn om inhoud uit andere bestanden op te nemen in het documenteren van opmerkingen. Als u bijvoorbeeld de inhoud van het README-bestand en het resultaat van de scriptuitvoering wilt invoegen, kunt u het volgende opgeven: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod gegenereerd;
  • De ingebouwde compilerfuncties (Intrinsics) voor het wasm32-platform zijn gestabiliseerd, waardoor het gebruik van SIMD-instructies in WebAssembly mogelijk is. De meeste functies, zoals v128_bitselect, zijn beschikbaar in de "veilige" modus, maar sommige functies die met pointers werken (bijvoorbeeld v128_load) blijven "onveilig".
  • Het standaardgebruik van incrementele compilatie is teruggekeerd, waardoor u alleen de gewijzigde delen van de code opnieuw kunt opbouwen, waardoor de tijd die nodig is om een ​​project te bouwen bij het opnieuw compileren na het aanbrengen van kleine wijzigingen aanzienlijk kan worden verkort. Incrementele compilatie is uitgeschakeld in release 1.52.1 vanwege verborgen bugs die naar boven kwamen na het toevoegen van een extra controle op het laden van gegevens uit de schijfcache.
  • Een nieuw deel van de API's is overgebracht naar de stabiele categorie, waaronder de volgende gestabiliseerde:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • boog::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partitie_punt
  • Opties toegevoegd aan de vrachtboom: “—snoeien " om een ​​pakket uit de afhankelijkheidsgrafiek te verwijderen, "-diepte" om alleen elementen van een bepaald nestniveau in de afhankelijkheidsboom weer te geven, "-edges no-proc-macro" om procedurele macro-afhankelijkheden te verbergen.

Bron: opennet.ru

Voeg een reactie