Rust 1.62 Programming Language Release

Die algemene programmeertaal Rust 1.62, wat deur die Mozilla-projek gestig is, maar nou ontwikkel is onder die beskerming van die onafhanklike nie-winsgewende organisasie Rust Foundation, is vrygestel. Die taal fokus op geheueveiligheid en bied die middele om hoë werkparallelisme te bereik terwyl die gebruik van 'n vullisverwyderaar en looptyd vermy word (looptyd word verminder tot basiese inisialisering en instandhouding van die standaardbiblioteek).

Rust se geheue hantering metodes red die ontwikkelaar van foute wanneer wysers gemanipuleer word en beskerm teen probleme wat ontstaan ​​as gevolg van laevlak geheue manipulasie, soos toegang tot 'n geheue area nadat dit vrygestel is, herkenning van nulwysers, buffer oorskryding, 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.

Geheueveiligheid word tydens samestellingstyd in Rust verskaf deur verwysingskontrolering, tred te hou met objekeienaarskap, tred te hou met objekleeftye (bestekke), en die korrektheid van geheuetoegang tydens kode-uitvoering te assesseer. Roes bied ook beskerming teen heelgetal oorvloei, vereis verpligte inisialisering van veranderlike waardes voor gebruik, hanteer foute beter in die standaard biblioteek, pas die konsep van onveranderlike verwysings en veranderlikes by verstek toe, bied sterk statiese tik om logiese foute te minimaliseer.

Belangrikste innovasies:

  • Die “cargo”-pakketbestuurder bied die “add”-opdrag, wat jou toelaat om nuwe afhanklikhede by die Cargo.toml-manifes te voeg of bestaande afhanklikhede vanaf die opdragreël te verander. Die opdrag laat jou ook toe om individuele kenmerke en weergawes te spesifiseer, byvoorbeeld: cargo add serde —kenmerke ontleen vrag voeg nom@5
  • Bygevoeg die vermoë om "#[aflei(Default)]" te gebruik met opsommings waarin die verstekopsie gedefinieer word met die "#[verstek]"-kenmerk. #[aflei(Verstek)] enum Miskien { #[verstek] Niks, Iets(T), }
  • Op die Linux-platform word 'n meer kompakte en vinniger implementering van die Mutex-sinchronisasiemeganisme gebruik, gebaseer op die gebruik van futexes wat deur die Linux-kern verskaf word. Anders as die voorheen gebruikte implementering gebaseer op die pthreads-biblioteek, gebruik die nuwe weergawe slegs 5 grepe in plaas van 40 om die Mutex-toestand te stoor. Net so is die Condvar- en RwLock-sluitmeganismes na futex oorgedra.
  • 'n Tweede vlak van ondersteuning vir die x86_64-unknown-none-teikenplatform is geïmplementeer, ontwerp om uitvoerbare lêers te genereer wat sonder 'n bedryfstelsel kan werk. Byvoorbeeld, die gespesifiseerde teikenplatform kan gebruik word wanneer kernkomponente geskryf word. Die tweede vlak van ondersteuning behels 'n monteerwaarborg.
  • Die derde vlak van ondersteuning is geïmplementeer vir die aarch64-pc-windows-gnullvm- en x86_64-pc-windows-gnullvm-platforms. Die derde vlak behels basiese ondersteuning, maar sonder outomatiese toetsing, publisering van amptelike bouwerk, of kontrolering of die kode gebou kan word.
  • 'n Nuwe gedeelte van die API is na die kategorie stal geskuif, insluitend die metodes en implementering van eienskappe is gestabiliseer:
    • bool::dan_sommige
    • f32::totaal_cmp
    • f64::totaal_cmp
    • Stdin::lyne
    • windows::CommandExt::raw_arg
    • impl verstekwaarde vir AssertUnwindSafe
    • Van > vir Rc
    • Van > vir Arc<[u8]>
    • FusedIterator vir EncodeWide

    Bron: opennet.ru

Voeg 'n opmerking