Rust: 안전을 약속한 언어가 왜 충분하지 않은가?
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: 임베디드 시스템 개발자, 안전 비판 시스템 엔지니어, 인증이 필요한 소프트웨어 개발자
- 난이도: 중급 이상 (인증 프로세스 및 Rust의 안전 메커니즘 이해 필요)
핵심 요약
- Rust의 안전성은 안전 비판 시스템 인증에 부족하다
core
모듈 및nightly
기능에 대한 인증 부족unsafe
코드 사용이 임베디드 개발에서 필수적- C의 예측 가능성과 인증 기록이 Rust를 대체
- C는 오래되었지만 도구 및 행동이 예측 가능
- Rust의 미래는 인증 프로세스 개선에 달려 있다
- "이론적 안전성"보다 "실제 인증"이 중요
섹션별 세부 요약
1. Rust의 안전성 약속과 현실
- Rust는 C의 문제점(메모리 관리, 포인터 오류)을 해결할 수 있다는 이론적 장점이 있음
- 하지만 임베디드 시스템에서의 실제 적용은 "비완성된 혁명"으로 인식됨
- 인증 단계에서
core
모듈이 인증되지 않아, 전체 도구체인의 인증 필요성 강조
2. `unsafe` 코드와 인증 문제
- 임베디드 Rust에서
unsafe
는 필수적 요소로, 하드웨어와의 상호작용 시 수동 메모리 관리가 필요 - "안전성"은 래퍼(wrapper)의 완전성에 의존하는 이론적 개념
- 인증 기관에 "Rust 책의 설명"으로 안전성을 주장하기 어렵다
3. Rust HAL(하드웨어 추상화 레이어)의 한계
- 방사선 내성 마이크로컨트롤러용 인증된 Rust 드라이버가 부족
- 기존 드라이버는 1.0 이전 버전에서 포기된 상태
- 개발자는 직접 구현하거나 불완전한 라이브러리를 사용해야 함
4. C의 예측 가능성 vs Rust의 이론적 안전성
- C는 위험하지만, 도구의 인증 상태와 행동의 예측 가능성은 분명
- 임무 실패 시 "알려진 악마"보다 "이론적 천사"가 선호되지 않음
- C는 위험하지만, 안전 비판 시스템에서의 신뢰도가 높음
결론
- Rust가 안전 비판 시스템에서 확고한 위치를 차지하려면, 도구체인의 전체 인증과
unsafe
코드의 최소화가 필수적 - 현재는 "이론적 안전성"보다 "실제 인증"이 요구됨
- C는 단순하지만, 인증 기록과 예측 가능성으로 신뢰를 얻는다
- Rust의 진보는 "RFC(요청된 기능 변경)보다 수십 년의 신뢰 구축이 필요"