MS "C언어 코드, 성능 손실 없이 러스트로 자동 전환"
마이크로소프트가 C언어로 작성된 코드를 안전하고 효율적으로 러스트(Rust)로 자동 변환할 수 있는 방법을 제시했다.
6일 마이크로소프트는 'C언어를 안전하게 러스트로 컴파일하기, 형식화(Compiling C to Safe Rust, Formalized)'라는 논문을 아카이브를 통해 발표했다.
프랑스 국립디지털과학기술연구소(INRIA)와 공동으로 발표한 이번 논문은 C언어로 작성된 코드베이스를 안전하게 러스트로 자동 전환해 메모리 안전성을 높이기 위한 방법을 제시한다. 단순히 러스트로 코드를 전환하는 것이 아니라 '안전하지 않은(unsafe)' 코드를 없애 메모리 안전성을 더욱 강화할 수 있는 방법을 제안하는 것이 특징이다.
안전하지 않은 코드는 하드웨어 및 운영체제(OS)와 직접 상호작용하는 저수준 작업이나 성능 최적화를 위한 코드다. 이를 위해 컴파일러의 안전성 검사를 우회하거나 메모리 안전성을 수동으로 관리할 수 있는 옵션을 제공한다. 하지만 이를 잘못 사용할 경우 메모리 손상이나 보안취약점 등 잠재적인 문제를 야기할 수 있다.
연구팀은 안전하지 않은 코드를 사용하지 않기 위해 C언어의 메모리 관리 방식과 포인터 산술을 러스트의 안전한 슬라이스 및 대체 가능한 구조로 변환하는 방법을 제시했다.
연구진은 HACL스타 암호화 라이브러리 등 검증된 기존 코드베이스에 이 방법을 적용해 성능 손실 없이 러스트로 전환이 가능하다고 밝혔다.
러스트로 변환된 코드는 메모리 안전성을 보장하는 보로우 체커(Borrow Checker) 등의 기능을 활용해 C언어에서 발생할 수 있는 메모리 문제를 안전하게 처리할 수 있었다. 또 성능은 거의 그대로 유지돼 속도가 중요한 업무에도 그대로 적용 가능하다.
마이크로소프트 연구진은 "이 방법은 메모리 안전성을 보장하면서도 성능을 거의 손상시키지 않는 결과를 얻었다"며 "C언어 코드를 러스트로 전환하기 위한 실제적이고 신뢰할 수 있는 방법을 제시하며 산업 전반의 보안 문제 해결하는 데 도움을 줄 것으로 기대한다"고 논문을 통해 밝혔다.