Rust 1.65 Programming Language Release

Ang pagpagawas sa Rust 1.65 nga kinatibuk-ang katuyoan nga programming language, nga gitukod sa proyekto sa Mozilla, apan karon naugmad ubos sa pagdumala sa independenteng non-profit nga organisasyon nga Rust Foundation, gimantala. Ang lengguwahe nagtutok sa kaluwasan sa panumduman ug naghatag sa mga paagi aron makab-ot ang taas nga paralelismo sa trabaho samtang naglikay sa paggamit sa usa ka tigkolekta sa basura ug runtime (ang runtime gikunhoran ngadto sa batakang pagsugod ug pagmentinar sa standard library).

Ang mga pamaagi sa pagdumala sa panumduman sa Rust nagluwas sa developer gikan sa mga sayup sa pagmaniobra sa mga pointer ug pagpanalipod batok sa mga problema nga motumaw tungod sa ubos nga lebel sa pagdumala sa panumduman, sama sa pag-access sa usa ka lugar sa panumduman human kini mapagawas, pagtangtang sa mga null pointer, pag-overrun sa buffer, ug uban pa. Sa pag-apod-apod sa mga librarya, paghatag og mga pagtukod ug pagdumala sa mga dependency, ang proyekto nagpalambo sa Cargo package manager. Gisuportahan ang crates.io repository alang sa pag-host sa mga librarya.

Ang kaluwasan sa panumduman gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa reference, pagsubay sa pagpanag-iya sa butang, pagsubay sa mga kinabuhi sa butang (scopes), ug pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Panguna nga mga inobasyon:

  • Gidugang nga suporta alang sa mga generic nga may kalabutan nga mga tipo (GAT, Generic Associated Types), nga nagpaposible sa paghimo og mga tipo nga alias nga may kalabutan sa lain nga tipo ug nagtugot kanimo sa pag-associate sa mga tigtukod sa tipo sa mga kinaiya. kinaiya Foo { type Bar<'x>; }
  • Ang "let ... else" nga ekspresyon gipatuman, nga nagtugot kanimo sa pagsusi sa kondisyon sa pagpares sa pattern direkta sa sulod sa "let" nga ekspresyon ug ipatuman ang arbitraryong code kung ang pattern dili motakdo. let Ok(count) = u64::from_str(count_str) else { panic!("Dili ma parse integer: '{count_str}'"); };
  • Tugoti ang paggamit sa usa ka pahayag sa paghunong sa paggawas sa gihinganlan nga mga bloke sa dili pa panahon, gamit ang ngalan sa bloke (label) aron mailhan ang bloke nga tapuson. let result = 'block: {buhat_butang(); kon condition_not_met() {break 'block 1; } pagbuhat_sunod_butang(); kon condition_not_met() { break 'block 2; } pagbuhat_kataposang_butang(); 3};
  • Alang sa Linux, ang abilidad sa paglainlain nga pagtipig sa impormasyon sa pag-debug (split-debuginfo), nga kaniadto magamit ra alang sa platform sa macOS, gidugang. Kung gipiho ang "-Csplit-debuginfo=unpacked" nga kapilian, ang debuginfo nga datos sa DWARF nga pormat ma-save sa daghang lain nga mga file sa butang nga adunay extension nga ".dwo". Ang pagpiho sa "-Csplit-debuginfo=packed" maghimo ug usa ka package sa ".dwp" format nga naglakip sa tanang debuginfo data para sa proyekto. Aron i-integrate ang debuginfo direkta ngadto sa .debug_* nga seksyon sa ELF nga mga butang, mahimo nimong gamiton ang "-Csplit-debuginfo=off" nga opsyon.
  • Usa ka bag-ong bahin sa API ang gibalhin sa kategorya nga stable, lakip ang mga pamaagi ug pagpatuman sa mga kinaiya nga na-stabilize:
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Ang "const" nga hiyas, nga nagtino sa posibilidad sa paggamit niini sa bisan unsa nga konteksto imbes sa mga constants, gigamit sa mga function <*const T&>::offset_from ug <*mut T>::offset_from
  • Isip kabahin sa kataposang yugto sa pagbalhin sa pagpatuman sa LSP (Language Server Protocol) protocol ngadto sa rust-analyzer, ang karaan nga pagpatuman sa Rust Language Server (RLS) gipulihan sa usa ka stub server nga nagpagawas ug pasidaan nga adunay sugyot sa pagbalhin ngadto sa gamit ang rust-analyzer.
  • Atol sa pag-compile, ang suporta alang sa inline nga pag-deploy sa MIR intermediate code gipalihok, nga nagpadali sa pag-compile sa mga tipikal nga crate packages sa 3-10%.
  • Aron mapadali ang mga naka-iskedyul nga pagtukod, ang tagdumala sa pakete sa Cargo naghatag paghan-ay sa mga trabaho nga naghulat sa pagpatuman sa pila.

Dugang pa, mahimo nimong matikdan ang interbyu bahin sa paggamit sa Rust nga lengguwahe sa Volvo aron mapalambo ang mga sangkap sa mga sistema sa impormasyon sa awto. Wala'y plano nga isulat pag-usab ang kasamtangan ug nasulayan nga code sa Rust, apan alang sa bag-ong code, ang Rust usa sa gipalabi nga mga kapilian alang sa pagpalambo sa kalidad sa mas ubos nga gasto. Ang mga grupo sa pagtrabaho nga may kalabutan sa paggamit sa Rust nga pinulongan gihimo usab sa mga asosasyon sa automotive AUTOSAR (AUTomotive Open System ARchitecture) ug SAE (Society of Automotive Engineers).

Dugang pa, si David Kleidermacher, bise presidente sa engineering sa Google, naghisgot bahin sa paghubad sa code nga gigamit sa platform sa Android aron madumala ang mga yawe sa pag-encrypt sa Rust, ingon man ang paggamit sa Rust sa pagpatuman sa DNS sa HTTPS protocol sa stack. alang sa UWB- chips (Ultra-Wideband) ug sa virtualization framework (Android Virtualization Framework) nga nakig-uban sa Tensor G2 chip. Bag-ong mga stack alang sa Bluetooth ug Wi-Fi, nga gisulat pag-usab sa Rust, gihimo usab alang sa Android. Ang kinatibuk-ang estratehiya mao ang anam-anam nga pagpalig-on sa seguridad, una pinaagi sa pag-convert sa labing huyang ug importante nga mga sangkap sa software ngadto sa Rust, ug dayon pagpalapad ngadto sa uban nga may kalabutan nga mga subsystem. Sa miaging tuig, ang Rust nga lengguwahe gilakip sa lista sa mga sinultian nga gitugotan alang sa pagpalambo sa platform sa Android.

Source: opennet.ru

Idugang sa usa ka comment