Rust 1.54 ohjelmointikielen julkaisu

Mozilla-projektin perustaman, mutta nyt itsenäisen voittoa tavoittelemattoman järjestön Rust Foundationin alaisuudessa kehitetyn järjestelmäohjelmointikielen Rust 1.54 julkaisu on julkaistu. Kieli keskittyy muistin turvallisuuteen, tarjoaa automaattisen muistinhallinnan ja tarjoaa välineet korkean tehtävien rinnakkaisuuden saavuttamiseen ilman roskankerääjää tai ajonaikaa (ajoaika on rajoittunut vakiokirjaston perusalustukseen ja ylläpitoon).

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. Kirjastojen jakeluun, kokoonpanon varmistamiseen ja riippuvuuksien hallintaan projektissa kehitetään Cargo-pakettien hallintaa. Crates.io-tietovarastoa tuetaan kirjastojen isännöintiin.

Tärkeimmät innovaatiot:

  • Lisätty mahdollisuus käyttää funktion kaltaisia ​​makroja attribuuttien sisällä (proseduurimakrot ja makrot, jotka on luotu "macro_rules!"-makrolla. Tällaiset makrot erotetaan funktioista symbolilla "!" nimen (makro!(...)) jälkeen ja makron lähdetekstin korvaaminen funktiokutsun luomisen sijaan. Attribuuttien sisällä olevien makrojen kutsuminen voi olla hyödyllistä sisällyttäessäsi muiden tiedostojen sisältöä kommentteihin. Jos haluat esimerkiksi lisätä README-tiedoston sisällön ja komentosarjan suorituksen tuloksen, voit määrittää: #![doc = include_str!("README.md")] #[polku = concat!(env!("OUT_DIR" "), "/generated.rs" )] mod generoitu;
  • Wasm32-alustan sisäänrakennetut kääntäjätoiminnot (Intrinsics) on vakautettu, mikä mahdollistaa SIMD-ohjeiden käytön WebAssemblyssa. Useimmat toiminnot, kuten v128_bitselect, ovat käytettävissä "turvatilassa", mutta jotkin osoittimien kanssa toimivat toiminnot (esimerkiksi v128_load) pysyvät "turvattomina".
  • Inkrementaalisen kääntämisen oletuskäyttö on palannut, jolloin voit rakentaa uudelleen vain koodin muuttuneet osat, mikä voi vähentää merkittävästi projektin rakentamiseen kuluvaa aikaa, kun käännetään uudelleen pienten muutosten jälkeen. Inkrementaalinen käännös poistettiin käytöstä versiossa 1.52.1 piilotettujen bugien vuoksi, jotka tulivat esiin sen jälkeen, kun lisättiin ylimääräinen tarkistus tietojen lataamiseksi levyvälimuistista.
  • Uusi osa API-liittymiä on siirretty vakaaseen luokkaan, mukaan lukien seuraavat stabiloidut:
      BTreeMap::into_keys
    • BTreeMap::in_values
    • HashMap::into_keys
    • HashMap::in_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::osiopiste
  • Lisätyt vaihtoehdot lastipuuhun: “—karsia " poistaa paketin riippuvuuskaaviosta, "-depth" näyttää vain tietyn sisäkkäisen tason elementit riippuvuuspuussa, "-edges no-proc-macro" piilottaa prosessimakroriippuvuudet.

Lähde: opennet.ru

Lisää kommentti