메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

CRUST-Bench: C에서 안전한 Rust로의 변환을 위한 종합 벤치마크

CRUST-Bench: A Comprehensive Benchmark for C-to-safe-Rust Transpilation

 

개발자라면 누구나 한 번쯤은 상상해 봤을 겁니다.
"오래된 C 레거시 코드를, 안전하고 현대적인 Rust로 한 번에 자동 변환할 수 있다면 얼마나 좋을까?"
 

 

CRUST-Bench는 바로 그 상상을 연구 수준에서 현실로 끌어내린 프로젝트입니다. 기존의 코드 변환 벤치마크들이 대부분 단일 함수 수준, 경쟁 프로그래밍 문제, 또는 버그 수정과 같은 국소적 작업에 초점을 맞춘 것과는 달리, CRUST-Bench는 실제 오픈소스 C 프로젝트 전체를 안전한 Rust로 변환하는 현실적인 난이도와 검증 체계를 지향합니다.

 

 

이 논문이 흥미로운 이유는 단순히 "코드 자동 변환 정확도가 조금 더 좋아졌다" 수준을 넘어서, 실제 프로젝트 규모의 C 코드 전체를 안전하고, 러스트다운 방식으로 변환했을 때, 그 결과가 실제로 동작하는지 테스트 케이스로 검증할 수 있도록 설계되었다는 점입니다. 예를 들어, C의 포인터 기반 B-tree map 코드를 Rust의 Vec<u8> 등 안전한 추상화로 바꿔내야 하죠. 이제 진짜로 '레거시 코드 자동 이주 시대의 문'이 열린 셈입니다.

 

✅ 어떻게 작동하나요? – CRUST-Bench의 핵심 아이디어

 

CRUST-Bench가 도입한 가장 눈에 띄는 개념은 바로 "실제 오픈소스 C 프로젝트 전체를 대상으로 한 C-to-safe-Rust 벤치마크"입니다. 각 벤치마크는 C 프로젝트 전체 소스, 수작업으로 작성된 안전한 Rust 인터페이스(함수 시그니처, 타입, 소유권 명시), 그리고 Rust 테스트 케이스로 구성됩니다. 즉, 단순히 코드 한 줄을 바꾸는 게 아니라, 실제 Rust 생태계에서 요구하는 안전성과 관용적 스타일까지 강제하는 구조죠.
 

 

이러한 구성은 실제로 수작업 인터페이스 작성 + Rust 컴파일러 타입체크 + 테스트 케이스 통과로 구현되며, 이를 정확하고 신뢰성 있는 자동 변환 평가에 활용하는 게 CRUST-Bench의 강점입니다.

 

 

이 벤치마크는 총 4단계의 구축 및 평가 과정을 거쳐 만들어졌습니다:

  • 프로젝트 선정 – 실제 오픈소스 C 프로젝트 100개를 선정해 현실적인 난이도와 다양성을 확보합니다.
  • Rust 인터페이스 작성 – 각 프로젝트마다 수작업으로 안전하고 관용적인 Rust 함수 시그니처, 타입, 소유권 명시를 만듭니다.
  • 테스트 케이스 작성 – Rust로 변환된 코드가 실제로 제대로 동작하는지 검증할 테스트 케이스를 작성합니다.
  • 자동화 평가 및 에러 분석 – 다양한 LLM 및 에이전트 기반 시스템이 변환한 결과를 테스트 케이스로 평가하고, 오류 유형을 분석합니다.

 

✅ 주요 기술적 특징과 혁신점

 

CRUST-Bench의 핵심 기술적 특징은 크게 세 가지 측면에서 살펴볼 수 있습니다.

 

1. 프로젝트 단위의 벤치마크 설계
이는 단일 함수가 아니라, 여러 파일과 복잡한 의존성을 가진 실제 C 프로젝트 전체를 대상으로 벤치마크를 설계한 것입니다. 기존의 함수 단위 벤치마크와 달리, 실제 마이그레이션에서 발생하는 구조적/통합적 난이도까지 평가할 수 있습니다. 특히 포인터, 메모리 관리, 타입 변환 등에서 러스트다운 안전성 확보가 중요하게 작동합니다.

 

