Rust 1.65 Programming Language Release

De algemiene programmeertaal Rust 1.65, oprjochte troch it Mozilla-projekt mar no ûntwikkele ûnder auspysjes fan de ûnôfhinklike non-profit organisaasje Rust Foundation, is frijjûn. De taal rjochtet him op ûnthâld feilichheid en jout de middels te berikken hege baan parallelism wylst it foarkommen fan it brûken fan in garbage collector en runtime (runtime wurdt redusearre ta basis inisjalisaasje en ûnderhâld fan de standert bibleteek).

De metoaden foar ûnthâldbehanneling fan Rust besparje de ûntwikkelder fan flaters by it manipulearjen fan oanwizers en beskermje tsjin problemen dy't ûntsteane troch ûnthâldôfhanneling op leech nivo, lykas tagong krije ta in ûnthâldgebiet nei't it befrijd is, it ferwizen fan nul-oanwizers, buffer-oerrin, ensfh. Om bibleteken te fersprieden, builds te leverjen en ôfhinklikens te behearjen, ûntwikkelet it projekt de Cargo-pakketbehearder. It crates.io repository wurdt stipe foar hosting fan bibleteken.

Unthâld feilichheid wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom, byhâlden fan foarwerp lifetimes (omfang), en beoardielje de korrektheid fan ûnthâld tagong by koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

Wichtichste ynnovaasjes:

  • Tafoege stipe foar generic assosjearre typen (GAT, Generic Associated Types), dy't meitsje it mooglik om te meitsjen type aliassen assosjearre mei in oar type en kinne jo assosjearje type constructors mei eigenskippen. eigenskip Foo { type Bar<'x>; }
  • De "lit ... else" ekspresje is ymplementearre, wêrtroch jo de patroan oerienkommende betingst direkt yn 'e "lit" ekspresje kinne kontrolearje en willekeurige koade útfiere as it patroan net oerienkomt. lit Ok(count) = u64::from_str(count_str) else { panic!("Kin it hiel getal net parse: '{count_str}'"); };
  • Tastean it gebrûk fan in break statement om neamde blokken te betiid út te gean, mei de bloknamme (label) om it blok te identifisearjen dat moat wurde beëinige. let result = 'block: {do_thing(); as condition_not_met() {brekke 'blok 1; } do_next_thing(); as condition_not_met() {brekke 'blok 2; } do_last_thing(); 3};
  • Foar Linux is de mooglikheid om debuggen-ynformaasje apart op te slaan (split-debuginfo), earder allinich beskikber foar it macOS-platfoarm, tafoege. As jo ​​de opsje "-Csplit-debuginfo=unpacked" oantsjutte, wurde debuginfo-gegevens yn DWARF-formaat bewarre yn ferskate aparte objektbestannen mei in ".dwo"-útwreiding. It spesifisearjen fan "-Csplit-debuginfo=packed" sil in inkeld pakket oanmeitsje yn ".dwp"-formaat dat alle debuginfo-gegevens foar it projekt omfettet. Om debuginfo direkt yn de .debug_*-seksje fan ELF-objekten te yntegrearjen, kinne jo de opsje "-Csplit-debuginfo=off" brûke.
  • In nij diel fan 'e API is ferpleatst nei de kategory stabile, ynklusyf de metoaden en ymplemintaasjes fan eigenskippen binne stabilisearre:
    • std::backtrace::Backtrace
    • Bûn::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • It attribút "const", dat de mooglikheid bepaalt om it yn elke kontekst te brûken ynstee fan konstanten, wurdt brûkt yn 'e funksjes <*const T&>::offset_from en <*mut T>::offset_from
  • As ûnderdiel fan 'e lêste etappe fan it oerdragen fan de ymplemintaasje fan it LSP (Language Server Protocol) protokol nei rust-analyzer, waard de ferâldere ymplemintaasje fan Rust Language Server (RLS) ferfongen troch in stubserver dy't in warskôging jout mei in suggestje om oer te skeakeljen nei mei help fan rust-analyzer.
  • Tidens kompilaasje is stipe foar ynline-ynset fan MIR-tuskenkoade ynskeakele, wat de kompilaasje fan typyske kratpakketten mei 3-10% fersnelt.
  • Om plande builds te rapperjen, leveret de Cargo-pakketbehearder it sortearjen fan banen dy't wachtsje op útfiering yn 'e wachtrige.

Derneist kinne jo it ynterview notearje oer it gebrûk fan 'e Rust-taal by Volvo om komponinten fan auto-ynformaasjesystemen te ûntwikkeljen. D'r binne gjin plannen om besteande en hifke koade yn Rust te herskriuwen, mar foar nije koade is Rust ien fan 'e foarkar opsjes foar it ferbetterjen fan kwaliteit tsjin legere kosten. Wurkgroepen yn ferbân mei it brûken fan 'e Rust-taal binne ek makke yn' e automotive ferienings AUTOSAR (AUTomotive Open System ARchitecture) en SAE (Society of Automotive Engineers).

Dêrnjonken spruts David Kleidermacher, Google's fise-presidint fan yngenieur, oer de oersetting fan 'e koade brûkt yn it Android-platfoarm om fersiferingskaaien yn Rust te behearjen, lykas it gebrûk fan Rust yn 'e ymplemintaasje fan it DNS oer HTTPS-protokol yn 'e stack foar UWB-chips (Ultra-Wideband) en yn it virtualisaasjekader (Android Virtualization Framework) ferbûn mei de Tensor G2-chip. Nije stapels foar Bluetooth en Wi-Fi, opnij skreaun yn Rust, wurde ek ûntwikkele foar Android. De algemiene strategy is om de feiligens stadichoan te fersterkjen, earst troch it konvertearjen fan de meast kwetsbere en fitale softwarekomponinten nei Rust, en dan útwreidzje nei oare relatearre subsystemen. Ferline jier waard de Rust-taal opnommen yn 'e list mei talen dy't tastien binne foar it ûntwikkeljen fan it Android-platfoarm.

Boarne: opennet.ru

Add a comment