Zig, 패키지 관리 기능 빌드 시스템으로 통합

by DD
10시간 전
조회수 0

Zig 컴파일러의 패키지 관리 기능(Package Management Functionality)이 빌드 시스템(Build System)으로 완전히 이전됨

`zig build`, `zig fetch` 등 관련 서브커맨드가 메이커 프로세스(Maker Process)로 이동함

컴파일러 실행 파일 크기 감소 및 네트워킹 보안 강화(Enhanced Networking Security) 효과 기대

빌드 서버 프로토콜(Build Server Protocol) 지원 및 ZLS(Zig Language Server) 관련 작업 진행 중

컴파일러와 빌드 시스템의 역할 분리

이번 변경으로 Zig 컴파일러는 순수 컴파일 기능에 집중하고, 패키지 관리, 네트워킹, TLS, Git 프로토콜 등은 메이커 프로세스(Maker Process)로 이관되었습니다. 이는 컴파일러 실행 파일 크기를 줄이고, 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 네트워킹 시 보안 검사를 강화하는 효과를 가져옵니다. 또한, 컴파일러 재빌드 없이 패키지 관리 로직을 패치할 수 있어 개발자들의 실험적인 시도를 용이하게 합니다.

빌드 서버 프로토콜(Build Server Protocol) 및 ZLS 지원

프로세스 분리 후 ZLS(Zig Language Server)의 `--build-runner` 플래그 관련 이슈를 해결하기 위해 빌드 서버 프로토콜(Build Server Protocol) MVP 작업이 진행 중입니다. 이전에는 `zig build --watch` 시 `maker` 프로세스가 종료되어 재연결이 필요했지만, 변경 후에는 `maker`가 부모 프로세스가 되어 이러한 불편함이 해소될 것으로 보입니다. 이는 개발 경험 향상에 크게 기여할 것으로 기대됩니다.

SPIR-V 백엔드 개선 및 기능 추가

SPIR-V 백엔드는 `@SpirvType` 빌트인 도입으로 Zig 타입 시스템으로 표현하기 어려웠던 SPIR-V 타입을 지원하게 되었습니다. 또한, 실행 모드 정보가 호출 규약(Calling Convention)으로 통합되고, CPU 기능 기반의 캡슐화 및 확장 기능 지원이 강화되었습니다. 멀티스레드 코드 생성(Multi-Threaded Codegen)과 객체 파일 링크 기능이 개선되어 SPIR-V 백엔드의 유용성이 크게 향상되었습니다.

@bitCast의 새로운 시맨틱 정의 및 LLVM 백엔드 최적화

기존의 바이트 재해석 방식에서 논리적 비트 표현 방식으로 `@bitCast` 시맨틱이 변경되었습니다. 이는 LLVM 백엔드에서 임의 비트 너비 정수 타입(Arbitrary Bit-Width Integer Types)의 메모리 표현 방식을 최적화하여, 컴파일러 자체 성능을 약 5% 향상시키는 결과를 가져왔습니다. 또한, `@bitCast`의 모호했던 동작 방식이 명확해져 안정성이 증대되었습니다.

새로운 ELF 링커와 증분 컴파일 지원

Zig 0.16.0에 도입된 새로운 ELF 링커는 외부 라이브러리 및 C 소스 파일 링크를 포함한 증분 빌드(Incremental Build)를 지원합니다. 특히 x86_64 Linux 환경에서 외부 라이브러리 링크 시에도 추가적인 성능 오버헤드 없이 밀리초 단위의 빠른 재빌드가 가능해졌습니다. DWARF 디버그 정보 생성 지원은 향후 우선 과제로 남아있습니다.

All Package Management Functionality Moved from Compiler to Build System