Apa yang baru di Rust 1.48

Pendekatan unik dari bahasa pemrograman Rust menghasilkan kode yang lebih baik dengan lebih sedikit kompromi daripada C, C ++, Go, dan bahasa lain yang mungkin Anda gunakan. Itu juga diperbarui secara teratur, seringkali setiap bulan.

Tempat mengunduh versi Rust terbaru

Jika Anda sudah menginstal Rust versi sebelumnya rustup, Anda dapat mengakses versi terbaru melalui perintah berikut:

$ Rustup update stabil

Video terkait: Mengembangkan perangkat lunak yang lebih aman dengan Rust

Dapatkan informasi terbaru dengan cepat untuk Rust pendatang baru, yang dirancang untuk membuat perangkat lunak tingkat sistem yang cepat. Penjelasan animasi dua menit ini menunjukkan bagaimana Rust melewati masalah pemrograman yang menjengkelkan dari memori dan manajemen.

Fitur baru di Rust 1.48.0

Diluncurkan pada 19 November 2020, Rust 1.48.0 memiliki fitur penautan yang lebih mudah di alat dokumentasi perpustakaan Rustdoc, dengan sintaks untuk memberi tahu Rustdoc ketika pengembang mencoba menautkan ke suatu tipe; URL akan dibuat. Juga di versi 1.48.0:

  • Pengembang dapat menentukan #{doc(alias = “”) ]item untuk menambahkan alias pencarian saat mencari melalui UI Rustdoc.
  • Kata unsafekunci sekarang secara sintaksis diizinkan pada modul. Meskipun masih ditolak secara semantik, ini sekarang dapat diurai oleh makro prosedural.
  • Di kompiler, -C link-self-contained=flag compiler distabilkan. Ini memberi tahu rustcapakah akan menautkan runtime dan library C-nya sendiri atau mengandalkan linker eksternal untuk menemukannya. Hal ini didukung hanya pada windows-gnu, linux-musl, dan wasiplatform.
  • Di perpustakaan, API sekarang sudah stabil. Pengembang dapat menggunakannya untuk mencoba mengubah vektor menjadi larik dengan panjang tertentu. Juga stabil dalam rilis ini adalah lima API lain: , , , , dan .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Juga di perpustakaan, semua array dengan panjang berapa pun sekarang diimplementasikan .TryFrom

Fitur baru di Rust 1.47.0

Diumumkan 8 Oktober 2020, Rust 1.47.0 tidak memiliki fitur bahasa baru tetapi meningkatkan perpustakaan standar. Kualitas hidup dan peningkatan toolchain serta stabilisasi perpustakaan ditampilkan dalam rilis ini. Catatan rilis telah diterbitkan untuk peningkatan.

Kemampuan khusus di Rust 1.47.0 meliputi:

  • Fitur "const generics", yang memengaruhi sifat pada array yang lebih besar. Fiturnya masih perlu distabilkan. Rust tidak memiliki cara untuk menjadi generik di atas nilai integer, yang menyebabkan masalah dengan array. Kemampuan ini dimaksudkan untuk mengatasi masalah ini dan membuat array lebih berguna.
  • Peningkatan ke infrastruktur compiler LLVM 11, menjadikannya default.
  • Penelusuran balik yang lebih pendek, sehingga lebih mudah menemukan masalah.
  • rustcsekarang mendukung -C control-flow-guard, opsi yang akan mengaktifkan kemampuan keamanan Control Flow Guard di Windows. Platform lain mengabaikan tanda ini.
  • Rustdoc sekarang mendukung tema Ayu.
  • Sembilan API di pustaka standar distabilkan: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: kebocoran, pointer :: offset_from, f32 :: TAU, dan f64 :: TAU. 

Fitur baru di 1.46.0

Rust 1.46, diumumkan pada 27 Agustus 2020, mencakup kemampuan berikut:

  • Beberapa fitur bahasa inti sekarang dapat digunakan dalam const fn, termasuk if, if letmatch, dan beberapa lainnya.
  • Sebuah #[track_caller]atribut, yang dirancang untuk meningkatkan pesan kesalahan saat unwrapdan fungsi-fungsi terkait panik, sekarang stabil.
  • Dalam perubahan ke perpustakaan, std::mem::forgetsekarang menjadi const fn. Juga di perpustakaan, dua API baru telah distabilkan: Option::zipdan vec::Drain::as_slice.
  • Untuk compiler, citylibtarget dapat digunakan pada platform Apple iOS dan tvOS.
  • Pengindeksan secara berulang ke dalam tupel tidak lagi memerlukan tanda kurung.

Fitur baru di Rust 1.45.0

Diumumkan pada 16 Juli 2020, Rust 1.45 mencakup penambahan dan peningkatan berikut:

  • Sebuah perbaikan ditawarkan untuk memperbaiki beberapa ketidakseimbangan yang sudah berlangsung lama saat melakukan cast antara integer dan float.
  • Stabilisasi ditawarkan untuk makro prosedural mirip fungsi dalam ekspresi, pola, dan pernyataan. Perluasan penggunaan makro membantu dengan penggunaan kerangka kerja web Rocket untuk Rust.
  • Beberapa API perpustakaan telah stabil, seperti Arc::as_ptr, BTreeMap::remove_entry, dan Span::resolved_at. Daftar lengkap API dapat ditemukan di Rust Blog.

Fitur baru di Rust 1.43.1

