Keluaran bahasa pengaturcaraan Rust 1.67

Bahasa pengaturcaraan tujuan umum Rust 1.67, yang diasaskan oleh projek Mozilla tetapi kini dibangunkan di bawah naungan organisasi bebas tanpa untung Rust Foundation, telah dikeluarkan. Bahasa ini memberi tumpuan kepada keselamatan ingatan dan menyediakan cara untuk mencapai keselarian kerja yang tinggi sambil mengelakkan penggunaan pengumpul sampah dan masa jalan (masa jalan dikurangkan kepada permulaan asas dan penyelenggaraan perpustakaan standard).

Kaedah pengendalian memori Rust menyelamatkan pembangun daripada ralat semasa memanipulasi penunjuk dan melindungi daripada masalah yang timbul akibat pengendalian memori peringkat rendah, seperti mengakses kawasan memori selepas ia dibebaskan, membatalkan penunjuk nol, overrun penimbal, dsb. Untuk mengedarkan perpustakaan, menyediakan binaan dan mengurus kebergantungan, projek membangunkan pengurus pakej Kargo. Repositori crates.io disokong untuk mengehos perpustakaan.

Keselamatan memori disediakan dalam Rust pada masa penyusunan melalui semakan rujukan, menjejaki pemilikan objek, menjejaki jangka hayat objek (skop) dan menilai ketepatan akses memori semasa pelaksanaan kod. Rust juga menyediakan perlindungan terhadap limpahan integer, memerlukan permulaan mandatori nilai pembolehubah sebelum digunakan, mengendalikan ralat dengan lebih baik dalam perpustakaan standard, menggunakan konsep rujukan tidak berubah dan pembolehubah secara lalai, menawarkan penaipan statik yang kuat untuk meminimumkan ralat logik.

Inovasi utama:

  • Untuk fungsi async dengan Future::Output, kini boleh menentukan anotasi "#[must_use]" yang menyertakan amaran jika nilai pulangan diabaikan, yang membantu mengenal pasti ralat yang disebabkan oleh andaian bahawa fungsi itu akan menukar nilai dan bukannya mengembalikan nilai baharu. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().menunggu; } amaran: output masa depan yang tidak digunakan dikembalikan oleh `bar` yang mesti digunakan β€”> src/lib.rs:5:5 | 5 | bar().menunggu; | ^^^^^^^^^^^ | = nota: `#[warn(unused_must_use)]` dihidupkan secara lalai
  • Pelaksanaan baris gilir FIFO std::sync::mpsc (pengguna tunggal berbilang pengeluar) telah dikemas kini, yang telah ditukar kepada menggunakan modul saluran rasuk silang sambil mengekalkan API sebelumnya. Pelaksanaan baharu dibezakan dengan menyelesaikan beberapa masalah, prestasi yang lebih tinggi dan penyelenggaraan kod yang dipermudahkan.
  • Bahagian baharu API telah dialihkan ke kategori stabil, termasuk kaedah dan pelaksanaan ciri telah distabilkan:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • BukanZeroU*::ilog2
    • BukanZeroU*::ilog10
    • BukanZero*::BITS
  • Atribut "const", yang menentukan kemungkinan menggunakannya dalam sebarang konteks dan bukannya pemalar, digunakan dalam fungsi:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • teras::char::from_u32
    • teras::char::from_digit
  • Tahap ketiga sokongan telah dilaksanakan untuk menggunakan Rust dalam kernel Linux (linuxkernel), serta untuk Sony PlayStation 1 (mipsel-sony-psx), PowerPC dengan AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platforms qnx710, x86_64-pc-nto-qnx710). Tahap ketiga melibatkan sokongan asas, tetapi tanpa ujian automatik, menerbitkan binaan rasmi atau menyemak sama ada kod itu boleh dibina.

Selain itu, kita boleh ambil perhatian penerbitan oleh ARM patch yang membenarkan penggunaan bahasa Rust untuk membangunkan pemacu dan modul kernel Linux yang dipasang untuk sistem berdasarkan seni bina AArch64.

Sumber: opennet.ru

Tambah komen