Rust 지원이 지난 2년 동안 정말 많이 발전했음
이제는 거의 보일러플레이트 없이 커널 모듈을 작성할 수 있을 정도임
“experimental” 태그가 제거된 건 큰 이정표라고 생각함
앞으로 배포판들이 Rust 지원이 기본 활성화된 커널을 내놓는 날이 진짜 전환점이 될 것 같음
이미 일부 배포판은 그렇게 하고 있음
예를 들어 NixOS와 Arch는 Rust로 작성된 QR 코드 커널 패닉 화면을 활성화함
Fedora도 아마 지원하는 걸로 알고 있음
Fedora 43은 CONFIG_RUST=y로 컴파일된 걸로 알고 있음
“Rust 지원이 기본 활성화된 커널”이란 표현이 무슨 뜻인지 궁금함
커널이 Rust 사용자 공간을 지원하는 건 아니고, 단지 일부 커널 코드가 rustc로 컴파일된다는 의미로 이해함
Rust가 GCC에서 완전 지원되기 전까지는 모든 플랫폼에서 가능할지 의문임
오랜 저항 끝에 Linux 커널에서 Rust가 공식적으로 채택된 게 감격스러움
Rust for Linux 팀에게 박수를 보냄
예전에 Asahi 프로젝트 관련 Rust 코드가 유지보수자 거부로 인해 혼란스러웠던 기억이 있음
그 사건이 프로젝트의 첫 번째 도미노였는지 궁금함
Phoronix 기사에 따르면
Rust for Linux 공동 유지보수자였던 Alex Gaynor가 공식적으로 물러났다고 함
이제 Miguel Ojeda가 유일한 공식 유지보수자로 남았고, 여러 명의 코드 리뷰어가 있음
“experimental” 태그 제거가 모든 유지보수자가 Rust 코드를 깨뜨리지 않도록 의무화된다는 뜻인지 궁금함
실제로는 Rust가 커널에 정식으로 자리 잡았다는 신호일 뿐임
개발자들이 Rust 기반 드라이버에 투자해도 된다는 안정감의 표시임
여전히 규칙은 동일하고, Rust 빌드를 깨뜨리는 코드는 Linus에게 보낼 수 없음
커널 내에서는 사용자 공간 API 외에는 안정성이 보장되지 않음
즉, 유지보수자가 내부 Rust 코드를 깨뜨려도 규칙 위반은 아님
Rust가 지원하지 않는 아키텍처들은 이제 버려지는 것인지 궁금함
그렇지 않음. Rust는 현재 드라이버 서브시스템에서만 사용됨
커널의 핵심 부분은 여전히 C로 작성되어야 함
어떤 아키텍처가 지원되지 않는지 궁금함
농담으로 “그렇다, 다 요리됐다(cooked)”고 표현함
기사 제목이 “The (successful) end of the kernel Rust experiment”로 수정되었다고 함
원래 제목이 과장됐다는 커뮤니티의 피드백 때문임
수정된 제목이 적절하다고 생각함 Hacker News 가이드라인에 따르면
“원래 제목이 오해의 소지가 있을 때만 수정하라”고 되어 있음
“successful”이라는 단어는 이미 암시된 것 같음
실패한 실험은 끝나지 않기 때문임
농담조로 “Linux devs tried Rust — you won’t BELIEVE the reaction!” 같은 제목을 제안함
“이거 큰 일인가요?”라는 질문에
“맞음, 큰 의존성이 추가된 셈임”
“그렇다”고 짧게 동의함
Linux 커널 드라이버가 Rust로 가는 흐름이라면, FreeBSD 같은 BSD 계열도 같은 산화(oxidation) 를 겪을지 궁금함
아니면 저항과 분화가 생길지 주목함
새로운 시도를 반기는 입장임
하지만 어떤 사람은 “새로운 건 불안정하고 배우기 어렵다”고 반박함
Rust는 메모리 안전성과 표현력 덕분에 그 어려움을 감수할 가치가 있다고 생각함
현재 커널에서 Rust로 작성된 부분이 무엇인지 궁금함
대표적으로 DRM Panic “Screen of Death” 가 Rust로 작성됨 Phoronix 기사 참고
주로 GPU 드라이버 쪽에서 Rust가 사용되고 있음
커널의 Rust 코드에 unsafe가 얼마나 포함되어 있는지 궁금함
예전엔 unsafe가 너무 불편하다는 불만이 많았음
대부분의 unsafe 코드는 C API와 상호작용하는 kernel crate 내부에 숨겨져 있음
드라이버 개발자는 거의 unsafe를 쓸 필요가 없음
unsafe는 본질적으로 경계부 코드(edge) 에서만 쓰이도록 설계된 것임
대부분의 코드는 안전한 Rust로 작성됨
unsafe가 여전히 어렵긴 하지만, 실제 드라이버 코드에서는 거의 등장하지 않음
예를 들어 pwm_th1520.rs는 Send와 Sync를 지원하기 위한 한 줄짜리 unsafe만 포함함
unsafe 블록은 문서화하고 안전한 인터페이스로 감싸서 다시는 직접 볼 필요 없게 만드는 게 원칙임
Hacker News 의견들
Rust 지원이 지난 2년 동안 정말 많이 발전했음
이제는 거의 보일러플레이트 없이 커널 모듈을 작성할 수 있을 정도임
“experimental” 태그가 제거된 건 큰 이정표라고 생각함
앞으로 배포판들이 Rust 지원이 기본 활성화된 커널을 내놓는 날이 진짜 전환점이 될 것 같음
예를 들어 NixOS와 Arch는 Rust로 작성된 QR 코드 커널 패닉 화면을 활성화함
Fedora도 아마 지원하는 걸로 알고 있음
CONFIG_RUST=y로 컴파일된 걸로 알고 있음커널이 Rust 사용자 공간을 지원하는 건 아니고, 단지 일부 커널 코드가 rustc로 컴파일된다는 의미로 이해함
오랜 저항 끝에 Linux 커널에서 Rust가 공식적으로 채택된 게 감격스러움
Rust for Linux 팀에게 박수를 보냄
그 사건이 프로젝트의 첫 번째 도미노였는지 궁금함
Rust for Linux 공동 유지보수자였던 Alex Gaynor가 공식적으로 물러났다고 함
이제 Miguel Ojeda가 유일한 공식 유지보수자로 남았고, 여러 명의 코드 리뷰어가 있음
“experimental” 태그 제거가 모든 유지보수자가 Rust 코드를 깨뜨리지 않도록 의무화된다는 뜻인지 궁금함
개발자들이 Rust 기반 드라이버에 투자해도 된다는 안정감의 표시임
여전히 규칙은 동일하고, Rust 빌드를 깨뜨리는 코드는 Linus에게 보낼 수 없음
즉, 유지보수자가 내부 Rust 코드를 깨뜨려도 규칙 위반은 아님
Rust가 지원하지 않는 아키텍처들은 이제 버려지는 것인지 궁금함
커널의 핵심 부분은 여전히 C로 작성되어야 함
기사 제목이 “The (successful) end of the kernel Rust experiment”로 수정되었다고 함
원래 제목이 과장됐다는 커뮤니티의 피드백 때문임
Hacker News 가이드라인에 따르면
“원래 제목이 오해의 소지가 있을 때만 수정하라”고 되어 있음
실패한 실험은 끝나지 않기 때문임
“이거 큰 일인가요?”라는 질문에
Linux 커널 드라이버가 Rust로 가는 흐름이라면, FreeBSD 같은 BSD 계열도 같은 산화(oxidation) 를 겪을지 궁금함
아니면 저항과 분화가 생길지 주목함
새로운 시도를 반기는 입장임
Rust는 메모리 안전성과 표현력 덕분에 그 어려움을 감수할 가치가 있다고 생각함
현재 커널에서 Rust로 작성된 부분이 무엇인지 궁금함
Phoronix 기사 참고
커널의 Rust 코드에 unsafe가 얼마나 포함되어 있는지 궁금함
예전엔 unsafe가 너무 불편하다는 불만이 많았음
드라이버 개발자는 거의 unsafe를 쓸 필요가 없음
대부분의 코드는 안전한 Rust로 작성됨
예를 들어 pwm_th1520.rs는
Send와Sync를 지원하기 위한 한 줄짜리 unsafe만 포함함