Rust 2024는 맨 extern 블록 대신 unsafe extern "C" { ... }를 요구한다. 최근 몇 년 사이 이 언어가 한 작은 문법 변경 가운데 가장 정직하다. 외부 함수를 선언하는 것은 언제나 시그니처에 대한 검증되지 않은 주장이었다. 인자 타입을 틀리면 호출 지점을 아무리 꼼꼼히 리뷰했어도 모든 호출이 정의되지 않은 동작이다. 예전 문법은 unsafe를 호출 지점에만 두었고, 리뷰어의 눈을 엉뚱한 줄로 돌렸다.
이제 블록 안에서 외부 함수에 정말 전제 조건이 없으면 항목을 safe fn으로 표시할 수 있고, 그러면 호출자는 unsafe가 전혀 필요 없다. 부담 전체가 선언 하나로 옮겨 가는데, 리뷰가 있어야 할 곳이 정확히 거기다.
같은 에디션에서 unsafe_op_in_unsafe_fn이 기본 경고가 되어 unsafe fn 본문은 더 이상 하나의 커다란 unsafe 블록으로 취급되지 않는다. 연산마다 따로 unsafe { }가 필요하고, 관례상 왜 성립하는지 적은 SAFETY 주석이 붙는다.
다음 단계는 외부 블록 안의 모든 safe fn에 근거를 적도록 강제하는 것이어야 한다. 린트로 충분히 할 수 있다.