Rust 1.61 Programming Language Release

Pelepasan bahasa pemrograman tujuan umum Rust 1.61, diadegkeun ku proyék Mozilla, tapi ayeuna dikembangkeun dina naungan organisasi nirlaba bebas Rust Foundation, parantos diterbitkeun. basa museurkeun kana kaamanan memori jeung nyadiakeun sarana pikeun ngahontal paralelisme pakasaban tinggi bari Ngahindarkeun pamakéan a collector sampah na runtime (runtime diréduksi jadi initialization dasar tur pamaliharaan perpustakaan baku).

Métode penanganan memori Rust nyalametkeun pamekar tina kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul kusabab panangan mémori tingkat rendah, sapertos aksés ka daérah mémori saatos dibébaskeun, dereferencing pointer null, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, nyadiakeun ngawangun jeung ngatur kagumantungan, proyék ngamekarkeun manajer pakét Cargo. Repositori crates.io dirojong pikeun perpustakaan hosting.

Kasalametan memori disayogikeun dina Rust dina waktos kompilasi ngaliwatan pamariksaan rujukan, ngalacak kapamilikan obyék, ngalacak umur obyék (skop), sareng ngira-ngira kabeneran aksés mémori nalika palaksanaan kode. Karat ogé nyadiakeun panyalindungan ngalawan overflows integer, merlukeun initialization wajib nilai variabel saméméh pamakéan, handles kasalahan hadé dina perpustakaan baku, nerapkeun konsép rujukan immutable sarta variabel sacara standar, nawarkeun ketak statik kuat pikeun ngaleutikan kasalahan logis.

Inovasi utama:

  • Kasebut nyaéta dimungkinkeun pikeun nangtukeun kodeu balik sorangan tina fungsi utama. Asalna, fungsi utama Rust ngan bisa balik tipe "()" (unit), nu salawasna nunjukkeun status kaluar suksés iwal pamekar eksplisit disebut "prosés:: kaluar (kode)" fungsi. Dina Rust 1.26, ngagunakeun tret Terminasi anu teu stabil dina fungsi utama, éta mungkin pikeun mulangkeun nilai "Ok" sareng "Err", pakait sareng kode EXIT_SUCCESS sareng EXIT_FAILURE dina program C. Dina Rust 1.61, tret Termination parantos stabil, sareng jinis ExitCode anu kapisah parantos diajukeun pikeun ngagambarkeun kodeu balik khusus, anu abstrak jinis balik platform-spésifik ku nyayogikeun duanana konstanta SUKSES sareng GAGAL, ​​sareng metode Ti. pikeun balik kodeu balik custom. ngagunakeun std :: prosés :: ExitCode; fn utama () -> ExitCode {lamun!check_foo () {balik ExitCode:: ti (8); } ExitCode:: SUCCESS }
  • Kamampuhan tambahan tina fungsi anu ditetepkeun nganggo ekspresi "const fn" parantos stabil, anu tiasa disebat henteu ngan ukur fungsi biasa, tapi ogé dianggo dina kontéks naon waé tinimbang konstanta. Pungsi ieu diitung dina waktos compile, teu di runtime, ngarah tunduk kana larangan nu tangtu, kayaning kamampuh maca wungkul tina konstanta. Dina versi anyar, operasi dasar kalawan pointers fungsi diwenangkeun di jero fungsi const (nyieun, ngalirkeun tur casting pointers diwenangkeun, tapi teu nelepon hiji fungsi ku pointer); wates tret pikeun parameter generik fungsi const kayaning T: Salin; sipat dinamis dispatchable (Tret dyn); impl Jenis Tret pikeun argumen fungsi jeung nilai balik.
  • stream nu handles Stdin, Stdout na Stderr di std :: io kiwari boga hirup statik ("'statis") lamun dikonci, sahingga pikeun constructs kawas "hayu kaluar = std :: io :: stdout (). konci ();" kalawan meunang cecekelan tur nyetel konci dina hiji ekspresi.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • Pin::static_mut
    • Pin::static_ref
    • Vec:: retain_mut
    • VecDeque:: retain_mut
    • Tulis pikeun Kursor<[u8; N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std::prosés::ExitCode
    • std::prosés::Terminasi
    • std::thread::JoinHandle:: is_finished
  • Atribut "const", anu nangtukeun kamungkinan ngagunakeunana dina konteks naon waé tinimbang konstanta, dianggo dina fungsi:
    • <*const T>::offset jeung <*mut T>::offset
    • <*const T>::wrapping_offset jeung <*mut T>::wrapping_offset
    • <*const T>::tambahkeun jeung <*mut T>::tambahkeun
    • <*const T>::sub jeung <*mut T>::sub
    • <*const T>::wrapping_add jeung <*mut T>::wrapping_add
    • <*const T>::wrapping_sub jeung <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Salaku tambahan, anjeun tiasa nyatet tulisan "Rust: A Retrospective Kritis" kalayan kasimpulan tayangan basa Rust saatos nyerat 100 sarébu garis kode di jerona nalika ngembangkeun sistem operasi microkernel Xous anu dianggo dina firmware. Kakurangan kalebet sintaksis anu hese dipikahartos, henteu lengkep sareng pangembangan basa anu terus-terusan, kurangna ngawangun anu tiasa diulang, masalah umum sareng kapercayaan katergantungan dina Crates.io, sareng kabutuhan pikeun ngajaga disiplin anu tangtu pikeun nyerat kode anu aman. Fitur anu ngaleuwihan ekspektasi kaasup parabot pikeun refactoring kode jeung reworking "hacks" ditambahkeun salila prototyping gancang.

sumber: opennet.ru

Tambahkeun komentar