안전하지 않은 Rust를 조금 더 안전하게 만들기: 안전하지 않은 코드, C 및 C++ 라이브러리 포함 검증 도구

2024-12-17

Rust의 인기는 컴파일 시 메모리 및 동시성 오류를 제거할 수 있다는 데서 비롯되지만, `unsafe` 코드 블록은 이러한 검사를 우회할 수 있습니다. 이 기사에서는 C 또는 C++ 라이브러리에서 호출되는 코드를 포함하여 안전하지 않은 Rust 코드를 검증하기 위한 도구를 살펴봅니다. 런타임 오류 감지 도구인 Sanitizers와 미정의 동작을 결정적으로 찾는 인터프리터인 Miri를 소개합니다. Sanitizers는 범위를 벗어난 메모리 액세스, 데이터 경쟁 등을 감지하고, Miri는 코드 스니펫을 사용하여 더 정확한 오류 보고서를 제공합니다. 그러나 Miri는 현재 C/C++에서 FFI를 통해 호출되는 코드를 지원하지 않으므로, 이러한 경우에는 C/C++ 컴파일러의 Sanitizers를 사용해야 합니다. 이러한 도구는 `unsafe` 코드를 처리하거나 C/C++ 라이브러리와 상호 작용할 때에도 Rust 코드의 안전성과 안정성을 향상시킵니다.