uutils projectは8月31日(現地時間)、「Rust Coreutils 0.11.0」をリリースした。
「Rust Coreutils」は、GNU Coreutilsに含まれる基本的なコマンドをRustで再実装するオープンソースプロジェクト。GNU Coreutilsとの互換性を維持しながら、クロスプラットフォーム対応、安全性、性能の向上を進めている。
「Rust Coreutils 0.11.0」では、コンパイラのようにエラーの発生箇所を示す診断機能が導入された。また、プロファイルに基づく最適化、GNUとの互換性向上、シンボリックリンクやTOCTOU競合状態に関する安全性の強化などが行われている。
「Rust Coreutils 0.11.0」のハイライトは次の通り。
〇エラー箇所をキャレットで示す新しい診断機能を導入
〇test、chmod、tr、sort、cutなど28コマンドに対応
〇エラー内容に応じて正しい構文や修正候補を表示
〇環境変数「UUTILS_DIAG」で診断表示を制御可能に
〇Linux、macOS、Windows向けリリースビルドでPGOを有効化
〇PGOによって処理性能を最大31%改善
〇GNUテストスイートで653件のテストに成功
〇テスト実行中にエラーとなる項目をゼロに
〇複数のGNU互換オプションおよび動作を追加
〇cp、mv、rm、chmodなどのファイル操作を安全化
〇複数のパニック、ハング、整数オーバーフローを修正
〇WindowsおよびWASIへの対応を改善
など。
従来のUnixコマンドは、エラーが発生すると標準エラー出力へ短いメッセージを表示していた。今回、Rust Coreutilsでは、入力された引数を再表示し、問題がある文字や範囲をキャレットで示す診断機能を導入した。利用可能な構文や修正候補も併せて表示される。描画には、Rust向け診断表示ライブラリ「ariadne」が使用されている。この機能は、標準エラー出力が端末へ接続されている場合にのみ既定で有効となる。スクリプト、パイプ、テスト環境では従来通り1行のエラーメッセージが出力され、終了コードも変更されない。このため、エラーメッセージを処理する既存のスクリプトとの互換性が維持される。
新しい診断機能は、今後uutilsのfindutilsやsedにも導入される予定。
環境変数「UUTILS_DIAG」には「always」「never」「auto」を指定できる。「always」ではファイルやパイプへ出力する場合も詳細な診断を表示し、「never」では端末上でも従来形式のメッセージを使用する。
「Rust Coreutils 0.11.0」は、GitHubから入手できる。
(川原 龍人/びぎねっと)
この記事をシェアしてください
