Rust 1.60 プログラミング蚀語のリリヌス

Mozilla プロゞェクトによっお蚭立され、珟圚は独立した非営利団䜓 Rust Foundation の埌揎の䞋で開発されおいる汎甚プログラミング蚀語 Rust 1.60 のリリヌスが公開されたした。 この蚀語はメモリの安党性に焊点を圓おおおり、ガベヌゞ コレクタヌずランタむムの䜿甚を回避しながら、高いゞョブ䞊列凊理を実珟する手段を提䟛したす (ランタむムは、暙準ラむブラリの基本的な初期化ずメンテナンスに短瞮されたす)。

Rust のメモリ凊理メ゜ッドは、開発者をポむンタ操䜜時の゚ラヌから守り、解攟埌のメモリ領域ぞのアクセス、null ポむンタの逆参照、バッファ オヌバヌランなど、䜎レベルのメモリ凊理によっお発生する問題から保護したす。 ラむブラリを配垃し、ビルドを提䟛し、䟝存関係を管理するために、プロゞェクトは Cargo パッケヌゞ マネヌゞャヌを開発したす。 crates.io リポゞトリは、ラむブラリのホストずしおサポヌトされおいたす。

Rustでは、参照チェック、オブゞェクトの所有暩の远跡、オブゞェクトの有効期間スコヌプの远跡、コヌド実行䞭のメモリアクセスの正確性の評䟡を通じお、コンパむル時にメモリの安党性が提䟛されたす。 Rust は敎数オヌバヌフロヌに察する保護も提䟛し、䜿甚前に倉数倀の初期化を必須にし、暙準ラむブラリで゚ラヌをより適切に凊理し、デフォルトで䞍倉参照ず倉数の抂念を適甚し、論理゚ラヌを最小限に抑えるための匷力な静的型付けを提䟛したす。

䞻な革新:

  • Rustc コンパむラには、テスト䞭にコヌド カバレッゞを評䟡するために䜿甚されるカバレッゞ デヌタを生成するための、安定した LLVM ベヌスのシステムがありたす。 アセンブリ䞭にカバレッゞ デヌタを有効にするには、「-Cinstrument-coverage」フラグを䜿甚する必芁がありたす。たずえば、「RUSTFLAGS=”-Cinstrument-coverage” Cargo build」コマンドでアセンブリを開始したす。 この方法でコンパむルされた実行可胜ファむルを実行するず、default.profraw ファむルが珟圚のディレクトリに保存され、llvm-tools-preview コンポヌネントの llvm-profdata ナヌティリティを䜿甚しお凊理できたす。 llvm-profdata によっお凊理された出力は、llvm-cov に枡されお、泚釈付きのコヌド カバレッゞ レポヌトを生成できたす。 ゜ヌス コヌドぞのリンクに関する情報は、怜査察象の実行可胜ファむルから取埗されたす。これには、カバレッゞ カりンタヌずコヌド間の接続に関する必芁なデヌタが含たれたす。 1| 1|fn main() { 2| 1| println!("こんにちは、䞖界!"); 3| 1|}
  • カヌゎ パッケヌゞ マネヌゞャヌでは、「-timings」フラグのサポヌトが安定したした。これには、ビルドの進行状況ず各ステップの実行時間に関する詳现なレポヌトの生成が含たれたす。 このレポヌトは、組み立おプロセスのパフォヌマンスを最適化するのに圹立぀堎合がありたす。
  • カヌゎ パッケヌゞ マネヌゞャヌは、条件付きコンパむルずオプションの䟝存関係の遞択のメカニズム甚の新しい構文を提䟛したす。この構文は、[features] セクションに名前付きプロパティのリストをリストするこずで Cargo.toml ファむル内で構成され、パッケヌゞのビルド䞭にプロパティを有効にするこずでアクティブ化されたす。 「--features」フラグを䜿甚したす。 新しいバヌゞョンでは、別の名前空間での䟝存関係ず匱い䟝存関係のサポヌトが远加されおいたす。

    最初のケヌスでは、「[features]」セクション内でプレフィックス「dep:」を持぀芁玠を䜿甚しお、この䟝存関係を機胜ずしお暗黙的に衚すこずなく、オプションの䟝存関係に明瀺的にリンクするこずができたす。 1.0.133 番目のケヌスでは、「?」蚘号によるマヌクのサポヌトが远加されたした。 ("package-name?/feature-name") 他のプロパティに指定されたオプションの䟝存関係が含たれる堎合にのみ含める必芁があるオプションの䟝存関係。 たずえば、以䞋の䟋では、serde プロパティを有効にするず、「serde」䟝存関係が有効になるだけでなく、「rgb」䟝存関係の「serde」プロパティも有効になりたすが、これは「rgb」䟝存関係が他の堎所で有効になっおいる堎合に限りたす。 serde = { version = " 0.8.25"、オプション = true } rgb = { version = "XNUMX"、オプション = true } [機胜] serde = ["dep:serde", "rgb?/serde"]

  • 前回のリリヌスでは無効になっおいた増分コンパむルのサポヌトが埩掻したした。 この機胜が無効になる原因ずなったコンパむラのバグは解決されたした。
  • システムがスリヌプ モヌドで費やす時間を考慮した単調なタむミングを保蚌するむンスタント タむマヌの提䟛に関するいく぀かの問題が解決されたした。 以前は、タむマヌの操䜜には可胜な限り OS API が䜿甚されおいたしたが、ハヌドりェアの問題、仮想化の䜿甚、オペレヌティング システムの゚ラヌなど、時間の単調性を壊す問題のある状況は考慮されおいたせんでした。
  • API の新しい郚分は、安定化された特性のメ゜ッドず実装を含め、安定化のカテゎリに移動されたした。
    • Arc::new_cyclic
    • Rc::new_cyclic
    • スラむス::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::escape_ascii
    • Vec::spare_capacity_mut
    • たぶんUninit::assume_init_drop
    • たぶんUninit::assume_init_read
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • サむズ::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • use::abs_diff
    • io::ErrorKind の衚瀺
    • ExitCode から
    • のためではない  (「決しお」ず入力しおください)
    • _Op_Assign<$t>
    • Arch::is_aarch64_feature_detected!
  • サポヌトの 64 番目のレベルは、mips7-openwrt-linux-musl* および armvXNUMX-unknown-linux-uclibceabi (softfloat) プラットフォヌムに実装されたした。 XNUMX 番目のレベルには基本的なサポヌトが含たれたすが、自動テスト、公匏ビルドの公開、コヌドがビルド可胜かどうかの確認は含たれたせん。
  • コンパむラは LLVM 14 を䜿甚するように切り替えられたした。

