"러스트는 암적인 요소"… 리눅스 커널 개발자간 논란 심화

코드의 일관성 VS 보안성 강화…리누스 토발즈 "장기적으로 지켜봐야"

컴퓨팅입력 :2025/02/07 10:11

리눅스 커널 개발자 사이에서 C와 러스트를 함께 사용하는 것에 대한 논쟁이 계속되고 있다.

리눅스 커널의 러스트 도입은 보안과 안정성을 높이려는 취지에서 시작됐다. 그러나 다중 언어 지원으로 인한 유지보수 문제와 코드 일관성 저하에 대한 지적과 함께 개발자들 사이에서 의견이 엇갈리고 있다.

7일 더레지스터 등 외신은 리눅스커널 개발자 간에 C와 러스트의 혼재를 두고 논란이 불거졌다고 보도했다.

리눅스

최근 러스트로 작성된 장치 드라이버가 C기반 커널의 핵심 DMA API를 호출할 수 있는 추상화 제안에 대해 커널 유지 관리자 크리스토프 헬위그가 반대하며 논란이 불거졌다.

그가 강하게 반대한 이유는 러스트로 작성된 디바이스 드라이버가 C로 작성된 DMA API를 호출할 수 있도록 설계된 새로운 추상화 계층에서 비롯됐다. 그는 이러한 방식이 기존 커널 코드베이스와 독립적으로 운영되면서, 코드의 일관성이 깨지고 커널 유지보수 비용이 증가할 것이라는 주장이다.

헬위그는 러스트를 기존에 작성한 C언어 코드와 함께 사용하는 것이 마치 '암적인 요소(cancer-like thing)'와 같다고 비유했다. 새로운 언어가 점진적으로 퍼지면서 점점 더 많은 영역을 차지하게 되고, 결국 리눅스 커널의 상당부분을 러스트로 전환해야 하는 상황이 올 수도 있다는 지적이다.

그는 "우리는 지금 하나의 커널을 유지하고 있으며, 이 코드베이스를 유지보수하는 커뮤니티가 있다"며 "그러나 두 개의 언어가 공존하면, 두 개의 다른 코드베이스를 유지해야 하는 것과 다름없다"고 덧붙였다.

또한 "DMA API에 러스트 인터페이스를 추가하는 것은 기존의 명확하고 단순한 C 코드에 불필요한 복잡성을 더하는 것과 같다"며 "이는 리눅스 커널의 구조를 더 이상 단순하게 유지할 수 없게 만들며, 시간이 지나면서 단순히 새로운 언어를 지원하는 것이 아니라, 기존의 체계를 바꾸어야 하는 수준으로 발전하는 것이 문제라고 지적했다.

러스트의 도입을 지지하는 개발자들은 러스트 코드가 기존 C API를 직접 변경하는 것이 아니라, C API를 추상화하는 계층을 통해 접근한다고 반박했다.

리눅스용 러스트 프로젝트를 주도하는 미구엘 오제다는 "러스트의 DMA API는 기존 C 코드에 변경을 가하지 않으며, 러스트 드라이버 개발자들이 관리하는 별도의 러스트 코드베이스에서 유지된다"고 설명했다.

그는 이러한 방식을 통해 기존 C 코드와 러스트 코드가 명확하게 분리되며, 기존 커널 구조를 유지하면서 러스트의 메모리 안전성을 활용할 수 있다고 강조했다.

그러나 헬위그와 같은 일부 커널 유지 관리자들은 러스트가 점차 커널 코드베이스를 잠식할 가능성을 우려하며, 핵심 서브시스템에서의 러스트 사용을 최소화해야 한다고 주장하고 있다.

관련기사

러스트 도입을 둘러싼 논쟁이 심화되는 가운데 리눅스 커널 창시자인 리누스 토발즈는 중립적인 입장을 보였다.

그는 "러스트 도입을 실패라고 보기에는 아직 이르다"며 "우리는 이 작업을 몇 년째 진행 중이며, 이를 통해 많은 것을 배우고 있다"고 말했다. 러스트의 도입이 아직 실험적인 단계에 있으며, 개발자들이 점진적으로 문제를 해결해 나갈 수 있다는 입장이다.