[Paper] His2Trans: 자체 진화 C→Rust 번역을 위한 Skeleton First Framework와 Historical Retrieval

발행: (2026년 3월 3일 PM 02:42 GMT+9)
9 분 소요
원문: arXiv

Source: arXiv - 2603.02617v1

Overview

논문은 His2Trans라는 새로운 프레임워크를 소개한다. 이 프레임워크는 대규모 C 코드베이스를 Rust로 자동 이식하는 데 오랫동안 존재해 온 문제점을 해결한다. 빌드‑시간 스캐폴딩을 실제 코드‑생성 단계와 분리하고 과거 이식 사례로부터 지속적으로 학습함으로써, His2Trans는 거의 완벽에 가까운 증분 컴파일을 달성하고 보다 안전하고 관용적인 Rust 코드를 생성한다—이는 기존 LLM‑기반 도구들이 실제 프로젝트에서 겪는 어려움이다.

주요 기여

  • 결정론적 프로젝트‑레벨 스켈레톤 그래프: 빌드‑인식이며 엄격히 타입이 지정된 스켈레톤으로, 전역 검증(컴파일)을 로컬 로직 생성으로부터 분리합니다.
  • 자기 진화 지식 베이스: 과거 마이그레이션 추적에서 세분화된 API 및 코드‑조각 변환 규칙을 추출합니다.
  • LLM 가이드를 위한 검색‑강화 생성(RAG): 추론 시 지식 베이스를 활용해 대형 언어 모델을 관용적인 Rust API로 유도하여 환각을 감소시킵니다.
  • 산업‑규모 평가: OpenHarmony 모듈에서 시연했으며, 최신 C2Rust 도구 대비 99.75 %의 증분 컴파일 성공률과 23.6 %의 unsafe‑코드 비율 감소를 달성했습니다.
  • 진화적 효율성 향상: 검증된 패턴을 지속적으로 통합함으로써 미보는 작업에 대한 복구 오버헤드를 약 60 % 감소시켰으며, 마이그레이션이 늘어날수록 시스템이 개선됨을 보여줍니다.

Methodology

  1. Build Tracing & Skeleton Construction

    • 원본 C 프로젝트를 계측(instrumentation)하여 정확한 의존성 그래프, 매크로 확장, 타입 정의를 캡처하면서 컴파일합니다.
    • 이 트레이스를 기반으로 His2Trans는 Project‑Level Skeleton Graph를 구축합니다: 외부 크레이트, 타입 선언, 모듈 경계는 모두 포함하지만 함수 본문은 자리표시자(placeholder)로 남겨 둔 최소한의 컴파일 가능한 Rust 스켈레톤입니다.
  2. Historical Knowledge Extraction

    • 과거 성공적인 마이그레이션(예: 이전 OpenHarmony 모듈)을 파싱하여 반복되는 변환 패턴을 식별합니다: “C malloc → Rust Box::new”, “POSIX 파일 API → std::fs 대응 함수” 등.
    • 이러한 패턴은 주변 코드 컨텍스트와 함께 세밀한 규칙으로 저장되고 인덱싱됩니다.
  3. Retrieval‑Augmented Generation (RAG)

    • 자리표시자에 대한 본문을 생성할 때, 시스템은 현재 컨텍스트(함수 시그니처, 주변 타입, 주석)를 사용해 규칙 베이스를 질의합니다.
    • 검색된 규칙은 프롬프트로 대형 언어 모델(예: GPT‑4)에 전달되어, 검색된 관용구에 맞는 Rust 코드를 생성합니다.
  4. Iterative Verification

    • 생성된 본문을 스켈레톤에 삽입하고 전체 프로젝트를 다시 컴파일합니다.
    • 실패가 발생하면 피드백 루프가 작동합니다: 프롬프트를 다듬거나 추가 규칙을 가져오거나, 결정론적 백업 생성기로 전환합니다.
  5. Self‑Evolution

    • 성공적으로 컴파일된 마이그레이션은 히스토리 트레이스 데이터베이스에 추가되어, 향후 실행을 위한 규칙 집합을 풍부하게 합니다.

결과 및 발견

벤치마크측정항목His2Trans이전 연구 (C2Rust / LLM‑only)
OpenHarmony 모듈 (산업용)증분 컴파일 통과율99.75 %~70 %
범용 C→Rust 스위트불안전 코드 비율23.6 % 낮음0 % (baseline)
경고 수 (Clippy)전체 경고가장 적음더 많음
보이지 않는 작업에 대한 복구 오버헤드컴파일 성공까지 평균 시간~60 % 감소Baseline

핵심 요약: 스켈레톤은 컴파일 가능한 골격을 보장함으로써 “의존성 지옥”을 제거하고, RAG 구성 요소는 환상적인 의존성 및 불안전한 구조를 크게 감소시킵니다. 시스템 성능은 더 많은 마이그레이션이 피드백될수록 향상되어 자체 진화 주장을 확인합니다.

Practical Implications

  • Accelerated Legacy Modernization: Companies can start migrating massive C codebases (e.g., embedded firmware, system libraries) without first untangling complex build systems.
  • Reduced Manual Refactoring: Developers receive Rust code that already respects idiomatic APIs, cutting the time spent on post‑generation cleanup.
  • Safer Code Generation: Lower unsafe‑code ratios mean fewer memory‑safety bugs, aligning with Rust’s core promise.
  • Continuous Learning Pipeline: Organizations can set up a migration-as-a-service pipeline where each successful migration enriches the knowledge base, yielding diminishing returns on future projects.
  • Tool Integration: His2Trans can be wrapped as a CLI or IDE plugin, feeding the skeleton and RAG steps into existing CI pipelines to automatically validate each incremental migration commit.

제한 사항 및 향후 작업

  • 고품질 빌드 트레이스에 대한 의존성: 스켈레톤 구축은 원본 C 빌드가 성공적으로 계측될 수 있다고 가정합니다. 불투명하거나 독점적인 빌드 도구를 사용하는 프로젝트는 여전히 어려움을 겪을 수 있습니다.
  • LLM 의존성: RAG가 환각을 완화하지만, 생성된 본문의 품질은 여전히 기본 LLM의 역량과 토큰 제한에 좌우됩니다.
  • 역사적 지식 범위: 규칙 베이스는 대상 코드가 이전에 마이그레이션된 프로젝트와 패턴을 공유할 때 가장 효과적이며, 매우 새로운 도메인은 수렴 속도가 느려질 수 있습니다.
  • 향후 방향: 저자들은 (1) 교차 컴파일 대상 지원 범위 확대, (2) 더 깊은 의미 보존을 위한 정적 분석 + LLM 하이브리드 접근 방식 탐색, (3) 커뮤니티 주도의 규칙 확장을 촉진하기 위해 스켈레톤‑그래프 추출기를 오픈소스화할 계획입니다.

저자

  • Shengbo Wang
  • Mingwei Liu
  • Guangsheng Ou
  • Yuwen Chen
  • Zike Li
  • Yanlin Wang
  • Zibin Zheng

논문 정보

  • arXiv ID: 2603.02617v1
  • Categories: cs.SE
  • Published: 2026년 3월 3일
  • PDF: PDF 다운로드
0 조회
Back to Blog

관련 글

더 보기 »