Rust1.48の新機能

Rustプログラミング言語の独自のアプローチにより、C、C ++、Go、およびおそらく使用する他の言語よりも妥協の少ない、より優れたコードが得られます。また、定期的に、多くの場合毎月更新されます。

最新のRustバージョンをダウンロードする場所

を介して以前のバージョンのRustを既にインストールしているrustup場合は、次のコマンドを使用して最新バージョンにアクセスできます。

$ rustupアップデートが安定

関連ビデオ:Rustを使用したより安全なソフトウェアの開発

高速なシステムレベルのソフトウェアを作成するように設計された、新参のRustをすばやく習得します。この2分間のアニメーションの説明者は、Rustがメモリと管理の厄介なプログラミングの問題をどのように回避するかを示しています。

Rust1.48.0の新機能

2020年11月19日に発表されたRust1.48.0は、Rustdocライブラリドキュメントツールでのリンクが簡単で、開発者が型にリンクしようとしているときにRustdocに通知する構文を備えています。URLが生成されます。バージョン1.48.0でも:

  • 開発者は#{doc(alias = “”) ]、Rustdoc UIを介して検索するときに、検索エイリアスを追加するアイテムを指定できます。
  • unsafeキーワードは現在、構文的にモジュールに許可されています。まだ意味的に拒否されていますが、これは手続き型マクロで解析できるようになりました。
  • コンパイラでは、-C link-self-contained=コンパイラフラグが安定しています。これはrustc、独自のCランタイムとライブラリをリンクするか、外部リンカーに依存してそれらを見つけるかを示します。これはのみサポートされwindows-gnulinux-muslおよびwasiプラットフォーム。
  • ライブラリでは、APIが安定しています。開発者はこれを使用して、ベクトルを指定された長さの配列に変換しようとすることができます。また、他の5つのAPIは、このリリースにあった安定化:、、、、と[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • また、ライブラリでは、任意の長さのすべての配列がを実装するようになりました。TryFrom

Rust1.47.0の新機能

2020年10月8日に発表されたRust1.47.0には新しい言語機能はありませんが、標準ライブラリが拡張されています。このリリースでは、生活の質とツールチェーンの改善、およびライブラリの安定化が紹介されています。アップグレード用のリリースノートが公開されています。

Rust1.47.0の特定の機能は次のとおりです。

  • より大きなアレイの特性に影響を与える「constgenerics」機能。機能はまだ安定させる必要があります。Rustには整数値を一般化する方法がなく、配列に問題が発生していました。この機能は、この問題に対処し、アレイをより便利にすることを目的としています。
  • LLVM 11コンパイラインフラストラクチャへのアップグレード。これがデフォルトになります。
  • バックトレースが短くなり、問題を見つけやすくなります。
  • rustc-C control-flow-guardWindowsでControlFlowGuardセキュリティ機能をオンにするオプションであるをサポートするようになりました。他のプラットフォームはこのフラグを無視します。
  • RustdocがAyuテーマをサポートするようになりました。
  • 標準ライブラリの9つのAPIが安定化されました:Ident :: new_raw、Range :: is_empty、RangeInclusive :: is_empty、Result :: as_deref、Result :: as_deref_mut、Vec :: Leak、pointer :: offset_from、f32 :: TAU、およびf64 :: TAU。 

1.46.0の新機能

2020年8月27日に発表されたRust1.46には、次の機能が含まれています。

  • いくつかのコア言語機能は今で使用することができますconst fnを含む、ifif let、  match、および他のいくつか。
  • 関連する機能がパニックになった#[track_caller]ときにエラーメッセージを改善するように設計された属性unwrapが安定しました。
  • ライブラリへの変更で、std::mem::forgetはになりましたconst fn。また、ライブラリでは、2つの新しいAPIが安定化されました:Option::zipvec::Drain::as_slice
  • コンパイラーの場合、citylibターゲットはAppleiOSおよびtvOSプラットフォームで使用できます。
  • タプルへの再帰的なインデックス作成では、括弧は不要になりました。

Rust1.45.0の新機能

2020年7月16日に発表されたRust1.45には、次の追加と改善が含まれています。

  • 整数と浮動小数点数の間でキャストするときに、長年の不健全さを修正するための修正が提供されています。
  • 安定化は、式、パターン、およびステートメント内の関数のような手続き型マクロに対して提供されます。マクロの使用の拡大は、Rust用のRocketWebフレームワークの使用を支援します。
  • いくつかのライブラリのAPIは、次のような、安定化されたArc::as_ptrBTreeMap::remove_entrySpan::resolved_at。APIの完全なリストは、Rustブログにあります。

Rust1.43.1の新機能

このポイントリリースは、1.43.0安定版リリースで導入された2つのリグレッションに対処するために、2020年5月7日に導入されました。また、Cargoパッケージマネージャーが使用するOpenSSLバージョンも更新します。機能は次のとおりです。

  • Rust 1.27 introduced support for detecting x86 CPU features in the standard library, via the is_x86_feature_detected macro. Because of an internal refactoring, Rust 1.43.0 prevented detection of features that cannot be used on stable yet, even though detecting them previously was allowed. Version 1.43.1 fixes this regression.
  • A fix is offered for broken cargo package –list command. Rust 1.43 broke support for listing files included in packages published with Cargo, when executed inside a workspace with path dependencies or unpublished versions.
  • OpenSSL, a Cargo dependency, has been updated to 1.1.1g. OpenSSL had released a security advisory but the Rust team was not able to include the fix in time for Rust 1.43.0. The team has no evidence the vulnerability could compromise Cargo users’ security.

The new features in Rust 1.43.0

Announced April 23, 2020, Rust 1.43.0 was considered a fairly minor release, with no major features introduced. Changes include:

  • Developers can use item fragments to interpolate items into the body of trait, impl, and extern blocks.
  • The type inference around primitives, references, and binary operations was improved.
  • To help integration testing, Cargo will set some new environment variables for tests to find executables.
  • In the Rust library, developers can use associated constants on floats and integers directly without having to import the module. Also, there is a new primitive module that re-exports Rust primitive types, which is useful when writing a macro and developers want to ensure types are not shadowed.
  • Several APIs in the library were stabilized: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, and iter::once_with.

The new features in Rust 1.41

The new features in Rust 1.38

Rust 1.38, released in September 2019, contains the following new features and improvements:

  • The Cargo package manager will take advantage of pipelined compilation automatically with Rust 1.38. With pipelined compilation, the compiler does not need dependencies fully built when compiling a crate. All that is needed is their metadata, such as the list of types of dependencies. Metadata is produced early in the compilation process. Some tests have shown compilation speed increases of 10 to 20 percent for optimized, clean builds of some crate graphs. 
  • 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.

Rust1.35の新機能

2019年5月にリリースされたバージョン1.35は、以下を提供します。