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 Cargo kini mengenal pasti amaran yang boleh diselesaikan secara automatik dan mengesyorkan menjalankan "cargo fix" atau "cargo clippy --fix" sewajarnya. 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") menjana 1 amaran (jalankan 'cargo fix --bin "foo"' untuk menggunakan 1 cadangan)
- Kargo kini memaparkan pengesyoran untuk menggunakan arahan "tambah kargo" semasa cuba memasang perpustakaan menggunakan arahan "pemasangan kargo".
- Untuk mengurangkan masa penyusunan, maklumat penyahpepijatan dalam skrip binaan telah dilumpuhkan secara lalai. Perubahan ini tidak menghasilkan sebarang perbezaan yang boleh dilihat apabila skrip binaan berjalan dengan jayanya, tetapi sekiranya berlaku kegagalan, pembuangan jejak belakang akan mengandungi kurang maklumat. Untuk kembali kepada tingkah laku sebelumnya, tambahkan yang berikut pada Cargo.toml: [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
