Apa yang baru dalam Rust 1.48

Pendekatan unik bahasa pengaturcaraan Rust menghasilkan kod yang lebih baik dengan kompromi yang lebih sedikit daripada C, C ++, Go, dan bahasa lain yang mungkin anda gunakan. Ia juga dikemas kini dengan kerap, setiap bulan.

Di mana memuat turun versi Rust terkini

Sekiranya anda sudah memasang versi Rust sebelumnya rustup, anda boleh mengakses versi terbaru melalui arahan berikut:

$ rustup kemas kini stabil

Video berkaitan: Membangunkan perisian yang lebih selamat dengan Rust

Dapatkan kecepatan dengan pantas pada pendatang baru Rust, yang dirancang untuk membuat perisian peringkat sistem yang pantas. Penjelasan animasi dua minit ini menunjukkan bagaimana Rust memintas masalah pengaturcaraan memori dan pengurusan yang menjengkelkan.

Ciri-ciri baru dalam Rust 1.48.0

Dilancarkan pada 19 November 2020, Rust 1.48.0 mempunyai ciri penghubung yang lebih mudah dalam alat dokumentasi perpustakaan Rustdoc, dengan sintaks untuk memberi tahu Rustdoc ketika pembangun cuba memaut ke jenis; URL akan dihasilkan. Juga dalam versi 1.48.0:

  • Pembangun boleh menentukan #{doc(alias = “”) ]item untuk menambahkan alias carian semasa mencari melalui Rustdoc UI.
  • Kata unsafekunci kini dibenarkan secara sintaksis pada modul. Walaupun masih ditolak secara semantik, ini kini dapat diuraikan oleh makro prosedur.
  • Dalam penyusun, -C link-self-contained=bendera penyusun stabil. Ini memberitahu rustcsama ada untuk menghubungkan runtime C dan perpustakaannya sendiri atau bergantung pada linker luaran untuk mencarinya. Ini hanya disokong pada windows-gnu, linux-musldan wasiplatform.
  • Di perpustakaan, API kini stabil. Pembangun boleh menggunakannya untuk mencuba mengubah vektor menjadi susunan panjang tertentu. Juga stabil dalam siaran ini lima API lain: , , , , dan .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Juga di perpustakaan, semua susunan dengan panjang lebar kini dilaksanakan .TryFrom

Ciri-ciri baru dalam Rust 1.47.0

Diumumkan 8 Oktober 2020, Rust 1.47.0 tidak mempunyai ciri bahasa baru tetapi meningkatkan perpustakaan standard. Kualiti hidup dan peningkatan rantai alat serta penstabilan perpustakaan ditampilkan dalam rilis ini. Catatan pengeluaran telah diterbitkan untuk peningkatan.

Keupayaan khusus dalam Rust 1.47.0 merangkumi:

  • Ciri "const generics", mempengaruhi sifat pada tatasusunan yang lebih besar. Ciri itu masih perlu stabil. Karat tidak mempunyai cara untuk menjadi generik daripada nilai integer, yang menyebabkan masalah dengan tatasusunan. Keupayaan ini bertujuan untuk mengatasi masalah ini dan menjadikan tatasusunan lebih berguna.
  • Peningkatan kepada infrastruktur pengkomputer LLVM 11, menjadikannya lalai.
  • Jalan belakang yang lebih pendek, menjadikannya lebih mudah untuk mencari masalah.
  • rustckini menyokong -C control-flow-guard, pilihan yang akan menghidupkan keupayaan keselamatan Control Flow Guard pada Windows. Platform lain mengabaikan bendera ini.
  • Rustdoc kini menyokong tema Ayu.
  • Sembilan API di pustaka standard telah distabilkan: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU, dan f64 :: TAU. 

Ciri-ciri baru pada 1.46.0

Rust 1.46, diumumkan pada 27 Ogos 2020, merangkumi keupayaan berikut:

  • Beberapa ciri-ciri bahasa setia kini boleh digunakan dalam const fn, termasuk if, if letmatch, dan beberapa yang lain.
  • A #[track_caller]atribut, direka untuk meningkatkan mesej ralat apabila unwrapdan fungsi yang berkaitan panik, kini adalah stabil.
  • Dalam pertukaran ke perpustakaan, std::mem::forgetkini menjadi const fn. Juga di perpustakaan, dua API baru distabilkan: Option::zipdan vec::Drain::as_slice.
  • Untuk penyusun, citylibsasaran boleh digunakan pada platform Apple iOS dan tvOS.
  • Pengindeksan secara berulang ke dalam tupel tidak lagi memerlukan tanda kurung.

