Rust 1.67 programmeertaal release

De release van de algemene programmeertaal Rust 1.67, opgericht door het Mozilla-project, maar nu ontwikkeld onder auspiciën van de onafhankelijke non-profitorganisatie Rust Foundation, is gepubliceerd. De taal is gericht op geheugenveiligheid en biedt de middelen om een ​​hoog parallellisme te bereiken bij het uitvoeren van taken, terwijl het gebruik van een garbage collector en runtime wordt vermeden (runtime wordt beperkt tot basisinitialisatie en onderhoud van de standaardbibliotheek).

De geheugenbeheertechnieken van Rust bevrijden de ontwikkelaar van pointermanipulatiefouten en beschermen tegen problemen die voortkomen uit geheugenmanipulatie op laag niveau, zoals after-free toegang, null pointer-dereferenties, bufferoverruns en dergelijke. 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.

Geheugenveiligheid wordt in Rust afgedwongen tijdens het compileren door middel van referentiecontrole, het volgen van objecteigendom, overweging van de levensduur van objecten (scoping) en evaluatie van geheugentoegang tijdens runtime. Rust biedt ook bescherming tegen overflows van gehele getallen, vereist dat variabelewaarden vóór gebruik worden geïnitialiseerd, heeft een betere foutafhandeling in de standaardbibliotheek, gebruikt standaard het concept van onveranderlijke referenties en variabelen en biedt sterke statische typering om logische fouten te minimaliseren.

Belangrijkste innovaties:

  • Voor asynchrone functies met Future::Output is het nu mogelijk om "#[must_use]"-annotaties op te geven die een waarschuwing bevatten als de geretourneerde waarde wordt genegeerd, wat helpt bij het identificeren van fouten die worden veroorzaakt door de aanname dat de functie de waarden zal veranderen in plaats van een nieuwe waarde terug te geven. #[must_use] async fn bar() -> u32 { 0 } async fn beller() { bar().await; } waarschuwing: ongebruikte uitvoer van future geretourneerd door `bar` die moet worden gebruikt —> src/lib.rs:5:5 | 5 | bar().wachten; | ^^^^^^^^^^^ | = opmerking: `#[warn(unused_must_use)]` standaard ingeschakeld
  • De implementatie van FIFO-wachtrijen std::sync::mpsc (multi-producer single-consumer) is bijgewerkt, waarbij is overgeschakeld naar het gebruik van de crossbeam-channel-module met behoud van de vorige API. De nieuwe implementatie onderscheidt zich door het oplossen van een aantal problemen, hogere prestaties en vereenvoudigd code-onderhoud.
  • Een nieuw deel van de API is overgebracht naar de stabiele categorie, inclusief de methoden en implementaties van eigenschappen:
    • {integer}::checked_ilog
    • {geheel getal}::checked_ilog2
    • {geheel getal}::checked_ilog10
    • {geheel getal}::ilog
    • {geheel getal}::ilog2
    • {geheel getal}::ilog10
    • Niet-nulU*::ilog2
    • Niet-nulU*::ilog10
    • Niet-nul*::BITS
  • Het attribuut “const”, dat de mogelijkheid bepaalt om het in elke context te gebruiken in plaats van constanten, wordt gebruikt in de functies:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Er is een derde ondersteuningsniveau geïmplementeerd voor het gebruik van Rust in de Linux-kernel (linuxkernel), evenals voor de Sony PlayStation 1 (mipsel-sony-psx), PowerPC met AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platforms qnx710, x86_64-pc-nto-qnx710). Het derde niveau omvat basisondersteuning, maar zonder geautomatiseerd testen, het publiceren van officiële builds of het controleren of de code kan worden gebouwd.

Bovendien kunnen we de publicatie door ARM van patches opmerken die het gebruik van de Rust-taal mogelijk maken om stuurprogramma's en Linux-kernelmodules te ontwikkelen die zijn samengesteld voor systemen die zijn gebaseerd op de AArch64-architectuur.

Bron: opennet.ru

Voeg een reactie