ReleaseSafe — 최적화도 챙기고 안전 검사까지 유지하는 배포 빌드

ReleaseSafe — 최적화도 챙기고 안전 검사까지 유지하는 배포 빌드

배포할 때 '성능도 좀 내고 싶은데, 안전 검사는 아예 끄긴 불안한' 상황이 있죠. 그럴 때 딱 맞는 빌드 모드가 ReleaseSafe예요. 이름 그대로 릴리즈(Release) + 안전(Safe) — 최적화를 적용하면서도 안전 검사는 계속 켜둔 채로 만들어요.

출처: Zig Documentation

본문

-O ReleaseSafe 옵션으로 이 모드를 켤 수 있어요.

$ zig build-exe example.zig -O ReleaseSafe

이 모드가 가져오는 특징을 정리하면 이래요.

  • 중간 수준의 런타임 성능 — 최적화가 적용돼서 Debug보다는 빠르지만, 안전 검사가 붙는 만큼 ReleaseFast만큼은 빨라지지 않아요.
  • 안전 검사 활성화 — 배열 경계나 정수 오버플로 같은 오류를 실행 중에 잡아줘요. 오류를 감지 못하는 ReleaseFast와의 결정적 차이예요.
  • 느린 컴파일 속도 — 최적화와 안전 검사 양쪽 다 처리해야 해서 빌드에 시간이 걸려요.
  • 큰 바이너리 크기 — 검사 코드가 포함되는 만큼 산출물이 커져요.
  • 재현 가능한 빌드 — 같은 소스와 환경이면 결과물이 동일하게 나와요.

즉, 이 모드는 '성능도 원하지만 안전은 포기하고 싶지 않은' 배포 환경을 위한 선택이에요. 정수 오버플로 같은 잠재적 버그를 실행 중에 잡아주면서도 최적화된 결과물을 얻을 수 있죠.

더 알아보기

  • 실행 속도를 최우선으로 올리고 싶다면 ReleaseFast 모드를 살펴보세요. 안전 검사는 꺼지지만 성능은 가장 빨라요.
  • 바이너리 크기를 최우선으로 줄이고 싶다면 ReleaseSmall 모드가 어울려요.
  • 코드 블록 단위로 안전 검사를 켜고 끄고 싶을 때는 @setRuntimeSafety 내장 함수를 함께 봐두면 좋아요.