Rust 1.52 ohjelmointikielen julkaisu

Mozilla-projektin perustaman, mutta nyt itsenäisen voittoa tavoittelemattoman järjestön Rust Foundationin alaisuudessa kehitetyn järjestelmäohjelmointikielen Rust 1.52 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:

  • Sitoutuminen "cargo check"- ja "cargo clippy"-komentojen suoritusjärjestykseen on poistettu. Aikaisemmin "cargo clippy" kutsuminen "cargo check"in jälkeen ei käynnistänyt clippy-apuohjelmaa (linteriä), koska näissä tarkistustiloissa ei ollut välimuistin erottelua. Nyt tämä ongelma on ratkaistu ja järjestyksellä, jossa "cargo clippy" ja "cargo check" kutsutaan, ei ole enää merkitystä.
  • Uusi osa API:sta on siirretty vakaaseen luokkaan, mukaan lukien seuraavat menetelmät on stabiloitu:
    • Argumentit::as_str
    • merkki::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • merkki::numerosta
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • "const"-attribuuttia, joka määrittää mahdollisuuden käyttää sitä missä tahansa kontekstissa vakioiden sijaan, käytetään menetelmissä:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_isot kirjaimet
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_isot kirjaimet
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Lisätty nukkatarkistus unsafe_op_in_unsafe_fn sen määrittämiseksi, kehystetäänkö vaarallisissa funktioissa käytetty vaarallinen koodi vaarallisilla lohkoilla.
  • On sallittua heittää muuttuvia osoittimia taulukoihin osoittimien muotoon taulukon elementin tyyppiin. let mut x: [usize; 2] = [0, 0]; anna p = &mut x as *mut use; anna p = &mut x muodossa *const use;
  • 9 uutta shekkiä on lisätty clippyyn (linter).
  • Rahtipakettien hallinta tukee nyt pakettien JSON:n manifest_path -kenttää. Lisätty tuki lisenssitietojen määrittämiselle SPDX 3.11 -muodossa crates.io-tietovarastoon.
  • On sallittua määrittää useita suodattimia testejä suoritettaessa, esimerkiksi "cargo test - foo bar" suorittaminen suorittaa kaikki testit, jotka vastaavat maskeja "foo" ja "bar".
  • LLVM-oletustyökalupaketti on päivitetty LLVM 12:een.
  • Kolmas tukitaso on otettu käyttöön alustoille s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ja powerpc-unknown-openbsd. Kolmas taso sisältää perustuen, mutta ilman automaattista testausta, virallisten koontiversioiden julkaisemista tai sen tarkistamista, voidaanko koodi rakentaa.

Lähde: opennet.ru

Lisää kommentti