---
title: "넷핵 5.0.0 공개, C99 전환과 크로스 컴파일 지원까지 들어갔다"
published: 2026-05-02T18:03:42.000Z
canonical: https://jeff.news/article/2105
---
# 넷핵 5.0.0 공개, C99 전환과 크로스 컴파일 지원까지 들어갔다

오픈소스 던전 탐험 게임 넷핵(NetHack)이 5.0.0 버전을 공개했다. 게임 개선과 버그 수정뿐 아니라 C99 준수, 크로스 컴파일 장벽 제거, yacc·lex 기반 도구를 Lua 기반 처리로 바꾸는 등 빌드와 아키텍처 쪽 변화가 꽤 크다.

- 넷핵(NetHack) 개발팀이 2026년 5월 2일 넷핵 5.0.0을 공개했음
  - 넷핵은 로그(Rogue)와 핵(Hack)의 먼 후손이자, 넷핵 3.6 계열의 직접 후속임
  - 5.0.0은 .0 릴리스라 버그가 있을 수 있고, 개발팀은 제안·깃허브 풀 리퀘스트·버그 리포트를 받겠다고 밝힘

- 이번 릴리스는 게임 개선과 버그 수정만 있는 게 아니라, 코드베이스와 빌드 구조를 꽤 손본 버전임
  - 소스 코드가 C99 표준을 준수하도록 정리됐음
  - 오래된 C 프로젝트에서 표준 준수는 단순 취향 문제가 아니라, 여러 컴파일러와 플랫폼에서 같은 방식으로 빌드되게 만드는 기반임

- 크로스 컴파일(cross-compiling) 쪽 장벽도 낮췄음
  - 한 플랫폼과 운영체제에서 넷핵을 빌드한 뒤, 다른 플랫폼이나 운영체제에서 실행할 수 있게 만드는 작업을 개선했다는 뜻임
  - 자세한 내용은 최상위 폴더의 ‘Cross-compiling’ 파일에 정리돼 있다고 함

> [!WARNING]
> 기존 저장 파일과 bones 파일은 넷핵 5.0.0에서 동작하지 않음. 오래 이어오던 플레이 데이터가 있다면 업그레이드 전에 이 호환성 변경을 먼저 봐야 함.

- 빌드 타임 도구 의존성도 줄이는 방향으로 바뀜
  - 기존에는 레벨 컴파일러와 던전 컴파일러가 yacc·lex 기반이었음
  - 퀘스트 텍스트 파일 처리는 넷핵의 makedefs 유틸리티가 맡고 있었음
  - 5.0에서는 이 부분들이 게임 실행 중 로드·처리되는 Lua 텍스트 대안으로 교체됐음

- 변경 규모는 생각보다 큼
  - 게임 소스 안의 doc/fixes5-0-0.txt 파일에 3100개가 넘는 수정과 변경 목록이 들어 있다고 함
  - 이 문서는 개발팀 내부 용도로 작성된 내용이라 ‘있는 그대로’ 제공되며, 새 기능 섹션에는 스포일러로 볼 수 있는 항목도 있을 수 있다고 안내함

- 바이너리 검증과 경로 확인용 안내도 포함됨
  - nethack.org에서 받은 윈도우 바이너리는 certUtil로 SHA256 체크섬을 확인할 수 있음
  - 대부분의 플랫폼에서는 nethack --showpaths 명령으로 넷핵이 사용하는 여러 파일 위치를 확인할 수 있음

- 넷핵답게 릴리스 노트의 마무리는 피드백 요청임
  - 버그는 문제 보고 양식으로 제출해 달라고 안내함
  - 보고 전에 알려진 버그 목록을 먼저 확인하라고도 덧붙임

---

## 기술 맥락

- 넷핵 5.0.0에서 개발자 입장으로 볼 만한 건 게임 콘텐츠보다 빌드와 데이터 처리 방식이에요. 수십 년 된 C 프로젝트는 새 기능을 넣는 것보다, 다양한 플랫폼에서 계속 빌드되게 유지하는 일이 더 어려울 때가 많거든요.

- C99 준수는 코드베이스의 기준선을 정리하는 선택이에요. 너무 오래된 C 관습에 묶이면 최신 컴파일러나 플랫폼 대응이 피곤해지고, 반대로 너무 최신 표준으로 가면 오래된 환경 지원이 깨질 수 있어요. C99는 그 사이에서 꽤 현실적인 타협점이에요.

- 크로스 컴파일 개선도 이식성 때문에 중요해요. 게임을 만든 환경과 실행할 환경이 다를 수 있으니, 빌드 과정이 특정 운영체제나 로컬 도구에 강하게 묶이면 배포가 번거로워지거든요.

- yacc·lex와 makedefs 처리 일부를 Lua 텍스트로 옮긴 것도 같은 흐름이에요. 빌드 시점에 필요한 전통적인 유닉스 도구 의존을 줄이고, 게임 실행 중 데이터를 로드해 처리하는 쪽으로 가면 플랫폼별 빌드 차이를 줄이기 쉬워져요.

## 핵심 포인트

- 넷핵 5.0.0이 2026년 5월 2일 공개
- 소스 코드가 C99 표준을 준수하도록 정리
- 서로 다른 플랫폼을 대상으로 빌드하는 크로스 컴파일 지원 강화
- 레벨·던전·퀘스트 텍스트 처리 일부가 yacc·lex·makedefs에서 Lua 기반 처리로 이동
- 기존 세이브 파일과 bones 파일은 5.0.0에서 호환되지 않음

## 인사이트

오래된 C 코드베이스가 새 버전을 낼 때 진짜 흥미로운 건 기능보다 빌드 시스템과 데이터 처리 방식의 정리임. 넷핵 5.0.0은 게임 릴리스이면서 동시에 장수 오픈소스 프로젝트가 이식성과 유지보수성을 어떻게 챙기는지 보여주는 사례임.
