메모리 안전 취약 C, C++컴파일러 “100% 호환”
“C, C++퇴출” 목소리 잠재워, ‘트랩C’나 ‘러스트’ 쪼개기보다 우수
엔비디아도 도입, 유명 SW엔지니어 등도 적극 도입

C 언어 메모리 안전 문제를 해결한 Fil-C가 부상하고 있다. (출처=언스플래쉬)
C 언어 메모리 안전 문제를 해결한 Fil-C가 부상하고 있다. (출처=언스플래쉬)

[애플경제 전윤미 기자] 지난 수십 년 동안 소프트웨어 개발의 필수품이었던 C와 C++는 그러나 그 후 등장한 다른 언어들에 비해 메모리 보호 기능이 부족하다는 것이었다. 그럼에도 C와 C++는 꾸준히 사용됐다. 그 결과 이를 활용한 애플리케이션의 상당수가 메모리 안전 취약점을 노출했다.

그런 가운데 지난해부터 SW업계 일각에서 등장한 Fil-C(filcc, fil++)가 새삼 C, C++의 메모리 안전 문제를 해결할 대안으로 주목받고 있다. 처음엔 그다지 신뢰를 얻지 못했으나, 시간이 흐르면서 이는 여러 전문가들도 그 성능을 높이 평가하는 분위기다.

많은 라이브러리와 앱, Fil-C에서 무난히 작동

최근 일부 유명 소프트웨어 엔지니어들도 새로운 타입의 안전 C/C++ 컴파일러인 Fil-C를 사용해 보고 만족해한 것으로 알려졌다. 그 중엔 각국의 유명 수학자나 암호학자, 실리콘밸리의 코딩 전문가 등이 두루 포함되어 있다.

이들은 대체로 “새로운 메모리 안전 C/C++ 컴파일러 Fil-C의 호환성 수준에 깊은 인상을 받았다”거나, “많은 라이브러리와 애플리케이션이 Fil-C에서 변경 없이 작동했고, 예외도 어렵지 않게 해결되었다.”고 인정했다. 혹자는 “제가 관리하는 다양한 머신을 Fil-C로 컴파일된 코드로 전환하여 보호하는 것”이라며 “어쩌면 여기서도 유용한 정보를 찾을 수 있을지도 모른다”고 했다.

이미 해외 SW업계에선 1년 전쯤 새로운 메모리 안전 C 및 C++ 컴파일러로 Fil-C가 소개대되었다.

에픽게임즈의 언어 엔지니어링 수석 디렉터인 ‘필립 피즐로’가 자신만의 메모리 안전 C 버전으로 이를 만든 것이다. 이는 또 다른 메모리 안전 C 포크인 ‘트랩C’(TrapC)를 능가하는 것으로 알려졌다. 메모리 안전성을 포함해 ‘트랩C’가 주장하는 거의 모든 기능을 수행하며 무료로 사용할 수 있다.

피즐러는 일찍이 “C 및 C++와의 100% 호환성을 목표로 하며, 제 컴파일러로 컴파일하기만 하면 메모리 안전성을 확보할 수 있다”고 주장했다.

이는 C 컴파일러 실행 명령어인 클랭(Clang)을 기반으로 한다. 클랭은 애플에서 개발한 C 언어 계열용 오픈 소스 컴파일러 프로젝트인 ‘LLVM 컴파일러용 프런트엔드’라고 할 수 있다. 작년 12월에는 엔비디아도 이 컴파일러로 전환한다고 알려져 새삼 그 존재감이 돋보이기도 했다.

프로그래밍 언어로 코딩작업 중인 화면. (출처=펙셀)
프로그래밍 언어로 코딩작업 중인 화면. (출처=펙셀)

각종 C 메모리 안전 경로보다 우수

Fil-C는 이 분야의 유일한 도구가 아니다. C와 C++에 훨씬 더 높은 메모리 안전성을 제공하기 위한 하드웨어적인 노력도 있긴 했다. OMA(Object Memory Architecture) 역시 그 종류다. 최근 일부 블로그 게시물 등에선 ‘메모리 안전을 향한 여러 경로’ 중 하나로 소개되기도 한다.

Fil-C가 만병통치약은 아니지만 매우 의미있는 대안임엔 분명하다. C 오류의 모든 유형을 포착할 수 있다. 물론 단점도 있다. Fil-C로 컴파일된 코드는 일반적인 C 코드보다 실행 속도가 훨씬 느리다는 것이다. 또 Fil-C의 개발자가 ‘Yolo-C’라고 부르는 것과 완벽하게 호환되지 않는 문제점도 있다.

OS의 전체 C 코드베이스는 다시 컴파일해 이전처럼 실행할 수도 없고, 일반 C와 Fil-C를 섞어 사용할 수도 없다. 그러나 Fil-C를 사용하면 대규모 C 시스템의 일부 개별 구성 요소를 훨씬 더 안전하게 만들 수 있다.

러스트(Rust)를 포함해 Zig, Hare, 그리고 다른 많은 현대 ‘시스템 언어’들의 장점 중 하나가 메모리 안전이다. 그런 의미에서 Fil-C는 이들 시스템 언어들처럼 C의 취약점을 보완하는 도구다.

애초 C의 메모리 안전문제가 부각되면서 일부 개발자들은 C를 쪼개 ‘러스트’로 변환할 수 있도록 코드를 분리하는 등 다양한 대책을 모색하기도 했다. 그러나 Fil-C가 등장하면서, ‘러스트’를 탐탁치않게 여기던 개발자들이 다시 C에 눈을 돌리고 있다.

얼마 전까지도 “개발자들이 C와 C++ 사용을 중단하기를 바란다”고 했던 미국 정부도 태도를 바꿀 것으로 예상된다.

저작권자 © 애플경제 무단전재 및 재배포 금지