Basa pemrograman Rust 1.61 release

Basa pemrograman tujuan umum Rust 1.61, 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:

  • Sampeyan bisa nemtokake kode bali dhewe saka fungsi utama. Originally, fungsi utama Rust mung bisa ngasilake jinis "()" (unit), sing tansah nuduhake status metu sing sukses kajaba pangembang kasebut kanthi tegas nyebut fungsi "proses :: metu (kode)". Ing Rust 1.26, nggunakake sifat Terminasi sing ora stabil ing fungsi utama, bisa ngasilake nilai "Ok" lan "Err", sing cocog karo kode EXIT_SUCCESS lan EXIT_FAILURE ing program C. Ing Rust 1.61, sifat Terminasi wis digawe stabil, lan jinis ExitCode sing kapisah wis diusulake kanggo makili kode bali tartamtu, sing abstrak jinis bali khusus platform kanthi nyedhiyakake SUKSES lan GAGAL konstan sing wis ditemtokake, lan metode Saka kanggo ngasilake kode bali kanthi sewenang-wenang. nggunakake std :: proses :: ExitCode; fn main() -> ExitCode {yen !check_foo() {bali ExitCode::saka(8); } ExitCode:: SUCCESS }
  • Kapabilitas tambahan fungsi sing ditetepake nggunakake ekspresi "const fn" wis stabil, sing bisa diarani ora mung minangka fungsi biasa, nanging uga digunakake ing konteks apa wae tinimbang konstanta. Fungsi kasebut diwilang ing wektu kompilasi, ora ing runtime, saengga tundhuk watesan tartamtu, kayata kemampuan kanggo maca mung saka konstanta. Ing versi anyar, operasi dhasar karo penunjuk fungsi diijini nang fungsi const (nggawe, pass lan casting penunjuk diijini, nanging ora nelpon fungsi dening pointer); wates sipat kanggo paramèter umum saka fungsi const kayata T: Copy; sipat sing bisa dikirim kanthi dinamis (dyn Trait); impl Jinis sipat kanggo argumen fungsi lan nilai bali.
  • Aliran kasebut nangani Stdin, Stdout lan Stderr ing std :: io saiki duwe umur statis ("statis") nalika dikunci, ngidini konstruksi kaya "nyetop = std :: io :: stdout () .lock ();" kanthi entuk gagang lan nyetel kunci ing siji ekspresi.
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque:: retain_mut
    • Tulis kanggo Kursor
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::proses:: Mandap
    • std::thread::JoinHandle::wis_rampung
  • Atribut "const", sing nemtokake kemungkinan nggunakake ing sembarang konteks tinimbang konstanta, digunakake ing fungsi:
    • ::offset lan ::offset
    • ::wrapping_offset lan ::wrapping_offset
    • ::nambah lan ::nambah
    • ::sub lan ::sub
    • ::wrapping_add lan ::wrapping_add
    • ::wrapping_sub lan ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Kajaba iku, sampeyan bisa nyathet artikel "Rust: A Retrospective Kritis" kanthi ringkesan tayangan basa Rust sawise nulis 100 ewu baris kode sajrone pangembangan sistem operasi microkernel Xous sing digunakake ing perangkat kukuh. Kerugian kalebu sintaksis sing angel dimangerteni, ora lengkap lan pangembangan basa sing terus-terusan, kekurangan konstruksi sing bisa diulang, masalah khas karo kapercayan ketergantungan ing Crates.io, lan kudu njaga disiplin tartamtu kanggo nulis kode sing aman. Fitur sing ngluwihi pangarepan kalebu alat kanggo kode refactoring lan reworking "hacks" ditambahake sak prototyping cepet.

Source: opennet.ru

Add a comment