Keluaran bahasa pengaturcaraan Rust 1.62

Bahasa pengaturcaraan tujuan umum Rust 1.62, 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:

  • Pengurus pakej "kargo" menawarkan arahan "tambah", yang membolehkan anda menambah kebergantungan baharu pada manifes Cargo.toml atau menukar kebergantungan sedia ada daripada baris arahan. Perintah itu juga membenarkan anda untuk menentukan ciri dan versi individu, contohnya: cargo add serde β€”features deve cargo add nom@5
  • Menambahkan keupayaan untuk menggunakan "#[derive(Default)]" dengan enum yang mana pilihan lalai ditakrifkan menggunakan atribut "#[default]". #[derive(Default)] enum Maybe { #[default] Nothing, Something(T), }
  • Pada platform Linux, pelaksanaan mekanisme penyegerakan Mutex yang lebih padat dan lebih pantas digunakan, berdasarkan penggunaan futexes yang disediakan oleh kernel Linux. Tidak seperti pelaksanaan yang digunakan sebelum ini berdasarkan perpustakaan pthreads, versi baharu hanya menggunakan 5 bait dan bukannya 40 untuk menyimpan keadaan Mutex. Begitu juga, mekanisme penguncian Condvar dan RwLock telah dipindahkan ke futex.
  • Tahap kedua sokongan untuk platform sasaran x86_64-unknown-none telah dilaksanakan, direka untuk menjana fail boleh laku yang boleh berfungsi tanpa sistem pengendalian. Sebagai contoh, platform sasaran yang ditentukan boleh digunakan semasa menulis komponen kernel. Tahap sokongan kedua melibatkan jaminan pemasangan.
  • Tahap sokongan ketiga telah dilaksanakan untuk platform aarch64-pc-windows-gnullvm dan x86_64-pc-windows-gnullvm. Tahap ketiga melibatkan sokongan asas, tetapi tanpa ujian automatik, menerbitkan binaan rasmi atau menyemak sama ada kod itu boleh dibina.
  • Bahagian baharu API telah dialihkan ke kategori stabil, termasuk kaedah dan pelaksanaan ciri telah distabilkan:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl nilai lalai untuk AssertUnwindSafe
    • Daripada> untuk Rc
    • Daripada> kepada Arka
    • FusedIterator untuk EncodeWide

    Sumber: opennet.ru

Tambah komen