Rust 1.55 programmeertaal release

De release van de systeemprogrammeertaal Rust 1.55, 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 Cargo-pakketbeheerder heeft de mogelijkheid om dubbele fouten en waarschuwingen die tijdens een build optreden, samen te voegen. Bij het uitvoeren van opdrachten zoals "cargo test" en "cargo check --all-targets" die resulteren in meerdere builds van een pakket met verschillende parameters, krijgt de gebruiker nu een samenvatting te zien van het optreden van een zich herhalend probleem, in plaats van dat hij wordt getoond meerdere identieke waarschuwingen bij het herhaaldelijk bouwen van hetzelfde bestand. $ cargo +1.55.0 check —all-targets Foo v0.1.0 controleren waarschuwing: functie wordt nooit gebruikt: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = opmerking: '#[warn(dead_code)]' staat standaard aan waarschuwing: 'foo' (lib) heeft 1 waarschuwing gegenereerd waarschuwing: 'foo' (lib test) heeft 1 waarschuwing gegenereerd (1 duplicaat) Voltooide dev [niet geoptimaliseerd + debuginfo] doel (s)in 0.84s
  • De drijvende-komma-parseercode in de standaardbibliotheek is verplaatst om het snellere en nauwkeurigere Eisel-Lemire-algoritme te gebruiken, waarmee een aantal eerder waargenomen problemen met het afronden en parseren van getallen met zeer grote aantallen cijfers zijn opgelost.
  • De mogelijkheid om niet-gesloten bereiken in sjablonen te specificeren is gestabiliseerd (“X..” wordt geïnterpreteerd als een bereik dat begint met de waarde X en eindigt met de maximale waarde van het gehele type): match x as u32 { 0 => println! (“nul!”), 1.. => println!(“positief getal!”), }
  • Uitgebreide foutvarianten die vallen onder std::io::ErrorKind (classificeert fouten in categorieën zoals NotFound en WouldBlock). Voorheen vielen fouten die niet in bestaande categorieën pasten in de categorie ErrorKind::Other, die ook werd gebruikt voor fouten in code van derden. Er is nu een aparte interne categorie ErrorKind::Uncategorized voor fouten die niet in bestaande categorieën passen, en de categorie ErrorKind::Other is beperkt tot fouten die niet voorkomen in de standaardbibliotheek (standaardbibliotheekfuncties die io::Error retourneren gebruik niet langer de ErrorKind:: categorie Overige).
  • Een nieuw deel van de API is overgebracht naar de stabiele categorie, inclusief de methoden en implementaties van eigenschappen:
    • Gebonden::gekloond
    • Afvoer::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MisschienUninit::assume_init_mut
    • MisschienUninit::assume_init_ref
    • MisschienUninit::schrijven
    • array::kaart
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Het attribuut “const”, dat de mogelijkheid bepaalt om het in elke context te gebruiken in plaats van constanten, wordt gebruikt in de str::from_utf8_unchecked methode.
  • Het derde ondersteuningsniveau is geïmplementeerd voor het powerpc64le-unknown-freebsd-platform. 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