Microsoft SCHIE (Silicon and Cloud Hardware Infrastructure Engineering) 팀의 수석 펌웨어 아키텍트
보안, 시스템 프로그래밍(펌웨어, 운영체제, 하이퍼바이저), CPU 및 플랫폼 아키텍처, C++ 시스템 분야의 업계 전문가
2017년(@AWS EC2)부터 Rust로 프로그래밍을 시작했으며, 이후 이 언어의 매력에 깊이 빠져 있습니다.
이 책은 Rust의 타입 시스템을 사용하여 컴파일 자체가 불가능한 방식으로 버그의 전체 클래스를 제거하는 실전을 다룹니다. 자매서인 Rust 패턴이 메커니즘(트레이트, 연관 타입, 타입 상태)을 다룬다면, 이 가이드는 하드웨어 진단, 암호학, 프로토콜 검증, 임베디드 시스템과 같은 실제 환경에 이러한 메커니즘을 적용하는 방법을 보여줍니다.
여기에 소개된 모든 패턴은 한 가지 원칙을 따릅니다: 런타임 검사를 타입 시스템으로 밀어 넣어 컴파일러가 이를 강제하도록 만드는 것입니다.
← 덜 안전함 더 안전함 →
런타임 검증 단위 테스트 속성 기반 테스트 설계에 의한 올바름
───────────── ────────── ────────────── ──────────────────────
if temp > 100 { #[test] proptest! { struct Celsius(f64);
panic!("너무 fn test_temp() { |t in 0..200| { // 타입 수준에서 Rpm과
뜨거움"); assert!( assert!(...) // 혼동할 수 없음
} check(42)); }
} }
잘못된 프로그램?
잘못된 프로그램? 잘못된 프로그램? 잘못된 프로그램? 컴파일되지 않음.
실제 서비스 중단. CI 단계에서 실패. CI 단계에서 실패 절대 존재할 수 없음.
(확률적).
이 가이드는 가장 오른쪽 지점에서 작동합니다. 즉, 타입 시스템이 버그를 표현할 수 없기 때문에 버그가 존재하지 않는 영역입니다.