論文の概要: 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コミュニティは、開発者がこれらのエラーを容易に検出して修正できるように、複数の言語プログラムを検証するための新しいツールに投資する必要がある。
関連論文リスト
- DistiLRR: Transferring Code Repair for Low-Resource Programming Languages [57.62712191540067]
Distilling Low-Resource repairs (DistiLRR) は、教師モデルから生徒モデルへの推論とコード生成能力を移行するアプローチである。
以上の結果から, DistiLRR は低リソース言語ではベースラインを一貫して上回るが, 高リソース言語では同様の性能を示すことがわかった。
論文 参考訳(メタデータ) (2024-06-21T05:05:39Z) - 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) - "Against the Void": An Interview and Survey Study on How Rust Developers Use Unsafe Code [2.2463451968497425]
Rustは、エイリアスと変更性を制限することで安全性を保証する。
サイクリックエイリアスやマルチオペレーティングといった重要なデザインパターンは、これらの制限を回避しなければならない。
論文 参考訳(メタデータ) (2024-04-02T18:36:21Z) - ReGAL: Refactoring Programs to Discover Generalizable Abstractions [59.05769810380928]
Generalizable Abstraction Learning (ReGAL)は、再利用可能な関数のライブラリをコード化して学習する手法である。
ReGALによって発見された共有関数ライブラリは、プログラムが様々な領域で容易に予測できることを示している。
CodeLlama-13Bでは、ReGALはLOGOで11.5%、日付理解で26.1%、TextCraftで8.1%という絶対精度が向上し、3つのドメインのうち2つでGPT-3.5を上回った。
論文 参考訳(メタデータ) (2024-01-29T18:45:30Z) - Towards a Transpiler for C/C++ to Safer Rust [0.10993800728351737]
RustはMozillaが開発したプログラミング言語で、パフォーマンスと安全性に重点を置いている。
既存のC++コードベースをRustに変換する方法も注目されている。
論文 参考訳(メタデータ) (2024-01-16T10:35:59Z) - AdaCCD: Adaptive Semantic Contrasts Discovery Based Cross Lingual
Adaptation for Code Clone Detection [69.79627042058048]
AdaCCDは、その言語でアノテーションを使わずに、新しい言語のクローンコードを検出する新しい言語間適応手法である。
5つのプログラミング言語からなる多言語コードクローン検出ベンチマークを構築し,AdaCCDの言語間適応性を評価する。
論文 参考訳(メタデータ) (2023-11-13T12:20:48Z) - 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) - 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) - InstructAlign: High-and-Low Resource Language Alignment via Continual
Crosslingual Instruction Tuning [66.31509106146605]
命令を調整した大規模言語モデル(LLM)は、様々なタスクや言語で顕著な能力を示している。
しかし、利用可能なデータが不足しているため、表現不足の言語に一般化する能力は限られている。
InstructAlignは、LLMが新しい未知の言語を学習済みの高リソース言語と整列できるようにするために、連続的なクロスリンガル命令チューニングを使用する。
論文 参考訳(メタデータ) (2023-05-23T02:51:34Z) - Zero-Shot Cross-lingual Semantic Parsing [56.95036511882921]
7つのテスト言語に対する並列データを持たないゼロショット問題として,言語間セマンティックパーシングについて検討した。
英文論理形式ペアデータのみを用いて解析知識を付加言語に転送するマルチタスクエンコーダデコーダモデルを提案する。
このシステムは、ゼロショット解析を潜時空間アライメント問題としてフレーム化し、事前訓練されたモデルを改善し、最小のクロスリンガル転送ペナルティで論理形式を生成することができる。
論文 参考訳(メタデータ) (2021-04-15T16:08:43Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。