올해는 리눅스의 해가 아닐 것 같습니다. 작년 2025분기에는 XNUMX년에 리눅스와 데스크톱이 인기를 끌 것으로 보였지만, 실제로는 항상 그렇게 되지 않기 때문입니다.
그리고 불과 며칠 전, 리눅스 커널에서 DMA, KVM, Slab Allocator, PowerPC와 같은 핵심 하위 시스템 유지 관리에 중요한 역할을 하는 크리스토프 헬위그는 Rust로 드라이버 개발을 용이하게 하는 패치를 지원하지 않겠다는 입장을 분명히 밝혔습니다 .
크리스토프 헬위그는 문제의 패치들이 Rust로 작성된 드라이버가 DMA 서브시스템을 사용할 수 있도록 해당 시스템의 함수들을 감싸는 래퍼를 포함하는 것을 제안했다고 언급했습니다. 그러나 그는 이러한 전략이 코드 유지 관리를 복잡하게 만들고, C 인터페이스의 명확성을 유지해야 하며 , 커널의 나머지 부분과의 통합을 방해할 수 있는 추상화 확장을 피해야 한다고 주장합니다.
프로젝트에서 언어를 혼합하는 문제
헬위그에 따르면, 주요 문제는 Rust 코드 통합으로 인해 C 서브시스템 개발자가 자신의 수정 사항이 Rust 링크 코드에 미치는 영향을 고려해야 하는 의존성이 발생한다는 점입니다. 즉 , C 내부 구조나 함수를 수정하면 Rust 코드에도 동일한 수정이 필요할 수 있으며, 이는 장기적으로 유지 관리가 어려운 상황을 초래합니다.
이러한 상황을 피하기 위해 헬위그는 커널 유지 관리성을 저해할 수 있는 추가 래퍼에 의존하는 대신 Rust 드라이버가 C의 네이티브 DMA API에 직접 접근할 것을 권장했습니다.
패치를 제안한 개발자들은 Rust 코드를 유지 관리할 것이며, 이를 위해 특정 하위 디렉토리(rust/kernel/dma.rs)에 링크를 정리해 두었다고 주장했습니다 . 그러나 헬위그는 다른 언어의 코드를 핵심 하위 시스템에 통합하는 책임을 떠맡을 필요가 없다며 이러한 제안을 거부했습니다 .
또한 그는 커널을 여러 언어의 모자이크로 바꾸고 싶다면 근본적인 부분에 복잡성을 부여하는 대신 Rust의 드라이버부터 시작해야 한다고 강력히 주장했습니다.
NVIDIA에서 TPM, VFIO, Infiniband를 관리하는 제이슨 건소프와 같은 인물들이 메모리 하위 시스템 변경 사항이 C 코드 관점에서는 올바르지만 Rust 지원을 사용하여 커널을 컴파일하려고 할 때 문제를 일으키는 사례를 공유하면서 논란은 더욱 심화되었습니다. 이러한 사건들은 C와 Rust 간의 연결이 협력적인 개발을 방해하는 추가적인 의존성을 초래할 수 있음을 보여주었습니다.
논의가 기술적인 측면에만 국한되지 않았다는 점을 언급할 필요가 있습니다 . 헥터 마르틴은 DMA 서브시스템 관리자를 거치지 않고 리누스 토르발스를 통해 직접 연결하는 방식을 해결책으로 제시했습니다. 그러나 이러한 접근 방식은 커널 개발의 전통적인 계층 구조를 뒤흔들 수 있습니다.
헥터는 또한 자신이 유해하다고 여긴 행동들을 지적하며, 특히 헬위그가 러스트를 "암성 종양"에 비유한 비판이 자신의 좌절감을 가중시켰고, 결국 메인 커널의 ARM/애플 플랫폼 유지보수 담당자 자리에서 물러나게 된 결정적인 계기가 되었다고 언급했습니다. 그의 사임에도 불구하고, 스벤 페터가 플랫폼 유지보수를 계속 담당할 예정입니다.
리누스 토르발스는 대화에 참여하여 커널 개발 과정이 완벽하지는 않지만 제대로 작동하고 있으며, 기술적 논의는 외부 압력이나 소셜 미디어상의 괴롭힘에 영향을 받지 않고 패치에 집중해야 한다고 강조했습니다. 토르발스 는 개인적인 분쟁은 제쳐두고 순전히 기술적인 측면에 초점을 맞춰야 한다고 주장했습니다.
크리스토프 헬위그가 Rust 래퍼를 DMA 서브시스템에 통합하는 것을 거부한 것은 Linux 커널 개발자들 간의 긴장을 잘 보여줍니다. 일부 사람들은 Rust를 새로운 프로젝트를 만드는 데 강력한 도구로 보는 반면, 다른 사람들은 여러 언어를 통합하면 유지 관리와 코드베이스 일관성이 저해될 수 있다고 우려합니다.
이 상황은 여전히 논쟁의 대상 이며 커널에서 Rust 지원의 미래에 중대한 영향을 미칠 수 있습니다. 어쨌든 분명한 것은 리눅스 개발 커뮤니티가 프로젝트의 장기적인 지속 가능성을 보장하기 위해 기술적 결정을 신중하게 고려해야 하는 복잡한 과제에 계속 직면하고 있다는 점입니다.