Mozilla プロジェクトによって設立され、現在は独立した非営利団体 Rust Foundation の後援の下で開発されている汎用プログラミング言語 Rust 1.62 のリリースが公開されました。 この言語はメモリの安全性に焦点を当てており、ガベージ コレクターとランタイムの使用を回避しながら、高いジョブ並列処理を実現する手段を提供します (ランタイムは、標準ライブラリの基本的な初期化とメンテナンスに短縮されます)。
Rust のメモリ処理メソッドは、開発者をポインタ操作時のエラーから守り、解放後のメモリ領域へのアクセス、null ポインタの逆参照、バッファ オーバーランなど、低レベルのメモリ処理によって発生する問題から保護します。 ライブラリを配布し、ビルドを提供し、依存関係を管理するために、プロジェクトは Cargo パッケージ マネージャーを開発します。 crates.io リポジトリは、ライブラリのホストとしてサポートされています。
Rustでは、参照チェック、オブジェクトの所有権の追跡、オブジェクトの有効期間(スコープ)の追跡、コード実行中のメモリアクセスの正確性の評価を通じて、コンパイル時にメモリの安全性が提供されます。 Rust は整数オーバーフローに対する保護も提供し、使用前に変数値の初期化を必須にし、標準ライブラリでエラーをより適切に処理し、デフォルトで不変参照と変数の概念を適用し、論理エラーを最小限に抑えるための強力な静的型付けを提供します。
主な革新:
- 「cargo」パッケージ マネージャーには「add」コマンドが用意されており、これを使用すると、Cargo.toml マニフェストに新しい依存関係を追加したり、コマンド ラインから既存の依存関係を変更したりできます。 このコマンドを使用すると、個々の機能とバージョンを指定することもできます。たとえば、次のようになります。Cargo add serde —features derive Cargo add nom@5
- 「#[default]」属性を使用してデフォルトのオプションが定義されている列挙型で「#[derive(Default)]」を使用する機能が追加されました。 #[derive(Default)] enum たぶん{ #[デフォルト] 何もない、何か(T)、 }
- Linux プラットフォームでは、Linux カーネルによって提供される futex の使用に基づいて、よりコンパクトで高速な Mutex 同期メカニズムの実装が使用されます。 pthreads ライブラリに基づいて以前に使用されていた実装とは異なり、新しいバージョンでは Mutex 状態の保存に 5 バイトではなく 40 バイトのみが使用され、同様に、Condvar および RwLock ロック メカニズムが futex に転送されました。
- x86_64-unknown-none ターゲット プラットフォームのサポートの XNUMX 番目のレベルが実装され、オペレーティング システムなしで動作できる実行可能ファイルを生成するように設計されています。 たとえば、カーネル コンポーネントを作成するときに、指定されたターゲット プラットフォームを使用できます。 サポートの XNUMX 番目のレベルには、組み立て保証が含まれます。
- サポートの 64 番目のレベルは、aarch86-pc-windows-gnullvm および x64_XNUMX-pc-windows-gnullvm プラットフォームに実装されました。 XNUMX 番目のレベルには基本的なサポートが含まれますが、自動テスト、公式ビルドの公開、コードがビルド可能かどうかの確認は含まれません。
- API の新しい部分は、安定化された特性のメソッドと実装を含め、安定化のカテゴリに移動されました。
- bool::then_some
- f32::total_cmp
- f64::total_cmp
- 標準入力::行
- windows::CommandExt::raw_arg
- インプルAssertUnwindSafe のデフォルト値
- から > Rc用
- から > Arc<[u8]> 用
- Encodewide の FusedIterator
出所: オープンネット.ru