Rust 1.88 Dileupaskeun. Munal OS na rsched Utiliti di Rust

Pelepasan bahasa pemrograman tujuan umum Rust 1.88, 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:

  • Ditambahkeun kamampuhan pikeun nangtukeun sababaraha "hayu" ekspresi jero "lamun" jeung "bari" blok kondisional ku ngagabungkeun aranjeunna kalayan operator "&&" (logis AND). Ekspresi "hayu" tiasa digabungkeun sareng ekspresi kondisional Boolean. Variabel anu dinyatakeun dina éksprési let tiasa dianggo dina éksprési kondisional salajengna, kitu ogé di jero blok "lamun" sareng "bari". lamun hayu Channel :: Stabil (v) = release_info () && hayu Semver {utama, minor, .. } = v && utama == 1 && minor == 88 {
  • Ditambahkeun dukungan pikeun nyerat fungsi "taranjang", ditandaan ku atribut "#[unsafe (taranjang)]" sareng ngandung hiji "naked_asm!" nelepon ka jero. Fungsi dijieun ku cara kieu teu boga hiji epilog jeung prolog dihasilkeun ku compiler nu, anu ngamungkinkeun para pamekar ka pinuh ngadalikeun kodeu assembler jasa napel fungsi nu (fungsi "taranjang" ngandung ukur parentah assembler dieusian ku pamekar jeung teu kaasup argumen husus sarta pawang nilai balik ditambahkeun ku compiler nu). Fungsi "Taranjang" dianggap salaku alternatif anu langkung merenah pikeun fungsi anu ditetepkeun dina "global_asm!" meungpeuk. # [teu aman (taranjang)] pub unsafe extern "sysv64" fn wrapping_add (a: u64, b: u64) -> u64 {inti:: arch:: naked_asm! ( "nambahkeun rax, rdi, rsi", "ret"); }
  • Basa predikat anu dipaké dina atribut kompilasi kondisional "cfg" jeung "cfg_attr" (anu ngaktifkeun atawa nganonaktipkeun bagian kode dumasar kana kaayaan nu tangtu) geus dimekarkeun pikeun ngarojong Boolean literals "leres" jeung "palsu", nu dicirikeun ku konfigurasi nu salawasna diaktipkeun atawa salawasna ditumpurkeun. Literals ieu ogé bisa dipaké dina "cfg!" makro sareng tabel "[target]" dina manifests sareng konfigurasi Cargo. Babasan cfg(leres) sareng cfg (palsu) tiasa dianggo gaganti cfg (sadayana ()) sareng cfg (sakur ()) pikeun langkung eksplisit nyatakeun maksudna.
  • Pangatur pakét Cargo ayeuna sacara otomatis ngajalankeun pangumpul sampah pikeun ngabersihan cache dina diréktori asal pangguna. Saméméhna, bungkusan kalawan dependensi diundeur disimpen dina cache teu cleaned up, nu ngakibatkeun kanaékan konstan dina konsumsi spasi disk. Mékanisme pengumpulan sampah anu diaktipkeun bakal otomatis ngahapus file peti anu diunduh sacara éksternal anu teu acan diaksés langkung ti 3 bulan, sareng file peti anu dipasang sacara lokal anu henteu acan diakses langkung ti sabulan. Ngabersihan cache henteu dimimitian nalika nganggo pilihan "--offline" atanapi "--frozen" dina crage.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • Cell:: apdet
    • impl Default pikeun *const T
    • impl Default pikeun *mut T
    • mod ffi::c_str
    • HashMap:: extract_if
    • HashSet:: extract_if
    • pitunjuk ::select_unpredictable
    • proc_macro:: Span:: garis
    • proc_macro::Span::kolom
    • proc_macro :: Span :: ngamimitian
    • proc_macro::Span::tungtung
    • proc_macro::Span::file
    • proc_macro::Span::local_file
    • <[T]>::as_chunks
    • <[T]>::as_rchunks
    • <[T]>::as_chunks_unchecked
    • <[T]>::as_chunks_mut
    • <[T]>::as_rchunks_mut
    • <[T]>::as_chunks_unchecked_mut
  • Tanda "const" dianggo dina fungsi:
    • NonNull :: ngaganti
    • <*mut T>::ganti
    • std::ptr::swap_nonoverlapping
    • Cell:: ngaganti
    • Cell:: meunang
    • Cell:: get_mut
    • Cell:: ti_mut
    • Sél:: salaku_slice_of_cells
  • Dipiceun tingkat kahiji pangrojong pikeun platform target i686-pc-windows-gnu.

Salaku tambahan, urang tiasa nyatet kajadian anu aya hubunganana sareng Rust:

  • Proyék Munal OS ngembangkeun sistem operasi ékspérimén anu ditulis dina Rust sareng dumasar kana konsép unikernel. Munal OS henteu nganggo seueur tugas preemptive, pemetaan halaman mémori, atanapi rohangan alamat virtual (ngagunakeun perenah mémori UEFI). Kernel sareng aplikasi dieksekusi dina rohangan alamat anu sami nganggo modél kaamanan dumasar kana isolasi kotak pasir WASM (kalebet mesin wasmi pikeun ngajalankeun aplikasi dina bentuk bytecode WebAssembly).

    Sistem operasi ngagaduhan antarmuka grafis sareng ngadukung keyboard sareng kontrol mouse. Toolkit proprietary sareng perpustakaan widget dianggo pikeun ngembangkeun aplikasi grafis. Tumpukan TCP sareng supir alat jaringan ditawarkeun pikeun interaksi jaringan. Aplikasi anu sayogi pikeun Munal OS kalebet browser wéb kalayan dukungan HTML sareng HTTPS dasar, pangropéa téksu, sareng terminal pikeun ngaéksekusi kode Python. Kodeu dibuka dina lisénsi MIT.

    Rust 1.88 Dileupaskeun. Munal OS na rsched Utiliti di Rust
  • Kernel Asterinas 0.15.2, anu ditulis dina Rust sareng nyayogikeun ABI anu cocog sareng kernel, parantos dirilis. LinuxKernel ieu ngadukung arsitéktur x86-64 sareng RISC-V sareng ngimplementasikeun 206 tina 368 panggero sistem. LinuxOpat puluh lima pamekar, utamina ti sababaraha universitas Cina, kalibet dina pamekaran kernel. Kernel ieu diwangun nganggo arsitéktur "framekernel", dimana komponén kernel ayana dina rohangan alamat anu dibagikeun, sareng kaamanan kahontal ngalangkungan pamisahan logis kode aman tina kode anu tiasa rentan ka masalah kaamanan. Sadaya panggero sistem, sistem file, sareng supir diimplementasikeun dina lapisan Layanan OS sareng henteu tiasa ngalebetkeun blok anu teu aman. Kode ieu disebarkeun dina lisénsi MPL 2.0.
  • Pikeun inti Linux Utilitas rsched parantos dikembangkeun pikeun nganalisis statistik penjadwal tugas. Dina praktékna, utilitas ieu ngamungkinkeun pikeun meunteun kaputusan penjadwal anu aya hubunganana sareng alokasi sumber daya kana prosés sareng ngalacak reureuh penjadwalan. Kernel nganggo subsistem BPF pikeun pangumpulan data, sareng toolchain rohangan pangguna ditulis dina Rust. Utilitas ieu dikarang ku Chris Mason, panyipta sareng arsiték utama sistem file Btrfs.
  • Collabora ngumumkeun pamekaran vérsi khusus Rust tina toolkit Coccinelle. Coccinelle utamina dirancang pikeun ngotomatisasi pamilarian sareng transformasi kode C dina kernel. LinuxTransformasi ditangtukeun dina bentuk aturan, anu mirip sareng tambalan abstrak anu henteu dihijikeun kana posisi khusus dina kode.
  • Pamekar GNOME parantos ngenalkeun glycin, perpustakaan pikeun ngamuat gambar anu ditulis dina Rust anu nyayogikeun decoding gambar sandbox-isolasi. Ieu ngarojong porsi eusi decoded via gdk:: Textures jeung extracting metadata. Bindings disadiakeun pikeun ngagunakeun glisin dina GTK4, kitu ogé backend pikeun ngagunakeun glisin dina perpustakaan GdkPixbuf dipaké dina GNOME pikeun ngamuat gambar. Glycin parantos dianggo dina panempo gambar Loupe, anu ditawarkeun sacara standar dina GNOME. Dina waktos anu sami, backend pikeun GdkPixbuf ngamungkinkeun ngagunakeun glisin dina GNOME Shell, generator gambar leutik, sareng aplikasi GNOME sawenang-wenang tanpa ngarobih program ieu.

sumber: opennet.ru

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster