論文の概要: Syzygy: Dual Code-Test C to (safe) Rust Translation using LLMs and Dynamic Analysis
- arxiv url: http://arxiv.org/abs/2412.14234v2
- Date: Sat, 21 Dec 2024 18:49:38 GMT
- ステータス: 翻訳完了
- システム内更新日: 2024-12-24 12:13:30.651170
- Title: Syzygy: Dual Code-Test C to (safe) Rust Translation using LLMs and Dynamic Analysis
- Title(参考訳): Syzygy: デュアルコード-テスト C to (safe) Rust Translation using LLMs and Dynamic Analysis
- Authors: Manish Shetty, Naman Jain, Adwait Godbole, Sanjit A. Seshia, Koushik Sen,
- Abstract要約: Syzygyは、C言語を安全なRustに変換する自動化アプローチである。
これは、Rustのコード翻訳を安全にする上で、これまでで最大の自動化およびテスト検証済みのCである。
- 参考スコア(独自算出の注目度): 8.361424157571468
- License:
- Abstract: Despite extensive usage in high-performance, low-level systems programming applications, C is susceptible to vulnerabilities due to manual memory management and unsafe pointer operations. Rust, a modern systems programming language, offers a compelling alternative. Its unique ownership model and type system ensure memory safety without sacrificing performance. In this paper, we present Syzygy, an automated approach to translate C to safe Rust. Our technique uses a synergistic combination of LLM-driven code and test translation guided by dynamic-analysis-generated execution information. This paired translation runs incrementally in a loop over the program in dependency order of the code elements while maintaining per-step correctness. Our approach exposes novel insights on combining the strengths of LLMs and dynamic analysis in the context of scaling and combining code generation with testing. We apply our approach to successfully translate Zopfli, a high-performance compression library with ~3000 lines of code and 98 functions. We validate the translation by testing equivalence with the source C program on a set of inputs. To our knowledge, this is the largest automated and test-validated C to safe Rust code translation achieved so far.
- Abstract(参考訳): 高性能で低レベルのシステムプログラミングアプリケーションで広く使われているにもかかわらず、Cは手動のメモリ管理と安全でないポインタ操作による脆弱性の影響を受けやすい。
Rustは現代のシステムプログラミング言語であり、魅力的な代替手段を提供する。
独自のオーナシップモデルと型システムは、パフォーマンスを犠牲にすることなく、メモリ安全性を保証する。
本稿では、C言語を安全なRustに変換する自動化アプローチであるSyzygyを紹介する。
本手法は,LLM駆動型コードと動的解析による実行情報によって導かれるテスト翻訳の相乗的組み合わせを用いる。
このペア翻訳は、ステップごとの正確性を維持しながら、コード要素の依存関係順序でプログラム上のループで漸進的に実行される。
提案手法は,LLMの強みと動的解析を組み合わせたコード生成とテストのスケーリングと組み合わせという,新たな知見を提示する。
約3000行のコードと98の関数を持つ高速圧縮ライブラリであるZopfliの翻訳に本手法を適用した。
入力のセット上で、ソースCプログラムと等価性をテストすることにより、翻訳を検証する。
私たちの知る限り、これはRustのコード翻訳を安全にする上で、これまでで最大の自動化およびテスト検証済みのCです。
関連論文リスト
- Translating C To Rust: Lessons from a User Study [12.49361031696427]
Rustは、未使用のCプログラムが楽しむことのない保証として、プログラムの完全なメモリ安全性を提供することを目指している。
我々は,現実世界のCプログラムをRustに変換するよう人間に求めるユーザスタディについて報告する。
私たちの参加者は安全なRust翻訳を作成できますが、最先端の自動ツールではそうできません。
論文 参考訳(メタデータ) (2024-11-21T14:37:05Z) - Context-aware Code Segmentation for C-to-Rust Translation using Large Language Models [1.8416014644193066]
大きな言語モデル(LLM)は、ルールベースのメソッドよりも自然で安全なコードを生成することで、この翻訳を自動化することを約束している。
大規模Cコードをコンパイル可能なRustコードに変換する際の成功率を改善するLLMベースの翻訳方式を提案する。
4キロのコードを含む20のベンチマークCプログラムの実験では、すべてのプログラムをコンパイル可能なRustコードに変換することに成功した。
論文 参考訳(メタデータ) (2024-09-16T17:52:36Z) - 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) - Enabling Memory Safety of C Programs using LLMs [5.297072277460838]
C言語で書かれた低レベルのコードのメモリ安全性違反は、ソフトウェア脆弱性の主要な原因のひとつであり続けています。
このような違反を建設によって除去する方法の1つは、安全なC方言にCコードを移植することである。
このような方言は、最小限のランタイムオーバーヘッドで安全性を保証するためにプログラマが提供するアノテーションに依存している。
この移植は、プログラマに多大な負担をかける手作業であり、そのため、このテクニックの採用は限られている。
論文 参考訳(メタデータ) (2024-04-01T13:05:54Z) - FoC: Figure out the Cryptographic Functions in Stripped Binaries with LLMs [54.27040631527217]
削除されたバイナリの暗号関数を抽出するFoCと呼ばれる新しいフレームワークを提案する。
まず、自然言語における暗号関数のセマンティクスを要約するために、バイナリ大言語モデル(FoC-BinLLM)を構築した。
次に、FoC-BinLLM上にバイナリコード類似モデル(FoC-Sim)を構築し、変更に敏感な表現を作成し、データベース内の未知の暗号関数の類似実装を検索する。
論文 参考訳(メタデータ) (2024-03-27T09:45:33Z) - Towards a Transpiler for C/C++ to Safer Rust [0.10993800728351737]
RustはMozillaが開発したプログラミング言語で、パフォーマンスと安全性に重点を置いている。
既存のC++コードベースをRustに変換する方法も注目されている。
論文 参考訳(メタデータ) (2024-01-16T10:35:59Z) - LILO: Learning Interpretable Libraries by Compressing and Documenting Code [71.55208585024198]
LILOは、反復的に合成、圧縮、文書化を行う、ニューロシンボリックなフレームワークである。
LILOは、LLM誘導プログラム合成と、Stitchから自動化された最近のアルゴリズムの進歩を組み合わせたものである。
LILOのシンセサイザーが学習した抽象化を解釈し、デプロイするのを手助けすることで、AutoDocがパフォーマンスを向上させることが分かりました。
論文 参考訳(メタデータ) (2023-10-30T17:55:02Z) - Guess & Sketch: Language Model Guided Transpilation [59.02147255276078]
学習されたトランスパイレーションは、手作業による書き直しやエンジニアリングの取り組みに代わるものだ。
確率的ニューラルネットワークモデル(LM)は、入力毎に可塑性出力を生成するが、正確性を保証するコストがかかる。
Guess & Sketch は LM の特徴からアライメントと信頼性情報を抽出し、意味的等価性を解決するためにシンボリック・ソルバに渡す。
論文 参考訳(メタデータ) (2023-09-25T15:42:18Z) - LEVER: Learning to Verify Language-to-Code Generation with Execution [64.36459105535]
本稿では,プログラムの実行結果の検証を学習することで,言語からコードへの生成を改善するシンプルな手法であるLEVERを提案する。
具体的には、LLMからサンプリングされたプログラムが、自然言語入力、プログラム自体とその実行結果に基づいて正しいか否かを判定するために、検証者を訓練する。
LEVER はベースコード LLMs (4.6% から 10.9% まで) を継続的に改善し、それらすべてに対して新しい最先端の結果を得る。
論文 参考訳(メタデータ) (2023-02-16T18:23:22Z) - ReACC: A Retrieval-Augmented Code Completion Framework [53.49707123661763]
本稿では,語彙のコピーと類似したセマンティクスを持つコード参照の両方を検索により活用する検索拡張コード補完フレームワークを提案する。
我々は,Python および Java プログラミング言語のコード補完タスクにおけるアプローチを評価し,CodeXGLUE ベンチマークで最先端のパフォーマンスを実現する。
論文 参考訳(メタデータ) (2022-03-15T08:25:08Z) - Lexically Aware Semi-Supervised Learning for OCR Post-Correction [90.54336622024299]
世界中の多くの言語における既存の言語データの多くは、非デジタル化された書籍や文書に閉じ込められている。
従来の研究は、あまり良くない言語を認識するためのニューラル・ポスト・コレクション法の有用性を実証してきた。
そこで本研究では,生画像を利用した半教師付き学習手法を提案する。
論文 参考訳(メタデータ) (2021-11-04T04:39:02Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。