Tim pengembangan Rust dengan bangga mengumumkan rilis versi baru Rust: 1.29.0. Rust adalah bahasa pemrograman sistem yang ditujukan untuk keamanan, kecepatan, dan eksekusi kode paralel.
Jika Anda memiliki versi Rust yang diinstal sebelumnya menggunakan Rustup, maka untuk meningkatkan versi Rust ke versi 1.29.0 Anda hanya perlu melakukan:
$ rustup update stable
Jika Anda belum menginstal Rustup, Anda dapat menginstalnya dari halaman yang sesuai di situs web kami. Catatan rilis Detail Karat 1.29.0 tersedia di GitHub.
Apa yang termasuk dalam versi stabil 1.29.0
1.29 tidak membuat banyak perubahan. Karat 1,30 dan 1,31 diperkirakan sangat signifikan, sehingga sebagian besar iterasi 1,29 masuk ke persiapan untuk perubahan di masa depan. Dua inovasi yang paling menonjol dari rilis ini bahkan tidak menyangkut bahasa itu sendiri: ini adalah dua fitur baru Cargo dan keduanya berhubungan dengan peringatan.
cargo fix
secara otomatis memperbaiki peringatan dalam kodecargo clippy
- penganalisa kode Rust statis yang membantu menangkap kesalahan umum dan hanya meningkatkan kode
cargo fix
Dengan dirilisnya Rust 1.29, Cargo memiliki sub-perintah baru: cargo fix
. Jika Anda pernah menulis di Rust, kemungkinan besar Anda akan menemukan peringatan kompiler. Sebagai contoh, pertimbangkan kode ini:
fn do_something() {} fn main() { for i in 0..100 { do_something(); } }
Di dalamnya, kita memanggil do_something
seratus kali, tetapi tidak pernah menggunakan variabel i
. Rust memperingatkan kita tentang ini:
> cargo build Compiling myprogram v0.1.0 (file:///path/to/myprogram) warning: unused variable: `i` --> src\main.rs:4:9 | 4 | for i in 1..100 { | ^ help: consider using `_i` instead | = note: #[warn(unused_variables)] on by default Finished dev [unoptimized + debuginfo] target(s) in 0.50s
Lihat petunjuk tentang mengganti nama menjadi _i
? Kami dapat secara otomatis menerapkannya dengan cargo fix
:
> cargo fix Checking myprogram v0.1.0 (file:///C:/Users/steve/tmp/fix) Fixing src\main.rs (1 fix) Finished dev [unoptimized + debuginfo] target(s) in 0.59s
Jika sekarang kita buka src\main.rs
, kita akan melihat kode yang diperbaiki:
fn do_something() {} fn main() { for _i in 0..100 { do_something(); } }
Sekarang _i
digunakan dalam kode, dan peringatan tidak lagi dikeluarkan.
Versi pertama dari cargo fix
tidak memperbaiki semua peringatan. cargo fix
menggunakan API kompiler khusus untuk pekerjaannya, yang menawarkan untuk memperbaiki hanya peringatan yang kami benar-benar yakin. Seiring waktu, daftar mereka akan berkembang.
cargo clippy
Lebih lanjut tentang peringatan: sekarang Anda dapat mencoba cargo-clippy
melalui Rustup. Clippy adalah penganalisa statis yang melakukan banyak pemeriksaan tambahan pada kode Anda.
Sebagai contoh:
let mut lock_guard = mutex.lock(); std::mem::drop(&lock_guard) operation_that_requires_mutex_to_be_unlocked();
Secara sintaksis, ini adalah kode yang benar, tetapi kita bisa mendapatkan kebuntuan karena kita memanggil drop
untuk tautan _ ke lock_guard
_, dan bukan untuk lock_guard
itu sendiri. Menjatuhkan panggilan untuk tautan tidak masuk akal dan hampir pasti merupakan kesalahan.
Instal versi awal Clippy melalui Rustup:
$ rustup component add clippy-preview
dan jalankan:
$ cargo clippy error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. --> src\main.rs:5:5 | 5 | std::mem::drop(&lock_guard); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[deny(drop_ref)] on by default note: argument has type &std::result::Result<std::sync::MutexGuard<'_, i32>, std::sync::PoisonError<std::sync::MutexGuard<'_, i32>>> --> src\main.rs:5:20 | 5 | std::mem::drop(&lock_guard); | ^^^^^^^^^^^ = help: for further information visit https://rust-lang-nursery.imtqy.com/rust-clippy/v0.0.212/index.html#drop_ref
Seperti yang dapat Anda lihat dari catatan ke pesan, Anda bisa mendapatkan daftar lengkap dari semua peringatan yang mungkin dengan referensi.
Harap dicatat bahwa ini hanya versi percobaan; Clippy belum mencapai 1.0, sehingga set dan perilaku pemeriksaan masih bisa berubah. Kami akan merilis komponen clippy
segera setelah distabilkan, tetapi untuk saat ini kami meminta Anda untuk melihat versi awal dan memberi tahu kami tentang pengalaman Anda.
Ya, masih ada nuansa: sayangnya, Anda tidak bisa menggunakan clippy bersama dengan cargo-fix
. Pekerjaan ini sedang berlangsung.
Lihat catatan rilis untuk lebih jelasnya.
Stabilisasi perpustakaan standar
API berikut telah distabilkan dalam rilis ini:
Selain itu, sekarang Anda dapat &str
dan OsString
.
Lihat catatan rilis untuk lebih jelasnya.
Peningkatan Kargo
Di atas, kami telah menjabarkan dua sub-perintah Kargo baru. Selain itu, Cargo Cargo.lock , git merge
. Perilaku ini dapat dinonaktifkan dengan bendera - --locked
.
cargo doc
mendapat bendera baru: --document-private-items
. Secara default, cargo doc
hanya mendokumentasikan bagian publik API, karena dimaksudkan untuk menghasilkan dokumentasi pengguna. Tetapi jika Anda mengerjakan paket Anda dan memiliki dokumentasi internal, maka --document-private-items
akan memungkinkan pembuatan dokumentasi secara umum untuk semuanya.
Lihat catatan rilis untuk lebih jelasnya.
Pengembang 1.29.0
Banyak orang berpartisipasi dalam pengembangan Rust 1.29. Kami tidak dapat menyelesaikan pekerjaan tanpa Anda masing-masing. Terima kasih
Dari penerjemah: Terima kasih @Revertron karena membantu saya menerjemahkan.