디버그 모드에서 자체 호스팅 x86 백엔드가 기본값으로 설정됨

5 days ago 4

  • 이제 x86_64 타겟 시, Zig의 자체 x86 백엔드가 디버그 모드에서 기본값으로 적용됨
  • 기존 LLVM 기반보다 더 많은 동작 테스트 통과와 빠른 컴파일 속도 달성함
  • 자체 백엔드 도입으로 Zig의 컴파일 시간 대폭 단축 및 일부 작업의 효율성 증대됨
  • 최근 보완된 빌드 시스템, BSD 계열 OS 지원 확대, UBSan 런타임 개선 등 여러 기능 강화 진행됨
  • 표준 라이브러리와 자체 도구 최적화로 Zig만의 경쟁력 강조됨

최신 주요 소식 요약

2025년 6월 8일 – 자체 호스팅 x86 백엔드, 디버그 모드에서 기본값으로 전환

  • x86_64 타겟에서, 이제 기본적으로 Zig의 자체 x86 백엔드가 사용됨
    • 이전에는 LLVM을 사용해 비트코드에서 오브젝트 파일로 변환하는 방식이었음
    • Windows는 COFF 링커 작업이 더 필요해 변경이 미뤄진 상태임
  • Zig의 x86 백엔드는 1,987개의 동작 테스트를 통과하여, LLVM 백엔드(1,980개)보다 더 강력한 안정성 보임
    • 전체 테스트는 2,084개지만 일부는 LLVM 자체 테스트와 중복되어, 자체 백엔드 테스트 시에만 추가 확인함
  • Zig가 자체 코드 생성기 개발에 집중하는 주된 이유는, 빌드 속도에서 LLVM을 월등히 능가하기 위함임
    • 벤치마크 결과 확인 시, zig build-exe hello.zig -fllvm(LLVM 사용)의 평균 빌드 타임은 918ms, 자체 백엔드는 275ms 기록함
    • 메모리 사용량, CPU 사이클, 명령어 수, 캐시 미스 등 모든 면에서 대폭 개선된 성능 확인 가능함
    • Zig 컴파일러 자체와 같은 대규모 프로젝트의 빌드 시간도 75초에서 20초로 단축됨
  • 향후 코드 생성 완전 병렬화 구현 및 링크 기능 강화, aarch64 백엔드 개발 등이 예고되어 있음
    • 새로운 Legalize 패스 도입으로 aarch64 작업도 가속화될 예정임
  • 최신 변경사항은 Zig 마스터 브랜치 최신 빌드를 통해 직접 경험해 볼 수 있음

2025년 6월 6일 – 빌드 시스템 소개 영상

  • Zig 빌드 시스템 입문자를 위한 YouTube 가이드 영상이 공개됨
    • Zig 모듈과 패키지 생성, 이를 다른 프로젝트에서 임포트하는 방법 등을 설명함
    • 추가 빌드 시스템 관련 영상도 시리즈로 계속 추가될 예정임

2025년 5월 20일 – FreeBSD 및 NetBSD 타겟 지원 강화

  • Pull Request #23835, #23913 병합으로 zig cc와 zig build로 FreeBSD 14.0.0+ 및 NetBSD 10.1+ 타겟 바이너리 빌드 가능해짐
    • 기존 glibc에서 적용되던 libc 및 관련 라이브러리 정보를 추출하는 전략을 BSD 계열에도 확장 적용함
    • 생성된 abilists 파일이 Zig와 함께 배포되어, 교차 컴파일시 각 libc 라이브러리에 정확히 매칭되는 스텁(stub) 라이브러리 생성 가능함
    • 시스템 및 libc 헤더도 최신 OS 버전 기준으로 함께 제공됨
    • OpenBSD, Dragonfly BSD, SerenityOS, Android, Fuchsia 등도 지원 목표임

2025년 4월 9일 – 공식 Zig 사이트, 독립 실행형 Zine으로 빌드

  • 공식 Zig 웹사이트가 이제 독립 실행형 Zine으로 빌드되는 구조로 변경됨
    • 기존 빌드 스크립트에서 단일 실행 파일로 발전함
    • 직접 사용해볼 좋은 타이밍임을 알리고 있음

릴리즈 및 기능 개선 소식

  • 0.14.0 릴리즈가 곧 배포될 예정이며, 주목할 만한 개선들이 이미 적용됨
  • C interop 및 UBSan(Undefined Behavior Sanitizer) 런타임 개선으로, 이전엔 모호했던 SIGILL 에러가 구체적이고 유용한 오류 메시지로 대체됨
    • 예) 서명 정수 오버플로 발생 위치와 원인을 명확히 표시해 디버깅 효율성 크게 향상됨
  • 남은 UBSan 한계:
    • C++ vptr 관련 동적 타입 및 생명주기 검사 미지원
    • assume_aligned, __nonnull 등 속성의 정확한 위치 표시 미완성

2025년 2월 7일 – 디버그 할당기 및 SmpAllocator 혁신

  • 디버그 할당기가 재설계되어 런타임 페이지 크기 인식 지원 및 다양한 최적화 반영됨
    • 메모리 맵 생성 감소, 불필요한 0xaa/0x00 memset 반복 제거, 탐색 및 트립 자료구조 제거 등
    • 페이지 내에 메타데이터를 인라인 방식으로 저장해 컴파일 에러/검증을 쉽게 구현함
    • 기존 C 기반 malloc에 비해 가독성 및 유지보수성 우위 확보
  • 동시성 환경에서 최적화된 SmpAllocator 개발로, multi-thread 환경에서의 메모리 할당 실행 효율 극대화됨
    • glibc와의 성능 비교 벤치마크에서 속도와 자원 사용 효과 실제 증명됨
    • 결과적으로 Zig 사용성이 C 및 libc를 능가하는 중요한 전환점으로 평가됨

2025년 1월 24일 – Zig 전용 디버깅 환경 제공

  • Jacob이 Zig용 LLDB(디버거) 포크를 개발, 자체 백엔드의 디버깅 지원을 강화함
    • LLDB 포크 빌드 및 사용법이 위키 문서로 제공됨
    • Zig 자체 백엔드를 사용하는 개발자는 해당 도구로 더욱 정교한 디버깅 환경 활용 가능

결론

  • Zig는 자체 기반의 성능 향상, 빌드 효율, 디버깅 편의성 강화를 핵심 목표로 혁신적 변화를 계속 추진함
  • 독립적 알고리듬, 컴파일러, 빌드/런타임 도구 모두에서 차별화된 경쟁력을 확보하는 중임
  • BSD 등 다양한 플랫폼 지원, 사용자 중심 메시지 개선, 메모리 모델 혁신을 포함하여 소프트웨어 엔지니어 실무자에게 실질적으로 유익한 발전을 이어가고 있음

Read Entire Article