2. 수작업 Rust 인터페이스와 테스트 케이스 제공
이 특징의 핵심은 Rust 인터페이스(함수 시그니처, 타입, 소유권 등)를 사람이 직접 작성하고, Rust 테스트 케이스로 실제 동작을 검증한다는 점입니다. 이를 위해 Rust 컴파일러의 타입 체크테스트 자동 실행을 도입했으며, 이는 정확한 평가와 신뢰성으로 이어집니다. 실제로 LLM이 변환한 코드가 Rust의 안전성과 관용적 스타일을 얼마나 잘 따르는지, 테스트를 통해 명확히 드러납니다.

 

3. LLM 및 에이전트 시스템의 실질적 한계 분석
마지막으로 주목할 만한 점은 최신 LLM(OpenAI o1, Claude 3.7 Sonnet 등)과 오픈소스 모델(Virtuoso-Medium-32B 등), 그리고 에이전트 시스템(SWE-agent 등)의 실제 성능과 한계를 체계적으로 분석했다는 것입니다. 단일 시도(one-shot)와 반복 수리(repair loop) 모두 평가하며, 어떤 오류가 반복적으로 발생하는지까지 상세히 분석해, 향후 연구와 실무 적용의 방향성을 제시합니다.

 

✅ 실험 결과와 성능 분석

 

CRUST-Bench의 성능은 다음과 같은 실험을 통해 검증되었습니다.

 

1. 자동 변환 성공률(One-shot)
100개 프로젝트에서, OpenAI o1 등 최상위 LLM이 단일 시도(one-shot)로 안전하고 테스트를 통과하는 Rust 코드를 생성한 비율은 15%에 불과했습니다. 이는 기존의 함수 단위 벤치마크보다 훨씬 어려운 난이도임을 보여줍니다. 특히, 포인터/메모리/소유권 변환에서 많은 오류가 발생했습니다.

 

2. 반복 수리(Repair Loop) 성능
자동 변환 후, 실패한 테스트 케이스를 바탕으로 LLM이 코드를 반복적으로 수정하는 "generate-then-repair" 루프에서는 최대 32~37%까지 성공률이 상승했습니다. 기존의 에이전트 시스템(SWE-agent 등)은 이보다 낮은 성능을 보였습니다.

 

3. 실제 마이그레이션 시나리오에서의 평가
실제 오픈소스 프로젝트를 대상으로 테스트한 결과, Rust의 안전성/관용성/기능적 동작을 모두 만족하는 자동 변환은 여전히 쉽지 않다는 점이 드러났습니다. 하지만, 구조적 변환, 타입/소유권 명시, 테스트 기반 검증 등 실무에 필요한 요소를 모두 갖춘 평가 체계를 제공한다는 점에서 실용적 가치가 높습니다.

 

이러한 실험 결과들은 CRUST-Bench가 C-to-safe-Rust 자동 변환의 현실적 난이도와 한계를 명확히 보여주며, 향후 LLM 및 자동화 도구 발전 방향에 중요한 시사점을 제공합니다.

 

✅ 성능은 어떨까요?

 

CRUST-Bench에서는 CRUST-Bench 자체기존 함수 단위 벤치마크에서 각각 15%, 상대적으로 높은 성공률(기존 벤치마크 기준)이라는 점수를 기록했습니다. 이는 OpenAI o1, Claude 3.7 Sonnet, Virtuoso-Medium-32B 등 최신 모델의 성능입니다.

실제로 실제 오픈소스 프로젝트 자동 변환 시나리오, 특히 메모리 안전성, 소유권, 복잡한 타입 변환에서도 꽤 자연스러운 반응을 보입니다.
물론 아직 "포인터 변환, 복잡한 메모리 관리, Rust 관용성 확보" 영역에서는 약간의 미흡함이 존재하긴 하지만, 현재 수준만으로도 다양한 서비스에 활용 가능성이 큽니다.

 

✅ 어디에 쓸 수 있을까요?

 