Ciri-ciri baru dalam Rust 1.45.0

Diumumkan pada 16 Julai 2020, Rust 1.45 merangkumi penambahan dan penambahbaikan berikut:

  • Pembaikan ditawarkan untuk memperbaiki beberapa ketidakpastian lama ketika melakukan cast antara bilangan bulat dan pelampung.
  • Penstabilan ditawarkan untuk makro prosedur seperti fungsi dalam ungkapan, corak, dan pernyataan. Perluasan penggunaan makro membantu penggunaan kerangka web Rocket untuk Rust.
  • Beberapa API perpustakaan telah stabil, seperti Arc::as_ptr, BTreeMap::remove_entry, dan Span::resolved_at. Senarai lengkap API boleh didapati di Rust Blog.

Ciri-ciri baru dalam Rust 1.43.1

Rilis titik ini diperkenalkan pada 7 Mei 2020, untuk mengatasi dua regresi yang diperkenalkan dalam rilis stabil 1.43.0. Ia juga mengemas kini versi OpenSSL yang digunakan oleh pengurus pakej Cargo. Ciri-ciri termasuk:

  • Rust 1.27 memperkenalkan sokongan untuk mengesan ciri CPU x86 di perpustakaan standard, melalui is_x86_feature_detected makro. Kerana refactoring dalaman, Rust 1.43.0 menghalang pengesanan ciri yang belum dapat digunakan pada stabil, walaupun mengesannya sebelumnya dibenarkan. Versi 1.43.1 membetulkan regresi ini.
  • Pembaikan ditawarkan untuk cargo package –list perintah yang rosak . Rust 1.43 memecahkan sokongan untuk menyenaraikan fail yang termasuk dalam pakej yang diterbitkan dengan Cargo, ketika dilaksanakan di ruang kerja dengan pergantungan jalan atau versi yang tidak diterbitkan.
  • OpenSSL, pergantungan Kargo, telah dikemas kini kepada 1.1.1g. OpenSSL telah mengeluarkan nasihat keselamatan tetapi pasukan Rust tidak dapat memasukkan perbaikan tepat pada masanya untuk Rust 1.43.0. Pasukan ini tidak mempunyai bukti bahawa kerentanan boleh menjejaskan keselamatan pengguna Kargo.

Ciri-ciri baru dalam Rust 1.43.0

Diumumkan pada 23 April 2020, Rust 1.43.0 dianggap sebagai pelepasan yang agak kecil, tanpa ciri utama diperkenalkan. Perubahan merangkumi:

  • Pemaju boleh menggunakan itemserpihan kepada barangan interpolasi ke dalam tubuh trait, impldan externblok.
  • Kesimpulan jenis sekitar primitif, rujukan, dan operasi binari diperbaiki.
  • Untuk membantu pengujian integrasi, Cargo akan menetapkan beberapa pemboleh ubah persekitaran baru untuk ujian untuk mencari yang boleh dilaksanakan.
  • Di perpustakaan Rust, pembangun dapat menggunakan pemalar yang berkaitan pada apungan dan bilangan bulat secara langsung tanpa perlu mengimport modul. Juga, ada primitivemodul baru yang mengeksport semula jenis primitif Rust, yang berguna semasa menulis makro dan pembangun ingin memastikan jenis tidak dibayangi.
  • Beberapa API di perpustakaan telah stabil: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, dan iter::once_with.

Ciri-ciri baru dalam Rust 1.41

Ciri-ciri baru dalam Rust 1.38

Rust 1.38, dirilis pada bulan September 2019, mengandungi ciri dan penambahbaikan baru berikut:

  • Pengurus pakej Cargo akan memanfaatkan kompilasi pipelined secara automatik dengan Rust 1.38. Dengan penyusunan paip, penyusun tidak memerlukan pergantungan yang dibina sepenuhnya semasa menyusun peti. Yang diperlukan hanyalah metadata mereka, seperti senarai jenis kebergantungan. Metadata dihasilkan pada awal proses penyusunan. Beberapa ujian telah menunjukkan peningkatan kelajuan penyusunan 10 hingga 20 peratus untuk binaan grafik peti yang dioptimumkan dan bersih. 
  • 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.

Ciri-ciri baru dalam Rust 1.35

Versi 1.35, dikeluarkan pada bulan Mei 2019, menawarkan yang berikut: