Trawling

Zig 0.17.1 공개…0.17.0 이후 보고된 문제 57건 이상 수정

Zig 프로젝트가 11월 3일 0.17.1을 공개해 0.17.0 이후 보고된 57건 넘는 문제를 다뤘습니다. 수정 사례에는 macOS에서 중복 라이브러리 연결로 실행이 중단되던 회귀와 ppc64le Linux에서 Zig를 빌드할 때 발생하던 ABI 오류가 포함됩니다. 프로젝트는 0.17.0으로 업그레이드하지 못한 이용자 대부분이 0.17.1로 전환할 수 있을 것으로 안내했습니다.

본문

Zig 프로젝트는 11월 3일 프로그래밍 언어 Zig의 0.17.1을 공개했습니다. 공식 공지는 0.17.0 공개 뒤 보고된 57건이 넘는 이슈를 다룬 버그 수정판이며, 회귀와 업그레이드 차단 문제에 특히 초점을 맞췄다고 설명했습니다. 0.17.0은 10월 2일 공개됐습니다. 프로젝트는 0.17.0으로 업그레이드하지 못한 이용자 대부분이 0.17.1에서는 업그레이드할 수 있을 것으로 안내했습니다.

macOS에서는 링크에 성공한 실행 파일이 실행 단계에서 실패하는 회귀가 보고됐습니다. Zig 0.17.0에서 -framework CoreFoundation이나 -lresolv를 링크 명령에 반복하면 Mach-O 실행 파일에 같은 동적 라이브러리 적재 명령인 LC_LOAD_DYLIB가 중복 기록됐고, macOS의 dyld가 실행을 중단했습니다. 이슈 작성자 mitchellh는 Go의 cgo 외부 링크에서 각 패키지의 LDFLAGS가 차례로 전달되기 때문에, 여러 패키지가 같은 프레임워크 옵션을 지정하면 이 회귀가 발생할 수 있다고 설명했습니다. 0.17.1 마일스톤에 연결된 수정은 Mach-O 링커가 적재 명령을 중복 기록하지 않도록 처리합니다.

다른 회귀는 IBM POWER의 리틀엔디언 Linux 환경인 ppc64le에서 Zig를 빌드할 때 나타났습니다. 이슈에는 long double의 크기와 정렬을 검사하는 정적 검사가 abi mismatch 오류로 실패했다고 기록돼 있습니다. 답변에서 alexrp는 CMake 스크립트가 호스트 libc가 glibc인지 musl인지 감지하지 않는 점을 원인으로 설명했습니다. PowerPC에서는 long double의 ABI 차이가 빌드 설정에 영향을 줍니다. 관련 수정은 CMake가 glibc를 감지해 ZIG_HOST_TARGET_ABI를 설정하도록 바꿨습니다.

자료: Zig 공식 뉴스·Zig 이슈 / 정리·해설: Trawling

참고 자료

오류 제보