CRUST-Bench는 단지 새로운 모델이 아니라, "실제 프로젝트 단위의 안전한 코드 자동 변환 평가"라는 흥미로운 방향성을 제시합니다.
앞으로는 더 많은 대규모 코드베이스 자동 이주, 예를 들면 운영체제 커널, 네트워크 라이브러리, 임베디드 시스템까지 인식하게 될 가능성이 큽니다.

  • 레거시 시스템 현대화: 오래된 C 기반 시스템을 Rust로 안전하게 이주할 때, 자동 변환 도구의 신뢰성 평가 및 개선에 활용
  • LLM 기반 코드 변환 연구: 대규모 언어 모델의 코드 변환 능력 평가 및 한계 분석, 새로운 코드 생성/변환 모델 개발에 활용
  • 교육 및 실습: 실무에 가까운 코드 변환 과제를 통해 Rust의 안전성, 소유권, 타입 시스템을 학습하고 실습하는 데 활용

이러한 미래가 CRUST-Bench로 인해 조금 더 가까워졌습니다.

 

✅ 개발자가 지금 할 수 있는 일은?

 

CRUST-Bench에 입문하려면, 기본적인 C와 Rust 언어 지식테스트 기반 개발 경험에 대한 이해가 필요합니다.
다행히도 공식 GitHub 저장소에 예제 코드와 벤치마크 데이터셋이 잘 정리되어 있어, 실제 프로젝트를 내려받아 직접 변환 실험을 해볼 수 있습니다. Rust 인터페이스와 테스트 케이스를 참고해, LLM이나 직접 작성한 변환 코드의 정확성을 검증해볼 수 있습니다.

실무에 적용하고 싶다면?
CRUST-Bench 데이터셋을 확보하고, 다양한 C 프로젝트를 대상으로 LLM 또는 코드 변환 도구를 테스트하면서 모델을 실제 프로젝트 단위로 평가 및 개선하는 것이 핵심입니다. 또한, 테스트 케이스 추가, Rust 인터페이스 커스터마이즈, 자동화 파이프라인 구축도 병행되어야 합니다.

 

✅ 마치며

 

CRUST-Bench는 단순한 기술적 진보를 넘어, 대규모 레거시 코드의 안전한 현대화와 자동화라는 더 큰 의미의 패러다임 전환을 향한 중요한 이정표입니다. 이 기술이 제시하는 가능성은 소프트웨어 산업과 오픈소스 생태계의 미래를 재정의할 잠재력을 가지고 있습니다.

 

우리는 지금 코드 자동 변환과 소프트웨어 안전성 혁신의 중요한 변곡점에 서 있으며, CRUST-Bench는 그 여정의 핵심 동력이 될 것입니다. 당신이 이 혁신적인 기술을 활용하여 미래를 선도하는 개발자가 되어보는 건 어떨까요?

 

▶ 논문 원문 보러가기

 

✅ 같이 보면 좋은 참고 자료들

 

IberBench: LLM Evaluation on Iberian Languages
- 논문 설명: 대규모 언어 모델(LLMs)은 포괄적으로 평가하기 어려운 상태이며, 특히 영어 외의 언어에서는 고품질 데이터가 종종 제한적입니다.
- 저자: José Ángel González, Ian Borrego Obrador, Álvaro Romo Herrero, Areg Mikael Sarvazyan, Mara Chinea-Ríos, Angelo Basile, Marc Franco-Salvador
- 발행일: 2025-04-23
- PDF: 링크

DreamO: A Unified Framework for Image Customization
- 논문 설명: 최근 이미지 맞춤화(예: 정체성, 주제, 스타일, 배경 등)에 대한 광범위한 연구는 대규모 생성 모델에서 강력한 맞춤화 능력을 보여줍니다.
- 저자: Chong Mou, Yanze Wu, Wenxu Wu, Zinan Guo, Pengze Zhang, Yufeng Cheng, Yiming Luo, Fei Ding, Shiwen Zhang, Xinghui Li, Mengtian Li, Songtao Zhao, Jian Zhang, Qian He, Xinglong Wu
- 발행일: 2025-04-23
- PDF: 링크

Building A Secure Agentic AI Application Leveraging A2A Protocol
- 논문 설명: 에이전틱 AI 시스템이 기본 워크플로우에서 복잡한 다중 에이전트 협업으로 발전함에 따라, 구글의 에이전트 간 통신 프로토콜(Agent2Agent, A2A)과 같은 강력한 프로토콜이 필수적인 요소가 됩니다.
- 저자: Idan Habler, Ken Huang, Vineeth Sai Narajala, Prashant Kulkarni
- 발행일: 2025-04-23
- PDF: 링크

 

댓글

댓글 입력