리눅스 커널에서의 Rust 지원을 위한 RFC
(lkml.org)- 커널의 두 번째 언어로 Rust를 사용해야 하는 이유를 정리
- 코어나 주요 커널 하위시스템을 다시 작성하는게 아닌, 드라이버 및 그와 비슷한 "Leaf" 모듈들을 Rust로 작성할 수 있도록 하기 위함
Rust를 리눅스 커널에서 사용하면
- 언어적 속성 때문에 메모리 세이프티 버그, 데이터 경합 및 논리 버그의 위험이 줄어듬
- 메인테이너가 Rust의 안전함 때문에 모듈을 리팩토링하고 패치하는데 더 자신있게 할 수 있음
- 최신 언어 기능 및 상세한 문서화 덕분에 새 드라이버와 모듈을 쉽게 작성 가능
- 더 많은 사람들이 최신 언어를 사용하여 커널개발에 전반적으로 참여 가능
"Why Rust?"
- Linux 커널의 컨텍스트상, C에 비해 몇가지 주요 이점을 제공
ㅤ→ (언어적 장점은 생략..)
"Why not?"
- Linux 커널의 컨텍스트상, C에 비해 이런 단점이 있음
ㅤ→ 컴파일러 플러그인, Sanitizer 등을 포함한 C 기반 툴링에 노력을 기울여왔음. 이건 시간이 지나면서 Rust 사용이 증가하면 개선 될 것
ㅤ→ LLVM 기반의 단일 구현체. GCC 프론트엔드, Cranelift 기반의 'ructc' 백엔드, 부트스트래핑 체인을 줄이기 위한 'mrustc' 와 같은 노력이 진행중
ㅤ→ 아직 표준화 되지 않음. 표준화가 커널에 도움이 될지는 확실하진 않지만..
ㅤ→ 현재 컴파일러의 복잡한 기능과 제한으로 인해서 컴파일 속도가 느림
ㅤ→ 현재로서는 Nightly 빌드에 있는 기능이 필요. 안정 버전을 사용 불가. 1년 내에 이 제한을 없애는걸 목표
ㅤ→ 'core' 및 'alloc' Rust 표준 라이브러리에 있는 기능이 다 사용되지 않아서 현재 필요한 부분보다 큼
- 이러한 단점의 대부분은 Rust 가 아직 젊고 덜 사용되는 언어라는 사실에서 발생
- 지난 수십년 동안 C가 그랬던 것처럼 Rust 가 시스템 프로그래밍의 중요한 부분이 될 것이라고 믿고 있음
https://lkml.org/lkml/2021/4/14/1099
"So I replied with my reactions to a couple of the individual patches, but on the whole I don't hate it."
와 함께 HOWEVER 뒤에 딸려오는 글을 보면
실제로 추가 되는데에는 꽤 시간이 걸릴지도 모르겠네요
이 RFC에 대해서 Linus Torvalds옹이 답변을 달았습니다 https://lkml.org/lkml/2021/4/14/1099
"So I replied with my reactions to a couple of the individual patches, but on the whole I don't hate it."
전반적으로는 싫어하지 않는다고 하셔서 잘 흘러가지 않을까 기대해봅니다.
검색해 보니 긱뉴스에 Rust 관련 뉴스가 정말 많이 올라왔었네요. 이젠 정말 시대의 대세라고 봅니다.
- https://news.hada.io/search?q=Rust
- Rust 프로그래밍 언어 [한국어판] https://news.hada.io/topic?id=1152
- Rust - 높은 성능와 신뢰를 확보하기 위한 언어 '러스트의 멋짐을 모르는 당신은 불쌍해요' https://news.hada.io/topic?id=991
점진적으로 C와 공존하다가, 어느순간 대체되어있지 않을까... 라는 생각을 품어봅니다. 오히려 모질라로부터 독립한 게 더 좋은 선택이었던 것 같기도 해요.