Pelepasan bahasa pemrograman tujuan umum Rust 1.63, 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:
- The std :: thread :: scope API geus ditambahkeun, sahingga kreasi threads scoped. Teu kawas threads saméméhna sadia, std:: thread:: scope API anyar ngamungkinkeun injeuman data non-statis, bari threads dijieun maké std klasik:: thread:: spawn API kedah gaduh sadayana argumen lulus tur teu bisa ménta variabel injeuman. The std::thread::scope API ngajamin yén sagala threads spawned bakal nungtungan saméméh data balik, nyadiakeun tingkat kaamanan diperlukeun pikeun mékanisme injeuman.
- Jenis mengikat deskriptor file anyar, BorrowedFd sareng OwnedFd, diusulkeun, nyayogikeun injeuman sareng kapamilikan. Jinis-jinisna ditandaan ku "#[repr(transparan)]", ngamungkinkeun aranjeunna tiasa dianggo langsung dina beungkeutan C éksternal sareng kapamilikan.
- Disadiakeun kamampuhan pikeun nelepon Condvar :: anyar, Mutex :: anyar, sarta RwLock :: anyar dina konteks konstan pikeun nyieun global statik Mutex, RwLock, sarta nilai Condvar tanpa ngagunakeun paket lazy_static.
- Pikeun fungsi tipe fn foo (Nilai: T, f: impl Salin) sintaksis kawas "foo:: diwenangkeun (3, 3)", jelas nunjukkeun jinis generik.
- Transisi kana téhnik NLL (Non-Lexical Lifetimes) pikeun ngadeteksi masalah injeuman variabel parantos réngsé. NLL ngalakukeun akuntansi dina tingkat sakumpulan pointers dina grafik aliran palaksanaan, nu ngaronjatkeun kualitas checker injeuman tur ngamungkinkeun palaksanaan tipe tangtu kode bener nu saméméhna ngakibatkeun kasalahan. Rojongan pikeun mékanisme heubeul, nu dipaké léksikal hirup mengikat, ayeuna geus sagemblengna dipiceun tina rustc, sarta pamakéan NLL anyar geus dilaksanakeun sacara universal.
- Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
- Asép Sunandar Sunarya:: ti_fn
- Kotak:: kana_pin
- BinaryHeap::try_reserve
- BinaryHeap::try_reserve_exact
- OsString::try_reserve
- OsString::try_reserve_exact
- PathBuf::try_reserve
- PathBuf::try_reserve_exact
- Path::try_exists
- Ref:: filter_map
- RefMut :: filter_map
- NonNull::<[T]>::len
- ToOwned:: clone_into
- IPv6Addr::to_ipv4_mapped
- unix::io::AsFd
- unix::io::BorrowedFd<'fd>
- unix::io::OwnedFd
- jandéla::io::AsHandle
- jandéla::io::BorrowedHandle
sumber: opennet.ru
