Daily Arxiv

전 세계에서 발간되는 인공지능 관련 논문을 정리하는 페이지 입니다.
본 페이지는 Google Gemini를 활용해 요약 정리하며, 비영리로 운영 됩니다.
논문에 대한 저작권은 저자 및 해당 기관에 있으며, 공유 시 출처만 명기하면 됩니다.

LLM-Driven Multi-step Translation from C to Rust using Static Analysis

Created by
  • Haebom
Category
Empty

저자

Tianyang Zhou, Haowen Lin, Somesh Jha, Mihai Christodorescu, Kirill Levchenko, Varun Chandrasekaran

개요

본 논문은 레거시 언어(C)로 작성된 소프트웨어를 현대 언어(Rust)로 변환하는 과정에서 발생하는 어려움을 해결하기 위해, LLM 기반의 C-to-Rust 제로샷 변환 도구인 SACTOR를 제안합니다. SACTOR는 의미를 보존하는 "unidiomatic" 단계와 Rust의 의미론적 표준을 따르도록 코드를 개선하는 "idiomatic" 단계의 두 단계 변환 방법론을 사용합니다. 소스 C 프로그램의 정적 분석 정보를 활용하여 포인터 의미론 및 종속성 해결과 같은 문제를 해결하며, 각 단계의 변환 결과 정확성을 검증하기 위해 외래 함수 인터페이스를 통한 종단 간 테스트를 수행합니다. 다양한 LLM(GPT-4o, Claude 3.5 Sonnet, Gemini 2.0 Flash, Llama 3.3 70B, DeepSeek-R1)을 사용하여 200개 프로그램을 변환하고 성능을 평가한 결과, 높은 정확성과 향상된 관용성을 달성함을 보여줍니다. 특히 DeepSeek-R1은 93%의 정확도를 달성하였으며, GPT-4o, Claude 3.5, DeepSeek-R1은 각 데이터셋에서 84%의 정확도를 달성했습니다.

시사점, 한계점

시사점:
LLM을 활용하여 레거시 코드를 현대 언어로 효율적이고 정확하게 변환하는 새로운 방법을 제시합니다.
SACTOR는 두 단계 변환 방법론과 정적 분석 정보 활용을 통해 기존 방법보다 높은 정확성과 관용성을 달성합니다.
다양한 LLM의 성능 비교를 통해 최적의 모델 선택에 대한 지침을 제공합니다.
레거시 시스템의 현대화 및 유지보수 비용 절감에 기여할 수 있습니다.
한계점:
현재는 C-to-Rust 변환에만 집중되어 있으며, 다른 레거시 언어 또는 현대 언어 조합으로의 확장성에 대한 연구가 필요합니다.
모든 종류의 C 코드에 대해 완벽한 정확성을 보장할 수는 없으며, 복잡한 코드의 경우 추가적인 수정이 필요할 수 있습니다.
평가에 사용된 데이터셋의 규모가 제한적일 수 있으며, 더 광범위한 데이터셋을 활용한 추가적인 평가가 필요합니다.
LLM의 성능에 의존적이므로, LLM의 발전에 따라 성능이 변동될 수 있습니다.
👍