Keluaran bahasa pengaturcaraan Rust 1.69

Bahasa pengaturcaraan tujuan umum Rust 1.69, 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 melaksanakan pengesanan amaran yang boleh diselesaikan secara automatik, dan output pengesyoran yang sesuai untuk menjalankan "pembetulan kargo" atau "pembaikan clippy kargo". amaran: import yang tidak digunakan: 'std::hash::Hash' β€”> src/main.rs:1:5 | 1 | gunakan std::hash::Hash; | ^^^^^^^^^^^^^^^^^ | = nota: '#[warn(unused_imports)]' dihidupkan secara lalai amaran: 'foo' (bin "foo") menghasilkan 1 amaran (jalankan 'cargo fix β€”bin "foo"' untuk menggunakan 1 cadangan)
  • Kargo telah menambah output pengesyoran untuk menggunakan arahan "tambah kargo" semasa cuba memasang perpustakaan dengan arahan "pemasangan kargo".
  • Untuk mengurangkan masa penyusunan, kemasukan maklumat penyahpepijatan dalam skrip binaan telah dihentikan secara lalai. Jika skrip binaan berjalan dengan jayanya, perubahan tidak akan menghasilkan sebarang perbezaan yang boleh dilihat, tetapi jika kegagalan berlaku, pembuangan jejak balik akan mengandungi kurang maklumat. Untuk mengembalikan tingkah laku lama kepada Cargo.toml anda harus menambah: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Bahagian baharu API telah dialihkan ke kategori stabil, termasuk kaedah dan pelaksanaan ciri telah distabilkan:
    • CStr::from_bytes_until_nul
    • teras::ffi::FromBytesUntilNulError
  • Atribut "const", yang menentukan kemungkinan menggunakannya dalam sebarang konteks dan bukannya pemalar, digunakan dalam fungsi:
    • SocketAddr::baru
    • SocketAddr::ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::baru
    • SocketAddrV4::ip
    • SocketAddrV4::port
    • SocketAddrV6::baru
    • SocketAddrV6::ip
    • SocketAddrV6::port
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Menambahkan keupayaan untuk menggunakan bendera benar dan palsu dalam hujah pengkompil.

Sumber: opennet.ru

Tambah komen