Zig(지그) 프로그래밍 언어가 최근 개발 로그를 통해 중요한 내부 변경 사항들을 공개했습니다. 핵심은 패키지 관리 기능이 컴파일러에서 빌드 시스템으로 완전히 분리되었고, GPU 셰이더 개발에 필수적인 SPIR-V(스피르-V) 백엔드가 대폭 개선되었다는 점입니다. 이러한 변화는 Zig의 개발 효율성과 그래픽스 프로그래밍 지원을 한층 강화할 것으로 기대됩니다.
먼저, 패키지 관리 기능(zig build, zig fetch, zig init, zig libc)이 컴파일러 실행 파일에서 빌드 시스템(maker process)으로 이동했습니다. 이로 인해 HTTP 클라이언트, 네트워킹, TLS, Git 프로토콜 등 패키지 관리에 필요한 다양한 기능들이 이제 소스 형태로 제공됩니다. 그 결과, 컴파일러 실행 파일 크기가 약 4% 감소했으며, 패키지 관리 로직을 컴파일러 재빌드 없이 패치할 수 있게 되어 사용자 및 기여자들의 수정이 훨씬 용이해졌습니다. 또한, 빌드 시스템이 ReleaseSafe 모드로 컴파일되면서 패키지 관리 시 네트워크 작업의 안전성이 향상되었고, 암호화 작업에 특수 CPU 명령어를 활용할 수 있게 되어 성능도 개선되었습니다. 이러한 분리는 장기 실행 빌드 프로세스(zig build --watch)에서 설정 변경 시 빌드 시스템이 종료되지 않고 계속 작동할 수 있도록 하여 개발 워크플로우를 더욱 원활하게 만듭니다.
다음으로, SPIR-V 백엔드에 대한 상당한 개선이 이루어졌습니다. SPIR-V는 Vulkan(불칸)과 같은 최신 그래픽스 API에서 사용되는 중간 언어로, GPU 셰이더를 작성하는 데 필수적입니다. 이번 업데이트를 통해 Zig의 타입 시스템에서 표현하기 어려웠던 SPIR-V 고유의 타입들을 `@SpirvType` 내장 함수를 통해 정의할 수 있게 되었습니다. 이는 셰이더 작성의 오랜 걸림돌을 해결한 것으로, 샘플러(Sampler), 이미지(Image), 런타임 배열(RuntimeArray) 등 복잡한 GPU 자원들을 Zig 코드에서 직접 다룰 수 있게 합니다. 또한, 워크그룹 크기나 프래그먼트 오리진(fragment origin)과 같은 실행 모드 정보가 이제 호출 규약(calling convention)을 통해 전달되며, `spirv_task`와 `spirv_mesh`라는 새로운 호출 규약이 메시 셰이딩 파이프라인(mesh shading pipeline)을 위해 추가되었습니다. 이는 Zig를 사용하여 고성능 그래픽스 및 GPGPU(General-purpose computing on GPUs) 애플리케이션을 개발하는 데 있어 중요한 진전을 의미합니다.