Keluaran bahasa pengaturcaraan Rust 1.54

Pengeluaran bahasa pengaturcaraan sistem Rust 1.54, 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:

  • Menambahkan keupayaan untuk menggunakan makro seperti fungsi dalam atribut (makro prosedur dan makro yang dibuat menggunakan makro "peraturan_makro!"). Makro sedemikian dibezakan daripada fungsi dengan simbol "!" selepas nama (makro!(...)) dan menggantikan teks sumber makro dan bukannya menjana panggilan fungsi. Memanggil makro dalam atribut boleh berguna untuk memasukkan kandungan daripada fail lain dalam mendokumentasikan ulasan. Sebagai contoh, untuk memasukkan kandungan fail README dan hasil pelaksanaan skrip, anda boleh menentukan: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod dijana;
  • Fungsi pengkompil terbina dalam (Intrinsik) untuk platform wasm32 telah distabilkan, membenarkan penggunaan arahan SIMD dalam WebAssembly. Kebanyakan fungsi, seperti v128_bitselect, tersedia dalam mod "selamat", tetapi beberapa fungsi yang berfungsi dengan penunjuk (contohnya, v128_load) kekal "tidak selamat".
  • Penggunaan lalai kompilasi tambahan telah kembali, membolehkan anda membina semula hanya bahagian kod yang diubah, yang boleh mengurangkan dengan ketara masa yang diperlukan untuk membina projek apabila menyusun semula selepas membuat perubahan kecil. Penyusunan tambahan telah dilumpuhkan dalam keluaran 1.52.1 disebabkan oleh pepijat tersembunyi yang muncul selepas menambah pemeriksaan tambahan untuk memuatkan data daripada cache cakera.
  • Bahagian baharu API telah dipindahkan ke kategori stabil, termasuk yang berikut distabilkan:
      BtreeMap::into_keys
    • BtreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Menambah pilihan pada pokok kargo: β€œβ€”prun " untuk mengalih keluar pakej daripada graf kebergantungan, "-depth" untuk memaparkan hanya elemen tahap bersarang tertentu dalam pepohon kebergantungan, "-edges no-proc-macro" untuk menyembunyikan kebergantungan makro prosedur.

Sumber: opennet.ru

Tambah komen