Rust 1.33 Rilis

Tim pengembangan Rust dengan bangga mengumumkan rilis versi baru Rust, 1.33.0. Rust adalah bahasa pemrograman yang memungkinkan semua orang membuat perangkat lunak yang andal dan efisien.


Jika Anda memiliki versi Rust sebelumnya yang diinstal menggunakan rustup , maka untuk meningkatkan versi Rust ke versi 1.33.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 terperinci untuk Rust 1.33.0 tersedia di GitHub.


Apa yang termasuk dalam versi stabil 1.33.0


Peningkatan besar dari rilis ini: ekspansi kemampuan const fn signifikan dan stabilisasi Pin API baru.


Memperluas kemampuan const fn


const fn sekarang dapat melakukan lebih banyak lagi , yaitu:


  • pencocokan pola tanpa syarat (tak terbantahkan) (misalnya, const fn foo((x, y): (u8, u8)) { ... } )
  • let binding (mis. let x = 1; )
  • binding let dapat diubah (mis. let mut x = 1; )
  • ekspresi penugasan (misalnya x = y ) dan operator penugasan (misalnya x += y ), termasuk penugasan untuk proyeksi (misalnya, bidang struktur atau hasil dari operator pengindeksan - x[3] = 42 )
  • pernyataan ekspresi (mis. 3; )

Sekarang Anda dapat memanggil "const unsafe fn" dari "const fn" , misalnya:


 const unsafe fn foo() -> i32 { 5 } const fn bar() -> i32 { unsafe { foo() } } 

Berkat peningkatan ini, menjadi mungkin untuk mendeklarasikan sejumlah besar fungsi standar perpustakaan secara konstan. Mereka tercantum di bawah ini di bagian perpustakaan.


Pin API


Masalah ini memperkenalkan mekanisme baru ke dalam bahasa, diperkenalkan ketik std :: pin :: Pin dan jenis penanda Lepas sematan . Gagasan utama dijelaskan secara rinci dalam dokumentasi "std :: pin" dari modul :

Terkadang bermanfaat untuk melarang pergerakan suatu objek, mis. menjamin keabadian alamatnya dalam memori. Skenario utama untuk menggunakan fitur ini adalah struktur referensi-sendiri, karena memindahkan objek tersebut akan menyebabkan pointer tidak valid, yang dapat menyebabkan perilaku tidak terdefinisi (UB).

Pin<P> memastikan bahwa objek yang dirujuk oleh sembarang pointer tipe P memiliki lokasi tetap dalam memori, mis. dia tidak bisa dipindahkan dan ingatannya tidak bisa dibebaskan. Nilai-nilai seperti itu disebut "disematkan".

Diharapkan bahwa mekanisme ini akan digunakan terutama oleh para penulis perpustakaan, sehingga kami tidak akan masuk lebih dalam ke detail sekarang (yang dapat ditemukan dalam dokumentasi di tautan di atas). Namun, stabilisasi API ini merupakan peristiwa penting bagi semua pengguna Rust, karena ini merupakan langkah kunci menuju async / await sangat dinanti. Status pekerjaan yang tersisa dalam arah ini dapat dipantau di areweasyncyet.rs .


Impor sebagai "_"


Sekarang Anda dapat mengimpor entitas sebagai "_" . Ini memungkinkan Anda untuk mengimpor implementasi tipe tanpa memasukkan namanya di namespace saat ini, misalnya:


 use std::io::Read as _; //     : pub trait Read {} 

Lihat catatan rilis untuk lebih jelasnya.


Stabilisasi perpustakaan standar


Berikut adalah daftar segala sesuatu yang menjadi konstan:



Selain itu, API berikut ini distabilkan:



Lihat catatan rilis untuk lebih jelasnya.


Peningkatan Kargo


Cargo sekarang memasang kembali peti jika salah satu file-nya dimodifikasi pada awal pembuatan.


Lihat catatan rilis untuk lebih jelasnya.


Crates.io


Seperti yang diumumkan sebelumnya , dimulai dengan rilis ini, crates.io akan memerlukan alamat email konfirmasi untuk memposting krat. Mulai dari 2019-03-01 00:00 UTC, pelaksanaan cargo publish akan gagal dengan akun tanpa surat terverifikasi.


Ini diperlukan untuk memenuhi persyaratan DMCA . Jika Anda tidak melihat peringatan tentang hal ini yang ditulis kargo dalam rilis terbaru, buka crates.io/me untuk mengindikasikan dan mengkonfirmasi email Anda. Alamat surat ini tidak akan pernah dipublikasikan dan akan digunakan secara eksklusif untuk fungsionalitas langsung crates.io.


Pengembang 1.33.0


Banyak orang bersama-sama menciptakan Rust 1.33. Kami tidak dapat menyelesaikan pekerjaan tanpa Anda masing-masing. Terima kasih

Source: https://habr.com/ru/post/id442244/


All Articles