Rust 1.52 Programming Language Release

Die vrystelling van die stelselprogrammeertaal Rust 1.52, wat deur die Mozilla-projek gestig is, maar nou ontwikkel is onder die vaandel van die onafhanklike nie-winsgewende organisasie Rust Foundation, is gepubliseer. Die taal fokus op geheueveiligheid, verskaf outomatiese geheuebestuur en bied die middele om hoë taakparallellisme te bereik sonder om 'n vullisverwyderaar of looptyd te gebruik (looptyd word verminder tot basiese inisialisering en instandhouding van die standaardbiblioteek).

Rust se outomatiese geheuebestuur red die ontwikkelaar van foute wanneer wysers gemanipuleer word en beskerm teen probleme wat ontstaan ​​as gevolg van laevlakgeheuemanipulasie, soos toegang tot 'n geheuearea nadat dit vrygestel is, herkenning van nulwysers, bufferoorskryding, ens. Om biblioteke te versprei, bouwerk te verskaf en afhanklikhede te bestuur, ontwikkel die projek die Cargo-pakketbestuurder. Die crates.io-bewaarplek word ondersteun vir die aanbieding van biblioteke.

Belangrikste innovasies:

  • Verwyder binding aan die volgorde van uitvoering van die "cargo check" en "cargo clippy" opdragte. Voorheen het die roep van "cargo clippy" na "cargo check" nie die clippy-nutsding (linter) geloods nie weens die gebrek aan kasskeiding vir hierdie kontrolemodusse. Nou is hierdie probleem opgelos en die volgorde waarin “cargo clippy” en “cargo check” genoem word, maak nie meer saak nie.
  • 'n Nuwe gedeelte van die API is na die stabiele kategorie oorgedra, insluitend die volgende metodes is gestabiliseer:
    • Argumente::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::van_syfer
    • char::from_u32_unchecked
    • char::from_u32
    • sny :: partisiepunt
    • str::rsplit_een keer
    • str::split_een keer
  • Die "const"-kenmerk, wat die moontlikheid bepaal om dit in enige konteks in plaas van konstantes te gebruik, word in die metodes gebruik:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_hoofletters
    • char::to_ascii_kleinletters
    • char::eq_ignore_ascii_case
    • u8::to_ascii_hoofletters
    • u8::to_ascii_kleinletters
    • u8::eq_ignore_ascii_case
  • Bygevoeg lint check unsafe_op_in_unsafe_fn om te bepaal of onveilige kode wat in onveilige funksies gebruik word, deur onveilige blokke geraam word.
  • Dit word toegelaat om veranderlike wysers na skikkings te gooi in die vorm van wysers na die tipe van die skikkingselement. laat mut x: [gebruik; 2] = [0, 0]; laat p = &mut x as *mut gebruik; laat p = &mut x as *const gebruik;
  • 9 nuwe tjeks is by clippy (linter) gevoeg.
  • Die vragpakketbestuurder ondersteun nou die "manifest_path"-veld in JSON vir pakkette. Ondersteuning gevoeg vir die spesifikasie van lisensie-inligting in SPDX 3.11-formaat by die crates.io-bewaarplek.
  • Dit word toegelaat om veelvuldige filters te spesifiseer wanneer toetse uitgevoer word, byvoorbeeld die uitvoer van "vragtoets - foo bar" sal alle toetse uitvoer wat ooreenstem met die maskers "foo" en "bar".
  • Die verstek LLVM-gereedskapstel is opgedateer na LLVM 12.
  • Die derde vlak van ondersteuning is geïmplementeer vir die s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl en powerpc-unknown-openbsd platforms. Die derde vlak behels basiese ondersteuning, maar sonder outomatiese toetsing, publisering van amptelike bouwerk, of kontrolering of die kode gebou kan word.

Bron: opennet.ru

Voeg 'n opmerking