Basa pemrograman Rust 1.65 release

Basa pemrograman tujuan umum Rust 1.65, didegaké déning proyèk Mozilla nanging saiki dikembangaké ing sangisoré organisasi nirlaba independen Rust Foundation, wis dirilis. Basa kasebut fokus ing safety memori lan nyedhiyakake sarana kanggo nggayuh paralelisme proyek sing dhuwur nalika ngindhari panggunaan kolektor sampah lan runtime (runtime dikurangi dadi initialization dhasar lan pangopènan perpustakaan standar).

Cara nangani memori Rust nylametake pangembang saka kesalahan nalika manipulasi penunjuk lan nglindhungi masalah sing muncul amarga penanganan memori tingkat rendah, kayata ngakses area memori sawise dibebasake, null pointer dereferencing, overruns buffer, etc. Kanggo nyebarake perpustakaan, nyedhiyakake mbangun lan ngatur dependensi, proyek kasebut ngembangake manajer paket Cargo. Repositori crates.io didhukung kanggo hosting perpustakaan.

Keamanan memori diwenehake ing Rust ing wektu kompilasi liwat mriksa referensi, nglacak kepemilikan obyek, nglacak umur obyek (skop), lan netepake akurasi akses memori sajrone eksekusi kode. Rust uga menehi pangayoman marang overflows integer, mbutuhake initialization prentah saka nilai variabel sadurunge nggunakake, Ngalahake kasalahan luwih apik ing perpustakaan standar, ditrapake konsep referensi immutable lan variabel minangka standar, nawakake typing statis kuwat kanggo nyilikake kasalahan logis.

Inovasi utama:

  • Dhukungan ditambahake kanggo jinis sing gegandhengan umum (GAT, Jinis Digandhengake Generik), sing bisa nggawe alias jinis sing digandhengake karo jinis liyane lan ngidini sampeyan nggandhengake konstruktor jinis kanthi sipat. trait Foo {ketik Bar<'x>; }
  • Ekspresi "ayo ... liya" wis dileksanakake, ngidini sampeyan mriksa kondisi pencocokan pola langsung ing ekspresi "ayo" lan nglakokake kode sewenang-wenang yen pola kasebut ora cocog. let Ok(count) = u64::from_str(count_str) else { gupuh!("Ora bisa parse integer: '{count_str}'"); };
  • Ngidini nggunakake statement break kanggo metu saka pamblokiran jeneng prematur, nggunakake jeneng pemblokiran (label) kanggo ngenali pemblokiran bakal mungkasi. let result = 'block: {do_thing(); if condition_not_met() { break 'block 1; } do_next_thing(); if condition_not_met() { break 'block 2; } do_last_thing(); 3};
  • Kanggo Linux, kemampuan kanggo nyimpen informasi debugging kanthi kapisah (split-debuginfo), sing sadurunge mung kasedhiya kanggo platform macOS, wis ditambahake. Nalika nemtokake pilihan "-Csplit-debuginfo = unpacked", data debuginfo ing format DWARF bakal disimpen ing sawetara file obyek kapisah karo extension ".dwo". Nemtokake "-Csplit-debuginfo = dikemas" bakal nggawe paket siji ing format ".dwp" sing kalebu kabeh data debuginfo kanggo proyek kasebut. Kanggo nggabungake debuginfo langsung menyang bagean .debug_* saka obyek ELF, sampeyan bisa nggunakake "-Csplit-debuginfo = mati" pilihan.
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atribut "const", sing nemtokake kemungkinan nggunakake ing konteks apa wae tinimbang konstanta, digunakake ing fungsi <*const T&>::offset_from lan <*mut T>::offset_from
  • Minangka bagéan saka tataran pungkasan nransfer implementasine saka LSP (Language Server Protocol) protokol kanggo karat-analyzer, implementasine outdated Rust Language Server (RLS) diganti karo server rintisan sing ngetokake bebaya karo saran kanggo ngalih menyang. nggunakake rust-analyzer.
  • Sajrone kompilasi, dhukungan kanggo panyebaran inline kode perantara MIR diaktifake, sing nyepetake kompilasi paket peti khas kanthi 3-10%.
  • Kanggo nyepetake mbangun sing dijadwalake, manajer paket Cargo nyedhiyakake ngurutake proyek sing nunggu eksekusi ing antrian.

Kajaba iku, sampeyan bisa nyathet wawancara babagan panggunaan basa Rust ing Volvo kanggo ngembangake komponen sistem informasi otomotif. Ora ana rencana kanggo nulis ulang kode sing wis ana lan dites ing Rust, nanging kanggo kode anyar, Rust minangka salah sawijining pilihan sing disenengi kanggo ningkatake kualitas kanthi biaya sing luwih murah. Klompok kerja sing ana gandhengane karo panggunaan basa Rust uga digawe ing asosiasi otomotif AUTOSAR (AUTomotive Open System ARchitecture) lan SAE (Society of Automotive Engineers).

Kajaba iku, David Kleidermacher, wakil presiden teknik Google, ngomong babagan terjemahan kode sing digunakake ing platform Android kanggo ngatur kunci enkripsi menyang Rust, uga panggunaan Rust ing implementasine DNS liwat protokol HTTPS ing tumpukan. kanggo UWB- chip (Ultra-Wideband) lan ing framework virtualization (Android Virtualization Framework) gadhah chip Tensor G2. Tumpukan anyar kanggo Bluetooth lan Wi-Fi, ditulis maneh ing Rust, uga dikembangake kanggo Android. Strategi umum yaiku kanthi bertahap nguatake keamanan, pisanan kanthi ngowahi komponen piranti lunak sing paling rawan lan penting dadi Rust, banjur nggedhekake menyang subsistem liyane sing gegandhengan. Taun kepungkur, basa Rust kalebu ing dhaptar basa sing diidini kanggo ngembangake platform Android.

Source: opennet.ru

Add a comment