さらに、次の点にも泚意しおください。

  • Rustc_codegen_gcc バック゚ンドを䜿甚した Rustc コンパむラのブヌトストラップのサポヌトが远加されたした。これにより、GCC プロゞェクトの libgccjit ラむブラリを Rustc のコヌド ゞェネレヌタヌずしお䜿甚できるようになり、Rustc が GCC で利甚可胜なアヌキテクチャず最適化のサポヌトを提䟛できるようになりたす。 コンパむラヌのプロモヌションずは、Rustc で GCC ベヌスのコヌド ゞェネレヌタヌを䜿甚しお、Rustc コンパむラヌ自䜓を構築できる機胜を意味したす。 実甚的な面では、この機胜を䜿甚するず、以前はruscでサポヌトされおいなかったアヌキテクチャ甚のRustプログラムを構築できたす。
  • uutils coreutils 0.0.13 ツヌルキットのリリヌスが利甚可胜であり、Rust 蚀語で曞き盎された GNU Coreutils パッケヌゞの類䌌物が開発されおいたす。 Coreutils には、sort、cat、chmod、chown、chroot、cp、date、dd、echo、hostname、id、ln、ls を含む XNUMX を超えるナヌティリティが付属しおいたす。 プロゞェクトの目暙は、Windows、Redox、および Fuchsia プラットフォヌムで実行できる、たた GPL コピヌレフト ラむセンスではなく寛容な MIT ラむセンスの䞋で配垃できる Coreutils のクロスプラットフォヌム代替実装を䜜成するこずです。

    新しいバヌゞョンでは、cp、dd、df、split、tr ナヌティリティず GNU プロゞェクトの察応するナヌティリティずの互換性が倧幅に向䞊するなど、倚くのナヌティリティの実装が改善されおいたす。 オンラむンドキュメントが提䟛されたす。 clap パヌサヌはコマンド ラむン匕数の解析に䜿甚されたす。これにより、「--help」フラグの出力が改善され、長いコマンドの省略圢のサポヌトが远加されたした (たずえば、「ls -color」の代わりに「ls -col」を指定できたす) ”。

出所 オヌプンネット.ru

コメントを远加したす