論文の概要: A Study of Undefined Behavior Across Foreign Function Boundaries in Rust Libraries
- arxiv url: http://arxiv.org/abs/2404.11671v2
- Date: Thu, 16 May 2024 20:16:54 GMT
- ステータス: 処理完了
- システム内更新日: 2024-05-20 18:12:19.416933
- Title: A Study of Undefined Behavior Across Foreign Function Boundaries in Rust Libraries
- Title(参考訳): ラストライブラリにおける外部関数境界の未定義挙動に関する研究
- Authors: Ian McCormack, Joshua Sunshine, Jonathan Aldrich,
- Abstract要約: Rustは、制限がはるかに弱い言語との相互運用に頻繁に使用される。
MiriLLIは、既存のRustとLLVMインタプリタを使用して、複数言語アプリケーションを共同で実行するツールです。
- 参考スコア(独自算出の注目度): 2.359557447960552
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: The Rust programming language restricts aliasing and mutability to provide static safety guarantees, which developers rely on to write secure and performant applications. However, Rust is frequently used to interoperate with other languages that have far weaker restrictions. These languages support cyclic and self-referential design patterns that conflict with current models of Rust's operational semantics, representing a potentially significant source of undefined behavior that no current tools can detect. We created MiriLLI, a tool which uses existing Rust and LLVM interpreters to jointly execute multi-language Rust applications. We used our tool in a large-scale study of Rust libraries that call foreign functions, and we found 45 instances of undefined or undesirable behavior. These include four bugs from libraries that had over 10,000 daily downloads on average, one from a component of the GNU Compiler Collection (GCC), and one from a library maintained by the Rust Project. Most of these errors were caused by incompatible aliasing and initialization patterns, incorrect foreign function bindings, and invalid type conversion. The majority of aliasing violations were caused by unsound operations in Rust, but they occurred in foreign code. The Rust community must invest in new tools for validating multi-language programs to ensure that developers can easily detect and fix these errors.
- Abstract(参考訳): Rustプログラミング言語は、開発者がセキュアでパフォーマンスの高いアプリケーションを記述することに依存する静的な安全保証を提供するために、エイリアスと変更性を制限する。
しかしながら、Rustは制限がはるかに弱い他の言語との相互運用に頻繁に使用される。
これらの言語は、Rustのオペレーショナルセマンティクスの現在のモデルと矛盾する、循環的かつ自己参照的なデザインパターンをサポートしており、現在のツールが検出できない、未定義の振る舞いの潜在的に重要なソースを表している。
MiriLLIは、既存のRustとLLVMインタプリタを使用して、多言語Rustアプリケーションを共同で実行するツールです。
当社のツールは,外部関数をコールするRustライブラリの大規模な調査で使用しました。
ひとつはGNUコンパイラコレクション(GCC)コンポーネントからのもので、もうひとつはRustプロジェクトによってメンテナンスされているライブラリからのものだ。
これらのエラーのほとんどは、非互換のエイリアスと初期化パターン、不正な外部関数バインディング、無効な型変換によって引き起こされた。
通告違反の大多数はラストでの無音作戦によって引き起こされたが、外国の法典で発生した。
Rustコミュニティは、開発者がこれらのエラーを容易に検出して修正できるように、複数の言語プログラムを検証するための新しいツールに投資する必要がある。
関連論文リスト
- ChatZero:Zero-shot Cross-Lingual Dialogue Generation via Pseudo-Target Language [53.8622516025736]
そこで本研究では,言語間符号切替方式に基づく,エンドツーエンドのゼロショット対話生成モデルChatZeroを提案する。
多言語DailyDialogとDSTC7-AVSDデータセットの実験は、ChatZeroが元のパフォーマンスの90%以上を達成することを示した。
論文 参考訳(メタデータ) (2024-08-16T13:11:53Z) - VERT: Verified Equivalent Rust Transpilation with Large Language Models as Few-Shot Learners [6.824327908701066]
Rustはメモリ安全性と低レベルのコントロールを組み合わせたプログラミング言語で、Cライクなパフォーマンスを提供する。
既存の作業はルールベースと大規模言語モデル(LLM)という2つのカテゴリに分類される。
私たちは、正式な正確性を保証する形で、可読性のあるRustトランスパイルを生成するツールであるVERTを紹介します。
論文 参考訳(メタデータ) (2024-04-29T16:45:03Z) - A Mixed-Methods Study on the Implications of Unsafe Rust for Interoperation, Encapsulation, and Tooling [2.2463451968497425]
Rust開発者は、マルチ言語アプリケーション内の健全性を保証するための検証ツールが必要である。
開発者は、外部関数呼び出しの理由、現在使用しているツールの制限、安全でないコードを使用する動機、そしてそれをカプセル化する理由について調査する。
論文 参考訳(メタデータ) (2024-04-02T18:36:21Z) - Demystifying Compiler Unstable Feature Usage and Impacts in the Rust
Ecosystem [6.742722083947134]
Rustコンパイラは、コンパイラ機能、構文、標準ライブラリのサポートを拡張するために、Rust不安定機能(RUF)を導入した。
RUFは削除され、依存パッケージにコンパイルエラーが導入される。
我々の調査によると、Rustエコシステムは1000種類のRUFを使用しており、少なくともパッケージバージョンの44%はRUFの影響を受けている。
広範囲にわたるRUFの影響を軽減するため, RUFコンパイル障害回復ツールの設計と実装を行う。
論文 参考訳(メタデータ) (2023-10-26T06:43:25Z) - Yuga: Automatically Detecting Lifetime Annotation Bugs in the Rust Language [15.164423552903571]
Rustプロジェクトでは、セキュリティ上の脆弱性が報告されている。
これらの脆弱性は、部分的には関数シグネチャの誤った終身アノテーションから生じます。
既存のツールはこれらのバグを検出するのに失敗する。
我々は,新たな静的解析ツールであるYugaを考案し,潜在的なライフタイムアノテーションのバグを検出する。
論文 参考訳(メタデータ) (2023-10-12T17:05:03Z) - Fixing Rust Compilation Errors using LLMs [2.1781086368581932]
Rustプログラミング言語は、C/C++のような従来の安全でない代替言語よりも、低レベルのシステムプログラミング言語に実行可能な選択肢として、自らを確立している。
本稿では,Large Language Models(LLMs)の創発的機能を活用し,Rustコンパイルエラーの修正を自動的に提案するRustAssistantというツールを提案する。
RustAssistantは、人気のあるオープンソースRustリポジトリの実際のコンパイルエラーに対して、約74%の驚くべきピーク精度を達成することができる。
論文 参考訳(メタデータ) (2023-08-09T18:30:27Z) - A Static Evaluation of Code Completion by Large Language Models [65.18008807383816]
単純なプログラミング問題に対するモデル生成コードの機能的正当性を評価するために,実行ベースベンチマークが提案されている。
プログラムを実行せずにエラーを検出するlinterのような静的解析ツールは、コード生成モデルを評価するために十分に研究されていない。
抽象構文木を利用して,Pythonのコード補完における静的エラーを定量化する静的評価フレームワークを提案する。
論文 参考訳(メタデータ) (2023-06-05T19:23:34Z) - Augmented Language Models: a Survey [55.965967655575454]
この調査は、言語モデル(LM)が推論スキルとツールの使用能力で強化されているかのレビューを行う。
私たちはこれらをAugmented Language Models (ALMs)と呼ぶ。
トークンの目的の欠如により、ALMは標準的な自然言語タスクを実行しながら、推論、ツールの使用、さらには行動を学ぶことができる。
論文 参考訳(メタデータ) (2023-02-15T18:25:52Z) - BigIssue: A Realistic Bug Localization Benchmark [89.8240118116093]
BigIssueは、現実的なバグローカライゼーションのためのベンチマークである。
実際のJavaバグと合成Javaバグの多様性を備えた一般的なベンチマークを提供する。
われわれは,バグローカライゼーションの最先端技術として,APRの性能向上と,現代の開発サイクルへの適用性の向上を期待している。
論文 参考訳(メタデータ) (2022-07-21T20:17:53Z) - Adversarial GLUE: A Multi-Task Benchmark for Robustness Evaluation of
Language Models [86.02610674750345]
AdvGLUE(Adversarial GLUE)は、様々な種類の敵攻撃の下で、現代の大規模言語モデルの脆弱性を調査し評価するための新しいマルチタスクベンチマークである。
GLUEタスクに14の逆攻撃手法を適用してAdvGLUEを構築する。
テストしたすべての言語モデルとロバストなトレーニングメソッドは、AdvGLUEではパフォーマンスが悪く、スコアは明確な精度よりもはるかに遅れています。
論文 参考訳(メタデータ) (2021-11-04T12:59:55Z) - Zero-Shot Cross-lingual Semantic Parsing [56.95036511882921]
7つのテスト言語に対する並列データを持たないゼロショット問題として,言語間セマンティックパーシングについて検討した。
英文論理形式ペアデータのみを用いて解析知識を付加言語に転送するマルチタスクエンコーダデコーダモデルを提案する。
このシステムは、ゼロショット解析を潜時空間アライメント問題としてフレーム化し、事前訓練されたモデルを改善し、最小のクロスリンガル転送ペナルティで論理形式を生成することができる。
論文 参考訳(メタデータ) (2021-04-15T16:08:43Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。