プログラミング言語の比較
チームが Rust に移行する理由
Rust の場合は 2 つの文になります。ガベージ コレクターを使用しないメモリの安全性と、実行時エラーのカテゴリー全体をビルド失敗に変えるコンパイラーです。その背後にある事例は制度的なものです。Linux カーネル (2022 年以降)、Microsoft の Windows コンポーネント、Firefox などのブラウザ コードを含む主要プロジェクトが Rust を採用したのは、まさに、Rust が防止するバグ、解放後の使用、バッファ オーバーラン、およびデータ競合が、C および C++ で数十年にわたって CVE を生み出してきたクラスであるためです。しかし、正直な導入は選択的です。サービスが長期間存続する場合、安全性が重要である場合、またはホット パス上にある場合には移行は効果がありますが、小規模な CRUD アプリが利益を得るよりも借用チェッカーのオンボーディングに何週間も費やすような場合には効果がありません。 Rust で成功したチームは、その保証と FFI ストーリーが最も効果を発揮する境界で最初に採用する傾向があります。
要点
- 安全性の主張は熱望的なものではありません。Rust は、コンパイル時に use-after-free クラスとバッファ オーバーフロー クラスを排除し、RFC に基づいたその進化は異常に規律正しく行われています。
- 導入アンカーには信頼性が含まれています。Linux カーネルのサポート、Windows コンポーネント、Firefox コンポーネント、およびカールの実験的な Rust 追加機能はすべて、C が歴史的に置かれていた地位にあります。
- GC のないシステム コードは、最後に一時停止ボタンが必要になる心配がないことを意味します。厳しいレイテンシ期限に直面しているサービスは、コレクタ スイープを待ちません。
- 型システムはモデリング ツールです。ステート マシン、解析されたドキュメント、および不変式は、実行時クラッシュではなく列挙型と型に存在します。
- エコシステムはその若さを示しています。crates.io は無駄がなく若いため、依存関係のリスクとメンテナンスのチャーンにより、依然として独自のセキュリティのレビューが必要です。
- Rust の採用は境界が存在する場合に成功します。つまり、C ライブラリをバインドし、ホット ループを置き換え、パーサーを強化します。すべてを大規模に置き換える必要がある場合は、スラッシュが続きます。
- Cargo は真にクラス最高のツールチェーンです。テスト、ドキュメント、ベンチマーク、依存関係管理は、他のほとんどのエコシステムにはない方法でコンパイラーに同梱されています。
- 雇用の現実性チェック: Rust 開発者は希少であり、多くの場合、システムの動作を好みます。単純な CRUD ニーズがあり、システムの義務がないチームは、ファッションとして Rust を採用すべきではありません。
現場ノート
ガベージ コレクターを使用しないメモリの安全性と、最悪のインシデント クラスをビルド エラーに変えるコンパイラーという 2 つの文が私を惹きつけました。私は依然として、境界がすでに存在する場合にのみ Rust の採用をコミットします。
よくある質問
Rust は実際にメモリに安全ですか?
はい、安全な Rust の場合: 安全でないブロックと FFI 境界をマークしてレビューすることで、ボロー チェッカーはコンパイル時に C/C++ CVE フィードを支配するバグのクラスを防ぎます。
Rust はあらゆる場所で C を置き換えるでしょうか?
いいえ、何十年にもわたる C インフラストラクチャ、組み込みツールチェーン、カーネル コードは役に立たず、Rust の採用は安全性が最も重要な境界をターゲットにしています。
Rust が悪いアイデアとなるのはどのような場合ですか?
小規模な CRUD アプリ、一回限りのスクリプト、およびシステム要件のないチーム: 借用チェッカー ランプとニッチな雇用は、安全性が節約する以上にコストがかかります。
Linux カーネルはなぜそれを採用したのでしょうか?
なぜなら、use-after-freeクラスやraceクラスのカーネルバグが後を絶たないからです。コンパイル時にそれらを防止する言語は、最も安価な長期パッチです。
プログラミング言語の比較 に対するKinetikatechの支援
私たちが毎日行っていること:システム作業、スクリプト、およびサービスの言語を、本番環境で実際に重要なこと、つまり安全性の保証、実際の速度、誰を雇用できるか、結果として得られるサービスの展開とパッチの適用がどれほど面倒であるかについて比較しました。 私たちのサーバー管理とWebサイト保守サービスは、評価、実装、24時間体制の監視、30分以内の緊急対応をエンドツーエンドでカバーします。