Keluaran bahasa pengaturcaraan Rust 1.43

diterbitkan keluaran bahasa pengaturcaraan sistem Karat 1.43, 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 menyelamatkan pembangun daripada memanipulasi penunjuk dan melindungi daripada masalah yang timbul daripada manipulasi memori peringkat rendah, seperti mengakses kawasan memori selepas ia dibebaskan, membatalkan penunjuk nol, overrun penimbal, dsb. Untuk mengedarkan perpustakaan, memastikan pemasangan dan mengurus kebergantungan, projek membangunkan pengurus pakej Cargo, yang membolehkan anda mendapatkan perpustakaan yang anda perlukan untuk program dalam satu klik. Repositori disokong untuk mengehos perpustakaan crates.io.

Utama inovasi:

  • Makro menyediakan keupayaan untuk menggunakan serpihan elemen untuk mengubahnya menjadi kod untuk sifat (sifat), pelaksanaan (impl) atau blok luaran. Sebagai contoh:

    makro_peraturan! mac_trait {
    ($i:item) => {
    sifat T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Akan membawa kepada generasi:

    sifat T {
    fn foo() {}
    }

  • Pengesanan jenis primitif, rujukan dan operasi binari dipertingkat.
    Sebagai contoh, kod berikut, yang sebelum ini menyebabkan ralat, kini akan dapat menyusun (Rust kini dengan betul menentukan bahawa 0.0 dan &0.0 mestilah jenis f32):

    biarkan n: f32 = 0.0 + &0.0;

  • Pembolehubah persekitaran baharu CARGO_BIN_EXE_{name} telah ditambahkan pada Kargo, yang ditetapkan semasa membina ujian penyepaduan dan membolehkan anda menentukan laluan penuh ke fail boleh laku yang ditakrifkan dalam bahagian "[[bin]]" pada pakej.
  • Jika pernyataan dibenarkan menggunakan atribut seperti "#[cfg()]".
  • Pustaka menyediakan keupayaan untuk menggunakan pemalar yang berkaitan secara langsung untuk jenis integer dan pecahan, tanpa mengimport modul. Contohnya, anda boleh menulis u32::MAX atau f32::NAN dengan segera tanpa menyatakan β€œuse std::u32” dan β€œuse std::f32” terlebih dahulu.
  • Menambah modul baharu primitif, yang mengeksport semula jenis primitif Rust, contohnya apabila anda perlu menulis makro dan pastikan jenis itu tidak disembunyikan.
  • Bahagian baharu API telah dipindahkan ke kategori stabil, termasuk distabilkan

    Setelah::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 dan
    iter::sekali_dengan.

Sumber: opennet.ru

Tambah komen