Rust 1.43 ohjelmointikielen julkaisu

julkaistu järjestelmän ohjelmointikielen julkaisu Ruoste 1.43, 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 vapauttaa kehittäjän osoittimien manipuloinnista ja suojaa matalan tason muistin käsittelystä johtuvilta ongelmilta, kuten jälkivapailta muistin hauilta, nollaosoittimen viittauksilta, puskurin ylityksiltä ja vastaavilta. 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.

Pääasiallinen innovaatioita:

  • Makrot tarjoavat mahdollisuuden käyttää elementtien fragmentteja muuttaakseen ne ominaisuuksien (ominaisuus), toteutusten (impl) tai ulkoisten lohkojen koodiksi. Esimerkiksi:

    makro_säännöt! mac_trait {
    ($i:item) => {
    ominaisuus T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Se johtaa sukupolveen:

    ominaisuus T {
    fn foo() {}
    }

  • Parannettu primitiivien, viittausten ja binääritoimintojen tyyppitunnistus.
    Esimerkiksi seuraava aiemmin virheen aiheuttanut koodi voidaan nyt kääntää (Rust määrittää nyt oikein, että 0.0 ja &0.0 on oltava tyyppiä f32):

    olkoon n: f32 = 0.0 + &0.0;

  • Cargoon on lisätty uusi ympäristömuuttuja CARGO_BIN_EXE_{name}, joka asetetaan integrointitestien aikana ja jonka avulla voit määrittää paketin [[bin]]-osiossa määritellyn suoritettavan tiedoston täyden polun.
  • Jos lausunnot saavat käyttää attribuutteja, kuten "#[cfg()]".
  • Kirjasto tarjoaa mahdollisuuden käyttää liittyviä vakioita suoraan kokonaisluku- ja murtolukutyypeille ilman moduulin tuontia. Voit esimerkiksi kirjoittaa välittömästi u32::MAX tai f32::NAN määrittämättä ensin "use std::u32" ja "use std::f32".
  • Uusi moduuli lisätty primitiivinen, joka vie uudelleen Rust-primitiivityyppejä, esimerkiksi kun sinun on kirjoitettava makro ja varmistettava, että tyypit eivät ole piilossa.
  • Uusi osa API:ista on siirretty vakaaseen luokkaan, mukaan lukien stabiloidut

    Kerran::on_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 ja
    iter::once_with.

Lähde: opennet.ru

Lisää kommentti