Rust 1.68 programmeertaal release

De release van de algemene programmeertaal Rust 1.68, 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 Cargo-pakketbeheerder en de kratten.io-repository hebben de ondersteuning voor het Sparse-protocol gestabiliseerd, dat een nieuwe manier van werken definieert met een index die de beschikbare versies weerspiegelt van alle pakketten die in de repository bestaan. Met het nieuwe protocol kunt u de snelheid van het werken met kratten.io aanzienlijk verhogen en schaalproblemen oplossen met een verdere groei van het aantal pakketten in de repository.

    Om de vertragingen veroorzaakt door het downloaden van een volledige index te verminderen, omvat Sparse, in plaats van toegang te krijgen tot de index met Git, het direct downloaden via HTTPS van alleen de noodzakelijke indexgegevens, waarmee de afhankelijkheden van een bepaald project worden gedekt. Een nieuwe dienst, index.crates.io, wordt gebruikt om indexgegevens te verstrekken. Standaard is het nieuwe protocol gepland om te worden gebruikt in de Rust 1.70-branch, en daarvoor kunt u, om het in te schakelen, de omgevingsvariabele "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" instellen of de parameter 'protocol =' toevoegen aan de parameter "[registries. kratten-io]" sectie van het .cargo/config.toml bestand 'sparse'.

  • De macro “pin!” toegevoegd, waarmee u een Pin<&mut T>-structuur kunt maken op basis van de uitdrukking “T” met lokale vastzetting van de status ervan (in tegenstelling tot Box::pin wijst deze geen geheugen toe aan de heap, maar bindt op stapelniveau).
  • Er is een standaard fouthandler voor geheugentoewijzing voorgesteld, die wordt gebruikt bij gebruik van het standaard alloc-pakket. Toepassingen die alleen alloc inschakelen (zonder std) zullen nu de “panic!”-handler aanroepen wanneer de geheugentoewijzing mislukt, die optioneel kan worden onderschept met behulp van “#[panic_handler]”. Programma's die de std-bibliotheek gebruiken, blijven foutinformatie naar stderr afdrukken en crashen.
  • Een nieuw deel van de API is overgebracht naar de stabiele categorie, inclusief de methoden en implementaties van eigenschappen:
    • {core,std}::pin::pin!
    • imp. Van voor {f32,f64}
    • std::pad::MAIN_SEPARATOR_STR
    • impl DerefMut voor PathBuf
  • Het attribuut “const”, dat de mogelijkheid bepaalt om het in elke context te gebruiken in plaats van constanten, wordt gebruikt in de functie VecDeque::new.
  • Om op het Android-platform te werken is nu minimaal NDK r25 (API 19) vereist, d.w.z. De minimaal ondersteunde Android-versie is verhoogd naar 4.4 (KitKat).
  • Het derde ondersteuningsniveau is geïmplementeerd voor het Sony PlayStation Vita-platform (armv7-sony-vita-newlibeabihf). Het derde niveau omvat basisondersteuning, maar zonder geautomatiseerd testen, het publiceren van officiële builds of het controleren of de code kan worden gebouwd.

Bron: opennet.ru

Voeg een reactie