システム プログラミング言語のリリース 1.47 , Mozilla プロジェクトによって設立されました。 この言語はメモリの安全性に重点を置き、自動メモリ管理を提供し、タスクを使用せずに高いタスクの並列性を実現する手段を提供します。 и (ランタイムは、標準ライブラリの基本的な初期化とメンテナンスに要約されます)。
Rust の自動メモリ管理は、ポインタ操作時のエラーを排除し、解放後のメモリ領域へのアクセス、null ポインタの逆参照、バッファ オーバーランなど、低レベルのメモリ操作から生じる問題を防ぎます。 プロジェクトごとにライブラリを配布し、確実にアセンブリし、依存関係を管理するためのパッケージ マネージャーが開発されています。 。 リポジトリはライブラリをホストするためにサポートされています .
メイン :
- タイプのサポートを実装しました 任意のサイズ。以前は、すべての整数値に対して汎用関数を定義することが不可能であったため、標準ライブラリは最大 32 要素の配列に対してのみ組み込み特性サポートを提供していました (各サイズの特性は静的に定義されていました)。定数ジェネリック(「constジェネリック」)の機能のおかげで、任意の配列サイズに対してジェネリック関数を定義できるようになりましたが、コンパイラに実装されており、現在では言語の安定した機能にはまだ含まれていません。 任意のサイズの配列特性の標準ライブラリにあります。
たとえば、Rust 1.47 の次の構文は配列の内容を出力しますが、以前はエラーが発生していました。
fn main() {
xs = [0; 34];println!("{:?}", xs);
} - 短いトレース(バックトレース)の出力、緊急時の出力を提供します。 ほとんどの状況では関心がありませんが、出力を乱雑にし、問題の主な原因から注意をそらしてしまう要素は、トレースから除外されます。 完全なトレースを返すには、環境変数「RUST_BACKTRACE=full」を使用できます。 たとえば、コードの場合、
fn main() {
パニック!();
}従来は23段階でトレースが出力されていましたが、今後はXNUMX段階に削減されます。
すぐに本質を掴むための3ステップ:スレッド「main」が「明示的なパニック」でパニックになりました、src/main.rs:2:5
スタックバックトレース:
0: std::panicking::begin_panic
/rustc/d…d75a/library/std/src/panicking.rs:497 で
1: 遊び場::メイン
./src/main.rs:2 にあります
2: core::ops::function::FnOnce::call_once
/rustc/d…d75a/library/core/src/ops/function.rs:227 で - Rustc コンパイラは、次を使用してビルドするように更新されました。 (さび バックエンドとしての LLVM )。 同時に、バージョン 8 までの古い LLVM でビルドする機能も保持されますが、デフォルトでは ( ) は現在 LLVM 11 を使用しています。LLVM 11 は数日以内にリリースされる予定です。
- プラットフォーム上 Windows rustcコンパイラは、「-C control-flow-guard」フラグを使用して制御フローガードチェックを有効にする機能をサポートするようになりました。このフラグは現在、他のプラットフォームでは無視されます。
- API の新しい部分は、安定化されたものを含む安定化カテゴリに移されました。
ID::new_raw、
範囲::is_empty、
RangeInclusive::is_empty、
結果::as_deref、
結果::as_deref_mut、
Vec::リーク、
ポインタ::オフセットフロム、
f32::TAU および
f64::TAU。 - 「const」属性は、定数の代わりに任意のコンテキストで使用できるかどうかを決定し、メソッドで使用されます。
- ゼロ以外のすべての整数の場合は new。
- すべての整数に対するchecked_add、checked_sub、checked_mul、checked_neg、checked_shl、checked_shr、saturating_add、saturating_sub、saturating_mul。
- is_ascii_alphabetic、is_ascii_uppercase、is_ascii_ lowercase、is_ascii_alphanumeric、is_ascii_digit、is_ascii_hexdigit、is_ascii_punctuation、is_ascii_graphic、is_ascii_whitespace、および char および u8 型の is_ascii_control。
- FreeBSD 用 FreeBSD 11.4 からのツールチェーン (FreeBSD 10 は LLVM 11 をサポートしていません)。
出所: オープンネット.ru
