Rust 1.44 ohjelmointikielen julkaisu

julkaistu järjestelmän ohjelmointikielen julkaisu Ruoste 1.44, jonka perusti Mozilla-projekti. Kieli keskittyy muistin turvallisuuteen, tarjoaa automaattisen muistinhallinnan ja tarjoaa työkaluja korkean tehtävien rinnakkaisuuden saavuttamiseen ilman roskakeräystä ja runtime.

Rustin automaattinen muistinhallinta eliminoi virheet osoittimia käsiteltäessä ja suojaa matalan tason muistin käsittelystä aiheutuvilta ongelmilta, kuten muistialueen käyttämiseltä sen vapauttamisen jälkeen, nollaosoittimen viittauksilta, puskurin ylityksiltä jne. Paketinhallintaa kehitetään kirjastojen jakamiseen, kokoamisen varmistamiseen ja riippuvuuksien hallintaan projektin toimesta. lasti, jonka avulla voit saada ohjelman tarvitsemat kirjastot yhdellä napsautuksella. Arkisto on tuettu isäntäkirjastoille laatikot.io.

Uuden julkaisun ilmoituksen tekstissä Rust-kehittäjät sekaantuivat politiikkaan ja kieltäytyivät jyrkästi julkaisemasta täydellistä katsausta Rust 1.44:n muutoksista osoituksena solidaarisuudesta poliisiväkivaltaa vastaan ​​mielenosoittajia kohtaan, mikä osoittaa, että tämä asia on tärkeämpi kuin teknisen tiedon vaihto. Perus innovaatioita:

  • Cargo-pakettien hallinta integroi "rahtipuu"-komennon, joka näyttää puumaisen riippuvuuskaavion. Lisätty on myös vaihtoehto "—kaksoiskappaleet" ("cargo tree -d"), jonka avulla voit arvioida riippuvuuksia saman paketin eri versioissa.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammoniakki v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── loki v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── loki v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [Bild-dependencies] │ │ │ └── version_check v0.1.5
    ...

  • Sovelluksissa, joita ei ole sidottu std:hen ("#![no_std]"), asynkronisten ohjelmointitekniikoiden tuki toteutetaan "async"-funktion, async move { ... } -lohkon ja ".await"-operaattorin perusteella, mikä yksinkertaistaa estämättömien käsittelijöiden pääkomentovirran kirjoittamista.
  • Jäsentimeen on lisätty tuki laajennettavan moduulihierarkian määritysmallille. Esimerkiksi seuraava konstruktio ei tuota virhettä huolimatta moduulin "foo/bar/baz.rs" todellisesta puuttumisesta (konstrukti on edelleen semanttisesti virheellinen ja voi aiheuttaa virheen, mutta muutokset voidaan nähdä ja jäsentää osoitteessa makro- ja ehdollinen kokoamistaso):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Rustc-kääntäjä on lisännyt mahdollisuuden käyttää "-C codegen-units" -lippua inkrementaalisessa tilassa. Catch_unwind-toteutus on muokattu niin, että sillä ei ole vaikutusta suorituskykyyn, jos purkuprosessi on poistettu käytöstä eikä poikkeuksia tehdä.
  • Tason 64 tuki on tarjottu aarch64-unknown-none-, aarch64-unknown-none-softfloat-, arm86-apple-tvos- ja x64_XNUMX-apple-tvos-alustoille. Kolmas taso sisältää perustuen, mutta ilman automaattista testausta ja virallisten koontiversioiden julkaisemista.
  • Uusi osa API:ista on siirretty vakaaseen luokkaan, mukaan lukien stabiloidut
    PathBuf::with_capacity,
    PathBuf::kapasiteetti,
    PathBuf::clear,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Asettelu::align_to,
    Asettelu::pad_to_align,
    Asettelu:: array ja
    Asettelu::laajenna.

  • Vakiokirjaston laajennetut toiminnot:
    • Lisätty erityinen "vec![]"-muunnelma, joka näkyy suoraan Vec::new(:ssa), jolloin "vec![]" voidaan käyttää kontekstissa vakioiden sijaan.
    • Ominaisuuden toteutus (impl) on lisätty muuntamaan::Infallible Hasis.
    • OsString toteuttaa älykkäitä osoittimia DerefMut и IndexMut, palauttaa "&mut OsStr".
    • Lisätty tuki Unicode 13:lle.
    • Toteutettu Stringissä From<&mut str>.
    • IoSlice toteuttaa ominaisuuden kopio.
    • Vec toteutettu From<[T; N]>.
    • proc_macro::LexError toteuttaa fmt::Display ja Error.
  • Const-attribuuttia, joka määrittää, voidaanko sitä käyttää missä tahansa kontekstissa vakioiden sijaan, käytetään from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ja to_ne_bytes menetelmissä kaikille kokonaislukutyypeille.
  • Lisätty tuki staattisten kirjastojen luomiselle ".a"-muodossa ".lib"-muodon sijaan GNU-alustoille Windowsissa.
  • LLVM:n vähimmäisvaatimukset on nostettu LLVM-versioon 8.

Lähde: opennet.ru

Lisää kommentti