3 ポイント 投稿者 GN⁺ 2024-07-31 | 1件のコメント | WhatsAppで共有
  • CをRustに翻訳する(TRACTOR)

    • Dr. Dan Wallach
    • 20年以上にわたってCおよびC++のメモリ安全性の問題を解決しようとする努力の末、ソフトウェアエンジニアリングのコミュニティは結論に到達した
    • バグ検出ツールに依存するだけでは不十分である
    • コンパイル時点で安全でないプログラムを拒否できる「安全な」プログラミング言語を使用することが好まれる
    • TRACTORプログラムは既存のCコードをRustへ自動翻訳することを目標としている
    • 熟練したRust開発者が書いたものと同等の品質とスタイルを実現し、Cプログラムに起因するメモリ安全性のセキュリティ脆弱性を取り除くことが目標である
    • このプログラムには、静的解析、動的解析、大規模言語モデルのような機械学習技術の新しい組み合わせが含まれる可能性がある
    • 追加情報はSAM.GovのTRACTOR Special Noticeで確認できる
  • DARPAの主な成果

    • ステルス革命

      • DARPAのステルス技術研究の初期に、F-117Aの試作機であるHave Blueが1977年に初めて飛行に成功した
      • F-117Aプログラムの成功はステルス革命の始まりを告げ、これは国家安全保障に莫大な利益をもたらした
    • 手のひらの中のナビゲーション

      • 初期のGPS受信機は大きく重い装置だった
      • 1983年、DARPAはこれを小型化するために取り組み、GPS機能のはるかに広い普及を導いた
    • 現代インターネットへの道を切り開く

      • ARPAの研究は情報革命を始動させるうえで重要な役割を果たした
      • ARPANETの概念的基盤を開発し、デジタルプロトコルを発明してインターネットの誕生を導いた
  • GN⁺のまとめ

    • TRACTORプログラムは既存のCコードをRustへ自動翻訳し、メモリ安全性の問題を解決しようとする重要な試みである
    • DARPAの研究は、ステルス技術、GPSの小型化、インターネットの誕生など、現代技術の発展に大きく貢献した
    • この記事はソフトウェアエンジニアや技術史に関心のある人々にとって有益である可能性がある
    • 類似した機能を持つプロジェクトとしては、MicrosoftのChecked CやGoogleのCarbon言語がある

1件のコメント

 
GN⁺ 2024-07-31
Hacker News の意見
  • 熟練したプログラマーが書いた Rust は C とは大きく異なり、興味深いコードの大半は C++ で書かれている

    • C プログラムのすべてのアロケーションの寿命を静的に決定するのは非常に難しい問題である
    • C/C++ プログラムでは、ユーザーのクリックのようなイベントにアロケーションの寿命を結び付けることができる
    • 分析しようとしているプログラムにバグがある場合、寿命に意味がない可能性がある
    • 既存の研究は、分析対象のコードが正しいと仮定している
  • この提案が公開されたことは興味深い

    • 自動翻訳の実現可能性について期待を抑えようとしている
    • C のソースコードには Rust のソースコードより情報が少ない
    • 欠けている情報を生成することはできない
    • 正しく推論するには判断が必要であり、そこでは誤りが起こり得る
    • プロジェクトはある程度成功するかもしれないが、慎重に取り組むべきである
    • 政府のプロジェクトが、C に対する全面的な非難や Rust に対する全面的な称賛として解釈されないことを望む
  • 「Rust で世界を書き直そう」という考え方は好きではない

    • プロジェクトを新しい言語やプラットフォームに移植するなら、機械的な翻訳は望ましくない
    • より良いアーキテクチャを計画し、ソフトウェアシステムを設計することに時間を投資すべきである
    • Rust を使うと決めたなら、Rust で書くべきである
    • C をモダンな C に更新し、モデルチェッカーを使ってメモリ、リソース、整数演算の安全性を検証するほうがよい
  • 多くの人がこのプロジェクトを、C と C++ のコードを Rust に翻訳せよという要求として読んでいる

    • C と C++ は本質的に安全ではない
    • できるだけ多くのコードを安全な言語で翻訳または作成すべきである
    • 既存の C コードを Rust に翻訳するソフトウェアを支持している
    • Rust で世界を書き直そうという合意ではなく、安全な言語への移行を目標としている
  • 翻訳されたコードベースを維持することには問題がある

    • C で書かれたコードベースと、それを保守できる C エンジニアのチームが必要である
    • 自動翻訳された Rust のコードベースは、元のものより読みにくく理解しにくい可能性がある
    • Rust エンジニアのチームも必要になる
    • すでに Rust エンジニアがいるなら、手作業でコードを書き直すほうがよい
  • 自動で移植するプログラムは、C コードを安全にできるあらゆる機能を含んでいなければならない

    • Rust にはメモリバグがなく、C を自動で翻訳できるなら、すべてのメモリバグを自動で修正できるはずである
    • これは一般的には不可能である
  • Mozilla で解雇された有能なエンジニアをまず雇い、言語そのものの作業を継続させるほうがよい

    • 非同期処理はまだ完全には仕上がっていない
    • さまざまな問題点がある
  • DARPA がこの問題を推進するのはよいことだ

    • 安全な Rust への翻訳は非常に難しい
    • 現在も C から Rust へ翻訳するツールはあるが、結果は保守が難しい
    • 正しく行うには、配列サイズと非線形なポインタ利用の問題を解決しなければならない