Rust 1.46 programmeertaal release

gepubliceerd release 1.46 van de systeemprogrammeertaal Roest, 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.

De belangrijkste innovaties:

  • De mogelijkheden van functies die zijn gedefinieerd met de uitdrukking "const fn" zijn uitgebreid, die niet alleen als reguliere functies kunnen worden aangeroepen, maar ook in elke context kunnen worden gebruikt in plaats van constanten. Deze functies worden berekend tijdens het compileren en niet tijdens runtime. Ze zijn dus onderworpen aan bepaalde beperkingen, zoals de mogelijkheid om alleen van constanten te lezen.

    De nieuwe release heft het verbod op het gebruik van Booleaanse operatoren (“&&” en “||”) in dergelijke functies op, en staat het gebruik van “if”, “if let”, “match” constructies toe,
    "while", "while let" en "loop", en biedt ook de mogelijkheid om te converteren naar slice (slice, dynamische arrays) met behulp van de uitdrukking "&[T]". Door deze functies in de “const fn”-functies te gebruiken, kunt u bepaalde resource-intensieve bewerkingen naar de compilatiefase verplaatsen. De implementatie van "const-sha1" maakt het bijvoorbeeld mogelijk om SHA-1-hashes te berekenen tijdens het compileren, wat ertoe leidt dat WinRT-bindingen voor Rust bijna 40 keer worden versneld.

  • Om foutmeldingen informatiever te maken, is de ondersteuning voor het attribuut “#[track_caller]” gestabiliseerd, wat handig is voor functies zoals uitpakken, wat paniek kan veroorzaken als typen verkeerd worden gebruikt. Het opgegeven attribuut wordt door de paniekbehandelaar gebruikt om de locatie van de beller in een foutmelding af te drukken.
  • Het attribuut “const”, dat de mogelijkheid bepaalt om het in elke context te gebruiken in plaats van constanten, wordt gebruikt in de std::mem::forget-methode.
  • Een nieuw deel van de API is verplaatst naar de stabiele categorie, inclusief de gestabiliseerde Option::zip en vec::Drain::as_slice.
  • In de pakketbeheerder Cargo toegevoegd ondersteuning voor nieuwe omgevingsvariabelen die zijn ingesteld bij het compileren van een pakket: CARGO_BIN_NAME (naam van het resulterende uitvoerbare bestand), CARGO_CRATE_NAME (pakketnaam), CARGO_PKG_LICENSE (licentie gespecificeerd in het manifest), CARGO_PKG_LICENSE_FILE (pad naar het licentiebestand).

Bron: opennet.ru

Voeg een reactie