Keluaran bahasa pengaturcaraan Rust 1.46

diterbitkan mengeluarkan 1.46 bahasa pengaturcaraan sistem Rust, diasaskan oleh projek Mozilla. Bahasa ini memberi tumpuan kepada keselamatan ingatan, menyediakan pengurusan memori automatik dan menyediakan alatan untuk mencapai keselarian tugas yang tinggi tanpa menggunakan pengumpul sampah dan runtime.

Pengurusan memori automatik Rust menghapuskan ralat semasa memanipulasi penunjuk dan melindungi daripada masalah yang timbul daripada manipulasi memori peringkat rendah, seperti mengakses kawasan memori selepas ia dibebaskan, penolakan penunjuk nol, overrun penimbal, dsb. Pengurus pakej sedang dibangunkan untuk mengedarkan perpustakaan, memastikan pemasangan dan mengurus kebergantungan oleh projek. Cargo, yang membolehkan anda mendapatkan perpustakaan yang anda perlukan untuk program dalam satu klik. Repositori disokong untuk mengehos perpustakaan crates.io.

Utama inovasi:

  • Keupayaan fungsi yang ditakrifkan menggunakan ungkapan "const fn" telah diperluaskan, yang boleh dipanggil bukan sahaja sebagai fungsi biasa, tetapi juga digunakan dalam sebarang konteks dan bukannya pemalar. Fungsi ini dikira pada masa penyusunan, bukan pada masa jalan, jadi ia tertakluk kepada sekatan tertentu, seperti keupayaan untuk membaca hanya dari pemalar.

    Keluaran baharu mengalih keluar larangan menggunakan operator Boolean (β€œ&&” dan β€œ||”) dalam fungsi sedemikian dan membenarkan penggunaan binaan β€œjika”, β€œjika biarkan”, β€œpadan”,
    "while", "while let" dan "loop", dan juga menyediakan keupayaan untuk menukar kepada kepingan (slice, dynamic arrays) menggunakan ungkapan "&[T]". Penggunaan ciri ini dalam fungsi "const fn" membolehkan anda memindahkan beberapa operasi intensif sumber ke peringkat penyusunan. Sebagai contoh, pelaksanaan "const-sha1" memungkinkan untuk mengira cincang SHA-1 pada masa penyusunan, yang membawa kepada mempercepatkan pengikatan WinRT untuk Rust sebanyak hampir 40 kali.

  • Untuk menjadikan mesej ralat lebih bermaklumat, sokongan untuk atribut "#[track_caller]" telah distabilkan, yang berguna untuk fungsi seperti buka bungkus, yang boleh menyebabkan panik jika jenis digunakan secara tidak betul. Atribut yang ditentukan akan digunakan oleh pengendali panik untuk mencetak lokasi pemanggil dalam mesej ralat.
  • Atribut "const", yang menentukan kemungkinan menggunakannya dalam sebarang konteks dan bukannya pemalar, digunakan dalam kaedah std::mem::forget.
  • Bahagian baharu API telah dialihkan ke kategori stabil, termasuk Option::zip dan vec::Drain::as_slice yang distabilkan.
  • Dalam pengurus pakej Cargo tambah sokongan untuk pembolehubah persekitaran baharu yang ditetapkan semasa menyusun pakej: CARGO_BIN_NAME (nama fail boleh laku yang terhasil), CARGO_CRATE_NAME (nama pakej), CARGO_PKG_LICENSE (lesen dinyatakan dalam manifes), CARGO_PKG_LICENSE_FILE (laluan ke fail lesen).

Sumber: opennet.ru

Tambah komen