Keluaran bahasa pengaturcaraan Rust 1.52

Pengeluaran bahasa pengaturcaraan sistem Rust 1.52, yang diasaskan oleh projek Mozilla, tetapi kini dibangunkan di bawah naungan organisasi bukan untung bebas Rust Foundation, telah diterbitkan. Bahasa ini menumpukan pada keselamatan ingatan, menyediakan pengurusan memori automatik dan menyediakan cara untuk mencapai keselarian tugas yang tinggi tanpa menggunakan pengumpul sampah atau masa jalan (masa jalan dikurangkan kepada permulaan asas dan penyelenggaraan perpustakaan standard).

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

Inovasi utama:

  • Mengalih keluar pengikatan kepada perintah pelaksanaan perintah "pemeriksaan kargo" dan "klip kargo". Sebelum ini, panggilan "clippy kargo" selepas "pemeriksaan kargo" tidak melancarkan utiliti clippy (linter) kerana kekurangan pengasingan cache untuk mod semakan ini. Sekarang masalah ini telah diselesaikan dan susunan "klip kargo" dan "pemeriksaan kargo" dipanggil tidak lagi penting.
  • Bahagian baharu API telah dipindahkan ke kategori stabil, termasuk kaedah berikut telah distabilkan:
    • Hujah::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Atribut "const", yang menentukan kemungkinan menggunakannya dalam sebarang konteks dan bukannya pemalar, digunakan dalam kaedah:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_huruf besar
    • char::to_ascii_huruf kecil
    • char::eq_ignore_ascii_case
    • u8::to_ascii_huruf besar
    • u8::to_ascii_huruf kecil
    • u8::eq_ignore_ascii_case
  • Penambahan lint check unsafe_op_in_unsafe_fn untuk menentukan sama ada kod tidak selamat yang digunakan dalam fungsi tidak selamat dibingkai oleh blok tidak selamat.
  • Ia dibenarkan untuk menghantar penunjuk boleh ubah kepada tatasusunan ke dalam bentuk penunjuk kepada jenis elemen tatasusunan. biarkan mut x: [guna; 2] = [0, 0]; biarkan p = &mut x sebagai *mut guna; biarkan p = &mut x sebagai *const guna;
  • 9 cek baharu telah ditambahkan pada clippy (linter).
  • Pengurus pakej kargo kini menyokong medan "manifest_path" dalam JSON untuk pakej. Menambah sokongan untuk menentukan maklumat lesen dalam format SPDX 3.11 ke repositori crates.io.
  • Ia dibenarkan untuk menentukan berbilang penapis semasa menjalankan ujian, contohnya menjalankan "ujian kargo - foo bar" akan menjalankan semua ujian yang sepadan dengan topeng "foo" dan "bar".
  • Kit alat LLVM lalai telah dikemas kini kepada LLVM 12.
  • Tahap ketiga sokongan telah dilaksanakan untuk platform s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl dan powerpc-unknown-openbsd. Tahap ketiga melibatkan sokongan asas, tetapi tanpa ujian automatik, menerbitkan binaan rasmi atau menyemak sama ada kod itu boleh dibina.

Sumber: opennet.ru

Tambah komen