Rust 1.65 Programming Language Release

Die algemene programmeertaal Rust 1.65, 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:

  • Bygevoeg ondersteuning vir generiese geassosieerde tipes (GAT, Generic Associated Types), wat dit moontlik maak om tipe aliasse te skep wat met 'n ander tipe geassosieer word en jou toelaat om tipe konstruktors met eienskappe te assosieer. eienskap Foo { tipe Bar<'x>; }
  • Die "laat ... anders"-uitdrukking is geïmplementeer, wat jou toelaat om die patroonpassingstoestand direk binne die "laat"-uitdrukking na te gaan en arbitrêre kode uit te voer as die patroon nie ooreenstem nie. let Ok(count) = u64::from_str(count_str) else { panic!("Kan nie heelgetal ontleed nie: '{count_str}'"); };
  • Laat die gebruik van 'n breekstelling toe om benoemde blokke voortydig te verlaat, deur die bloknaam (etiket) te gebruik om die blok wat beëindig moet word, te identifiseer. laat resultaat = 'blok: {doen_ding(); if condition_not_met() {breek 'blok 1; } doen_volgende_ding(); if condition_not_met() {breek 'blok 2; } doen_laaste_ding(); 3};
  • Vir Linux is die vermoë om ontfoutingsinligting afsonderlik te stoor (split-debuginfo), wat voorheen slegs vir die macOS-platform beskikbaar was, bygevoeg. Wanneer die "-Csplit-debuginfo=unpacked" opsie gespesifiseer word, sal debuginfo data in DWARF formaat gestoor word in verskeie afsonderlike objeklêers met 'n ".dwo" uitbreiding. Deur "-Csplit-debuginfo=packed" te spesifiseer, sal 'n enkele pakket in ".dwp"-formaat skep wat al die debuginfo-data vir die projek insluit. Om debuginfo direk in die .debug_*-afdeling van ELF-voorwerpe te integreer, kan jy die "-Csplit-debuginfo=off" opsie gebruik.
  • 'n Nuwe gedeelte van die API is na die kategorie stal geskuif, insluitend die metodes en implementering van eienskappe is gestabiliseer:
    • std::backtrace::Backtrace
    • Gebonde::as_ref
    • std::io::lees_na_string
    • <*konst T>::cast_mut
    • <*mut T>::cast_const
  • Die “const”-kenmerk, wat die moontlikheid bepaal om dit in enige konteks in plaas van konstantes te gebruik, word gebruik in die funksies <*const T&>::offset_from en <*mut T>::offset_from
  • As deel van die finale stadium van die oordrag van die implementering van die LSP (Language Server Protocol) protokol na roes-analiseerder, is die verouderde implementering van Rust Language Server (RLS) vervang met 'n stompbediener wat 'n waarskuwing uitreik met 'n voorstel om oor te skakel na met behulp van roes-ontleder.
  • Tydens samestelling word ondersteuning vir inlyn-ontplooiing van MIR-tussenkode geaktiveer, wat die samestelling van tipiese kratpakkette met 3-10% versnel.
  • Om geskeduleerde bouwerk te bespoedig, verskaf die Cargo-pakketbestuurder sortering van werke wat wag op uitvoering in die tou.

Jy kan ook let op die onderhoud oor die gebruik van die Rust-taal by Volvo om komponente van motorinligtingstelsels te ontwikkel. Daar is geen planne om bestaande en getoetste kode in Rust te herskryf nie, maar vir nuwe kode is Rust een van die voorkeuropsies om kwaliteit teen laer koste te verbeter. Werkgroepe wat verband hou met die gebruik van die Rust-taal is ook geskep in die motorverenigings AUTOSAR (AUTomotive Open System ARchitecture) en SAE (Society of Automotive Engineers).

Daarbenewens het David Kleidermacher, Google se visepresident van ingenieurswese, gepraat oor die vertaling van die kode wat in die Android-platform gebruik word om enkripsiesleutels in Rust te bestuur, asook die gebruik van Rust in die implementering van die DNS oor HTTPS-protokol in die stapel vir UWB-skyfies (Ultra-Wideband) en in die virtualiseringsraamwerk (Android Virtualization Framework) wat met die Tensor G2-skyfie geassosieer word. Nuwe stapels vir Bluetooth en Wi-Fi, herskryf in Rust, word ook vir Android ontwikkel. Die algemene strategie is om sekuriteit geleidelik te versterk, eers deur die mees kwesbare en noodsaaklike sagtewarekomponente na Rust om te skakel, en dan uit te brei na ander verwante substelsels. Verlede jaar is die Rust-taal ingesluit by die lys tale wat toegelaat word vir die ontwikkeling van die Android-platform.

Bron: opennet.ru

Voeg 'n opmerking