Rust 1.62 programmeertaal release

De release van de algemene programmeertaal Rust 1.62, 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:

  • De pakketbeheerder "cargo" biedt de opdracht "add", waarmee u nieuwe afhankelijkheden aan het Cargo.toml-manifest kunt toevoegen of bestaande afhankelijkheden kunt wijzigen vanaf de opdrachtregel. Met dit commando kunt u ook individuele kenmerken en versies specificeren, bijvoorbeeld: cargo add serde —features ontlenen cargo add nom@5
  • De mogelijkheid toegevoegd om “#[derive(Default)]” te gebruiken met enums waarin de standaardoptie is gedefinieerd met behulp van het kenmerk “#[default]”. #[afleiden(standaard)] enum Misschien { #[standaard] Niets, Iets(T), }
  • Op het Linux-platform wordt een compactere en snellere implementatie van het Mutex-synchronisatiemechanisme gebruikt, gebaseerd op het gebruik van futexen die door de Linux-kernel worden geleverd. In tegenstelling tot de eerder gebruikte implementatie op basis van de pthreads-bibliotheek, gebruikt de nieuwe versie slechts 5 bytes in plaats van 40 om de Mutex-status op te slaan. Op dezelfde manier zijn de Condvar- en RwLock-vergrendelingsmechanismen overgebracht naar futex.
  • Er is een tweede ondersteuningsniveau geïmplementeerd voor het doelplatform x86_64-unknown-none, ontworpen om uitvoerbare bestanden te genereren die zonder besturingssysteem kunnen werken. Het opgegeven doelplatform kan bijvoorbeeld worden gebruikt bij het schrijven van kernelcomponenten. Het tweede niveau van ondersteuning betreft een montagegarantie.
  • Het derde ondersteuningsniveau is geïmplementeerd voor de platforms aarch64-pc-windows-gnullvm en x86_64-pc-windows-gnullvm. Het derde niveau omvat basisondersteuning, maar zonder geautomatiseerd testen, het publiceren van officiële builds of het controleren of de code kan worden gebouwd.
  • Een nieuw deel van de API is overgebracht naar de stabiele categorie, inclusief de methoden en implementaties van eigenschappen:
    • bool::dan_sommige
    • f32::totaal_cmp
    • f64::totaal_cmp
    • Stdin::lijnen
    • windows::CommandExt::raw_arg
    • impl standaardwaarde voor AssertUnwindSafe
    • Van > voor RC
    • Van > voor Boog<[u8]>
    • FusedIterator voor EncodeWide

    Bron: opennet.ru

Voeg een reactie