Rilis poin ini diperkenalkan 7 Mei 2020, untuk mengatasi dua regresi yang diperkenalkan dalam rilis stabil 1.43.0. Itu juga memperbarui versi OpenSSL yang digunakan oleh manajer paket Cargo. Fitur-fiturnya meliputi:

  • Rust 1.27 memperkenalkan dukungan untuk mendeteksi fitur CPU x86 di pustaka standar, melalui is_x86_feature_detected makro. Karena pemfaktoran ulang internal, Rust 1.43.0 mencegah deteksi fitur yang belum dapat digunakan pada stabil, meskipun pendeteksian sebelumnya diizinkan. Versi 1.43.1 memperbaiki regresi ini.
  • Perbaikan ditawarkan untuk cargo package –list perintah yang rusak . Rust 1.43 merusak dukungan untuk daftar file yang termasuk dalam paket yang diterbitkan dengan Cargo, ketika dieksekusi di dalam ruang kerja dengan dependensi jalur atau versi yang tidak diterbitkan.
  • OpenSSL, sebuah ketergantungan Cargo, telah diperbarui menjadi 1.1.1g. OpenSSL telah merilis penasehat keamanan tetapi tim Rust tidak dapat menyertakan perbaikan tepat waktu untuk Rust 1.43.0. Tim tidak memiliki bukti bahwa kerentanan dapat membahayakan keamanan pengguna Cargo.

Fitur baru di Rust 1.43.0

Diumumkan pada 23 April 2020, Rust 1.43.0 dianggap sebagai rilis yang cukup kecil, tanpa fitur utama yang diperkenalkan. Perubahan meliputi:

  • Pengembang dapat menggunakan itemfragmen untuk item interpolasi ke dalam tubuh trait, impldan externblok.
  • Jenis inferensi seputar primitif, referensi, dan operasi biner telah ditingkatkan.
  • Untuk membantu pengujian integrasi, Cargo akan menetapkan beberapa variabel lingkungan baru untuk pengujian guna menemukan executable.
  • Di pustaka Rust, pengembang dapat menggunakan konstanta terkait pada float dan integer secara langsung tanpa harus mengimpor modul. Selain itu, ada primitivemodul baru yang mengekspor ulang tipe primitif Rust, yang berguna saat menulis makro dan pengembang ingin memastikan tipe tidak dibayangi.
  • Beberapa API di perpustakaan yang stabil: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, dan iter::once_with.

Fitur baru di Rust 1.41

Fitur baru di Rust 1.38

Rust 1.38, dirilis pada September 2019, berisi fitur dan peningkatan baru berikut:

  • Manajer paket kargo akan memanfaatkan kompilasi pipelined secara otomatis dengan Rust 1.38. Dengan kompilasi pipelined, compiler tidak membutuhkan dependensi yang sepenuhnya dibangun saat mengompilasi crate. Yang dibutuhkan hanyalah metadatanya, seperti daftar jenis dependensi. Metadata diproduksi di awal proses kompilasi. Beberapa pengujian telah menunjukkan peningkatan kecepatan kompilasi dari 10 hingga 20 persen untuk mengoptimalkan, membangun bersih dari beberapa grafik peti. 
  • Linting of some incorrect uses of mem::{unitialized, zeroed}. With this release, the rustc compiler will provide a lint for a narrow class of incorrect initializations using mem::uninitialized or mem::zeroed.
  • Extension of the #[deprecated] attribute to macros. This attribute has allowed crate authors to notify users that an item of their crate is to be deprecated and removed in a future release.
  • Developers can use std::any::type_name to get the name of a type.
  • Stabilization of a number of functions including ::cast and ::cast.

The new features in Rust 1.37

Rust 1.37, released in August 2019, has the following new features and improvements:

  • An ability to refer to enum variants through type. Developers also can refer to enum variants with Self::Variant.
  • The cargo vendor command, previously a separate crate, is now built in to the language. The command fetches project dependencies, unpacks them into the vendordirectory, and displays the configuration snippet needed to use the vendored code during builds.
  • The rustc compiler supports profile-guided optimization, an optimizing technique for ahead-of-time compilers, via -C profile-generate and -C profile-use.
  • Developers can create unnamed const items.

The new features in Rust 1.36

Version 1.36 of the Rust systems programming language was released in July 2019. Rust 1.36 includes the following new features and enhancements:

  • The Future trait, used for declaring asynchronous work, is now stable. Asynchronous operations in Rust have been coming together in bits and pieces for several versions now, with async and await being the last important remaining pieces.
  • The alloc crate, used for managing memory, is now stable. This crate collects all of the pieces of Rust’s standard library that depend on a global memory allocation mechanism, such as Vec. This way, crates that don’t use the standard library can still make use of the allocator by importing alloc separately—useful for environments where you want code sizes to be as lean as possible.
  • A new type, MaybeUninit, allows you to define objects that may consist of uninitialized memory, such as a lazily allocated array. Rust’s previous mechanism for doing this was a function, mem::uninitialized, that posed many hazards in casual use. MaybeUninit provides a safer way to do this that uses the constraints of Rust’s type system.
  • Non-lexical lifetimes, a feature for recent editions of Rust, has been backported to earlier editions. Non-lexical lifetimes make Rust’s borrow-checking mechanism less difficult to work with (in essence, letting you write a broader range of programs that are still valid Rust), and better able to catch problems that the borrow checker missed.

Other improvements:

  • A new implementation for the HashMap type that runs faster and uses less memory.
  • Cargo can now run entirely offline if needed.

Fitur baru di Rust 1.35

Versi 1.35, dirilis pada Mei 2019, menawarkan yang berikut: