論文の概要: Context-aware Code Segmentation for C-to-Rust Translation using Large Language Models
- arxiv url: http://arxiv.org/abs/2409.10506v1
- Date: Mon, 16 Sep 2024 17:52:36 GMT
- ステータス: 処理完了
- システム内更新日: 2024-09-17 14:38:40.444890
- Title: Context-aware Code Segmentation for C-to-Rust Translation using Large Language Models
- Title(参考訳): 大規模言語モデルを用いたC-to-Rust翻訳のための文脈認識型コードセグメンテーション
- Authors: Momoko Shiraishi, Takahiro Shinagawa,
- Abstract要約: 大きな言語モデル(LLM)は、ルールベースのメソッドよりも自然で安全なコードを生成することで、この翻訳を自動化することを約束している。
大規模Cコードをコンパイル可能なRustコードに変換する際の成功率を改善するLLMベースの翻訳方式を提案する。
4キロのコードを含む20のベンチマークCプログラムの実験では、すべてのプログラムをコンパイル可能なRustコードに変換することに成功した。
- 参考スコア(独自算出の注目度): 1.8416014644193066
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: There is strong motivation to translate C code into Rust code due to the continuing threat of memory safety vulnerabilities in existing C programs and the significant attention paid to Rust as an alternative to the C language. While large language models (LLMs) show promise for automating this translation by generating more natural and safer code than rule-based methods, previous studies have shown that LLM-generated Rust code often fails to compile, even for relatively small C programs, due to significant differences between the two languages and context window limitations. We propose an LLM-based translation scheme that improves the success rate of translating large-scale C code into compilable Rust code. Our approach involves three key techniques: (1) pre-processing the C code to better align its structure and expressions with Rust, (2) segmenting the code into optimally sized translation units to avoid exceeding the LLM's context window limits, and (3) iteratively compiling and repairing errors while maintaining consistency between translation units using context-supplementing prompts. Compilation success is an essential first step in achieving functional equivalence, as only compilable code can be further tested. In experiments with 20 benchmark C programs, including those exceeding 4 kilo lines of code, we successfully translated all programs into compilable Rust code without losing corresponding parts of the original code.
- Abstract(参考訳): 既存のCプログラムにおけるメモリ安全性の脆弱性の継続的な脅威と、C言語の代替としてRustに多大な注意を払っているため、CコードをRustコードに変換する動機は強い。
大きな言語モデル(LLM)はルールベースのメソッドよりも自然で安全なコードを生成することで、この翻訳を自動化することを約束している。
大規模Cコードをコンパイル可能なRustコードに変換する際の成功率を改善するLLMベースの翻訳方式を提案する。
提案手法には,(1)構造と式をRustに整合させるためにCコードの前処理,(2)LLMのコンテキストウインドウの限界を越えるのを避けるために,最適なサイズの翻訳単位に分割する,(3)コンテキストサプリメントプロンプトを用いた翻訳単位間の一貫性を維持しながら,エラーを反復的にコンパイルし,修復する,という3つの重要なテクニックが含まれている。
コンパイル可能なコードのみをさらにテストできるため、コンパイルの成功は機能的同値性を達成するための重要な第一歩である。
4キロのコードを含む20のベンチマークCプログラムの実験では、元のコードの一部を失うことなく、すべてのプログラムをコンパイル可能なRustコードに変換することに成功した。
関連論文リスト
- Decoding at the Speed of Thought: Harnessing Parallel Decoding of Lexical Units for LLMs [57.27982780697922]
大規模言語モデルは、自然言語の理解と生成において例外的な能力を示した。
しかし、それらの生成速度は、その復号過程の本質的にシーケンシャルな性質によって制限される。
本稿では,データ駆動方式で実装された新しいデコーディング手法であるLexical Unit Decodingを紹介する。
論文 参考訳(メタデータ) (2024-05-24T04:35:13Z) - 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) - IRCoder: Intermediate Representations Make Language Models Robust Multilingual Code Generators [49.903001442804594]
本研究では、コンパイラ中間表現(IR)を活用して、Code-LMの多言語機能を改善する可能性について検討する。
まず,約400万のソースコードファイルからなる並列データセットであるSLTransをコンパイルする。
次に、SLTransにおける因果言語モデリングトレーニングを継続して実施し、Code-LMはIR言語を学習せざるを得なかった。
IRCoderと呼ばれる結果のモデルは、さまざまなコード生成タスクやメトリクスに対して、サイズと一貫性のあるゲインを表示します。
論文 参考訳(メタデータ) (2024-03-06T17:52:08Z) - Guess & Sketch: Language Model Guided Transpilation [59.02147255276078]
学習されたトランスパイレーションは、手作業による書き直しやエンジニアリングの取り組みに代わるものだ。
確率的ニューラルネットワークモデル(LM)は、入力毎に可塑性出力を生成するが、正確性を保証するコストがかかる。
Guess & Sketch は LM の特徴からアライメントと信頼性情報を抽出し、意味的等価性を解決するためにシンボリック・ソルバに渡す。
論文 参考訳(メタデータ) (2023-09-25T15:42:18Z) - 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) - Exploring Continual Learning for Code Generation Models [80.78036093054855]
継続的学習(CL)は、コードドメインの中でまだ過小評価されていない重要な側面である。
コード生成,翻訳,要約,改良など,幅広いタスクをカバーするCodeTask-CLというベンチマークを導入する。
即時選択機構の不安定な訓練により,プロンプトプール (PP) などの有効手法が破滅的な忘れ込みに悩まされることが判明した。
論文 参考訳(メタデータ) (2023-07-05T16:58:39Z) - CoCoMIC: Code Completion By Jointly Modeling In-file and Cross-file
Context [82.88371379927112]
予め訓練されたコード LM 上で,ファイル内コンテキストとファイル内コンテキストを協調的に学習するための,クロスファイルコンテキストを組み込んだフレームワークを提案する。
CoCoMICは既存のコードLMを33.94%の精度で改善し、クロスファイルコンテキストが提供されるとコード補完のための識別子マッチングが28.69%増加した。
論文 参考訳(メタデータ) (2022-12-20T05:48:09Z) - Code Translation with Compiler Representations [21.702473137941006]
従来のトランスパイラは構文情報と手作りのルールに依存しており、適用性が制限され、不自然なコードを生成する。
コードへのニューラルマシン翻訳(NMT)アプローチの適用は、自然な翻訳を得られる一連のプログラムをうまく拡張した。
ここでは、C++、Java、Rust、Go言語に関する結果とともに、IR、特にLLVM IRによるコード翻訳を強化することを提案する。
論文 参考訳(メタデータ) (2022-06-30T14:21:57Z) - Natural Language to Code Translation with Execution [82.52142893010563]
実行結果-プログラム選択のための最小ベイズリスク復号化。
そこで本研究では,自然言語からコードへのタスクにおいて,事前訓練されたコードモデルの性能を向上することを示す。
論文 参考訳(メタデータ) (2022-04-25T06:06:08Z) - Synchromesh: Reliable code generation from pre-trained language models [38.15391794443022]
コード生成のための事前学習モデルの信頼性を大幅に向上するフレームワークであるSynchromeshを提案する。
まず、TST(Target similarity Tuning)を使用して、トレーニングバンクから、セマンティックなサンプル選択の新しい方法を使用して、数ショットのサンプルを検索する。
次に、Synchromeshはサンプルをトレーニング済みの言語モデルに供給し、対象言語の有効なプログラムセットに出力を制約する一般的なフレームワークであるConstrained Semantic Decoding (CSD)を使用してプログラムをサンプリングする。
論文 参考訳(メタデータ) (2022-01-26T22:57:44Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。