Rust 1.62 ohjelmointikielen julkaisu

Yleiskäyttöinen ohjelmointikieli Rust 1.62, joka on perustettu Mozilla-projektilla, mutta nyt kehitetty riippumattoman voittoa tavoittelemattoman järjestön Rust Foundationin alaisuudessa, on julkaistu. Kieli keskittyy muistin turvallisuuteen ja tarjoaa välineet korkean työn rinnakkaisuuden saavuttamiseen välttäen samalla roskankeräimen ja ajonajan käyttöä (ajoaika rajoittuu vakiokirjaston perusalustukseen ja ylläpitoon).

Rustin muistinkäsittelymenetelmät säästävät kehittäjää virheiltä osoittimia käsiteltäessä ja suojaavat ongelmilta, jotka johtuvat matalan tason muistin käsittelystä, kuten muistialueen käyttäminen sen vapauttamisen jälkeen, nollaosoittimien viittauksen poistaminen, puskurin ylitykset jne. Kirjastojen jakelua, koontiversioiden tarjoamista ja riippuvuuksien hallintaa varten projekti kehittää Cargo-pakettien hallintaa. Crates.io-tietovarastoa tuetaan kirjastojen isännöintiin.

Muistin turvallisuutta tarjotaan Rustissa käännöshetkellä referenssitarkistuksen, objektin omistajuuden, objektien eliniän (laajuuden) kirjaamisen ja muistin käytön oikeellisuuden arvioimisen avulla koodin suorittamisen aikana. Ruoste tarjoaa myös suojan kokonaislukujen ylivuodoilta, vaatii muuttujien arvojen pakollisen alustamisen ennen käyttöä, käsittelee virheet paremmin standardikirjastossa, soveltaa oletusarvoisesti muuttumattomien viitteiden ja muuttujien käsitettä, tarjoaa vahvan staattisen kirjoittamisen loogisten virheiden minimoimiseksi.

Tärkeimmät innovaatiot:

  • "Cargo"-paketinhallinta tarjoaa "add"-komennon, jonka avulla voit lisätä uusia riippuvuuksia Cargo.toml-luetteloon tai muuttaa olemassa olevia riippuvuuksia komentoriviltä. Komennon avulla voit myös määrittää yksittäisiä ominaisuuksia ja versioita, esimerkiksi: cargo add serde — ominaisuudet derive cargo add nom@5
  • Lisätty mahdollisuus käyttää "#[derive(Default)]" enumeissa, joissa oletusasetus on määritetty käyttämällä "#[oletus]"-attribuuttia. #[derive(Default)] enum Ehkä { #[oletus] Ei mitään, jotain (T), }
  • Linux-alustalla käytetään kompaktimpaa ja nopeampaa Mutex-synkronointimekanismin toteutusta, joka perustuu Linux-ytimen tarjoamien futexes-ratkaisujen käyttöön. Toisin kuin aiemmin käytetty pthreads-kirjastoon perustuva toteutus, uusi versio käyttää Mutex-tilan tallentamiseen vain 5 tavua 40:n sijasta. Vastaavasti Condvar- ja RwLock-lukitusmekanismit on siirretty futexiin.
  • Toinen tukitaso x86_64-unknown-none -kohdealustaan ​​on suunniteltu luomaan suoritettavia tiedostoja, jotka voivat toimia ilman käyttöjärjestelmää. Määritettyä kohdealustaa voidaan käyttää esimerkiksi ytimen komponentteja kirjoitettaessa. Toinen tukitaso sisältää asennustakuun.
  • Kolmas tukitaso on otettu käyttöön alustoille aarch64-pc-windows-gnullvm ja x86_64-pc-windows-gnullvm. Kolmas taso sisältää perustuen, mutta ilman automaattista testausta, virallisten koontiversioiden julkaisemista tai sen tarkistamista, voidaanko koodi rakentaa.
  • Uusi osa API:sta on siirretty vakaan luokkaan, mukaan lukien ominaisuuksien menetelmät ja toteutukset on vakautettu:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl AssertUnwindSafe-oletusarvo
    • From > Rc:lle
    • From > kaarelle<[u8]>
    • FusedIterator EncodeWidea varten

    Lähde: opennet.ru

Lisää kommentti