Rilis Bahasa Pemrograman Rust 1.76

Rilis bahasa pemrograman tujuan umum Rust 1.76, yang didirikan oleh proyek Mozilla, tetapi sekarang dikembangkan di bawah naungan organisasi nirlaba independen Rust Foundation, telah diterbitkan. Bahasa berfokus pada keamanan memori dan menyediakan sarana untuk mencapai paralelisme pekerjaan yang tinggi sambil menghindari penggunaan pengumpul sampah dan runtime (runtime dikurangi menjadi inisialisasi dasar dan pemeliharaan perpustakaan standar).

Metode penanganan memori Rust menyelamatkan pengembang dari kesalahan saat memanipulasi pointer dan melindungi dari masalah yang muncul karena penanganan memori tingkat rendah, seperti mengakses area memori setelah dibebaskan, dereferencing null pointer, buffer overruns, dll. Untuk mendistribusikan pustaka, menyediakan build, dan mengelola dependensi, proyek mengembangkan manajer paket Cargo. Repositori crates.io didukung untuk hosting perpustakaan.

Keamanan memori disediakan di Rust pada waktu kompilasi melalui pemeriksaan referensi, melacak kepemilikan objek, melacak masa pakai objek (cakupan), dan menilai kebenaran akses memori selama eksekusi kode. Rust juga memberikan perlindungan terhadap integer overflow, membutuhkan inisialisasi wajib dari nilai variabel sebelum digunakan, menangani kesalahan dengan lebih baik di perpustakaan standar, menerapkan konsep referensi dan variabel yang tidak dapat diubah secara default, menawarkan pengetikan statis yang kuat untuk meminimalkan kesalahan logis.

Inovasi utama:

  • Bagian terpisah telah ditambahkan ke dokumentasi yang menjelaskan kompatibilitas berbagai tipe argumen dan tipe pengembalian fungsi di tingkat ABI. Dibandingkan dengan versi sebelumnya, kompatibilitas dijamin pada level ABI untuk tipe "char" dan "u32", yang memiliki ukuran dan perataan yang sama.
  • Selain panggilan "any::type_name::" yang tersedia sebelumnya ()”, yang mengembalikan deskripsi string untuk tipe yang ditentukan dalam parameter “T”, fungsi “type_name_of_val(&T)” telah ditambahkan, memungkinkan Anda memperoleh informasi tipe berdasarkan referensi apa pun yang tidak disebutkan namanya. fn get_iter() -> impl Iterator { [32, 1, 2].into_iter() } fn main() { biarkan iter = get_iter(); biarkan iter_name = std::any::type_name_of_val(&iter); misalkan jumlah: i3 = iter.sum(); println!("Jumlah `{iter_name}` adalah {jumlah}."); } Outputnya adalah: Jumlah dari `core::array::iter::IntoIter ` adalah 32.
  • Bagian baru dari API telah dipindahkan ke kategori stabil, termasuk metode dan penerapan sifat yang telah distabilkan:
    • Busur::unwrap_or_clone
    • Rc::unwrap_or_clone
    • Hasil::periksa
    • Hasil::inspect_err
    • Opsi::periksa
    • ketik_nama_of_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{dari_ref, dari_mut}
    • ptr::addr_eq
  • Dukungan tingkat ketiga telah diterapkan untuk platform {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios, dan arm64e-apple-darwin. Tingkat ketiga melibatkan dukungan dasar, tetapi tanpa pengujian otomatis, penerbitan versi resmi, atau pemeriksaan apakah kode dapat dibuat.

Selain itu, kita dapat mencatat demonstrasi penjadwal tugas eksperimental scx_rustland, yang ditulis dalam bahasa Rust dan dijalankan di ruang pengguna (transfer logika penjadwalan tugas dari kernel ke ruang pengguna diimplementasikan menggunakan toolkit sched-ext menggunakan BPF). Penjadwal dioptimalkan untuk meningkatkan prioritas tugas interaktif dibandingkan tugas intensif CPU. Misalnya, dalam pengujian meluncurkan aplikasi game secara bersamaan dengan pembuatan kernel, penjadwal scx_rustland memungkinkan kami mencapai FPS yang lebih tinggi dalam game dibandingkan saat menggunakan penjadwal EEVDF standar.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster