Rust 1.46 ohjelmointikielen julkaisu

julkaistu järjestelmän ohjelmointikielen versio 1.46 Ruoste, 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.

Pääasiallinen innovaatioita:

  • Lausekkeella ”const fn” määriteltyjen funktioiden ominaisuuksia on laajennettu, joita voidaan kutsua paitsi säännöllisiksi funktioiksi, myös käyttää missä tahansa kontekstissa vakioiden sijaan. Nämä funktiot lasketaan käännösaikana, ei ajon aikana, joten niitä koskevat tietyt rajoitukset, kuten kyky lukea vain vakioista.

    Uusi julkaisu poistaa kiellon käyttää Boolen operaattoreita ("&&" ja "||") tällaisissa funktioissa ja sallii "if", "if let", "match" konstruktien käytön,
    "while", "while let" ja "loop", ja tarjoaa myös mahdollisuuden muuntaa osiksi (slice, dynaamiset taulukot) käyttämällä lauseketta "&[T]". Näiden ominaisuuksien käyttö "const fn" -funktioissa mahdollistaa joidenkin resurssiintensiivisten toimintojen siirtämisen käännösvaiheeseen. Esimerkiksi "const-sha1":n toteutus mahdollistaa SHA-1-tiivisteiden laskemisen käännöshetkellä, mikä nopeuttaa Rustin WinRT-sidoksia lähes 40-kertaiseksi.

  • Virheilmoitusten informatiivisemmaksi tekemiseksi "#[track_caller]"-attribuutin tuki on vakiintunut, mikä on hyödyllistä toiminnoissa, kuten purkamisessa, mikä voi aiheuttaa paniikkia, jos tyyppejä käytetään väärin. Paniikkikäsittelijä käyttää määritettyä attribuuttia soittajan sijainnin tulostamiseen virheilmoituksessa.
  • "const"-attribuuttia, joka määrittää mahdollisuuden käyttää sitä missä tahansa kontekstissa vakioiden sijaan, käytetään std::mem::forget-menetelmässä.
  • Sovellusliittymän uusi osa on siirretty vakaaseen luokkaan, mukaan lukien stabiloitu Option::zip ja vec::Drain::as_slice.
  • Paketinhallinnassa Cargo lisätty tuki uusille ympäristömuuttujille, jotka asetetaan pakettia käännettäessä: CARGO_BIN_NAME (tuloksena olevan suoritettavan tiedoston nimi), CARGO_CRATE_NAME (paketin nimi), CARGO_PKG_LICENSE (luettelossa määritetty lisenssi), CARGO_PKG_LICENSE_FILE (lisenssitiedoston polku).

Lähde: opennet.ru

Lisää kommentti