핵심 요약
Zig 0.14 사내 시스템 도구 3개 production. comptime 강화, package manager 안정, C wrap 자동. Rust 대비 빌드 -68%, 바이너리 크기 -42%. 1.0 GA는 2027 예정.
1. Zig 핵심 — comptime
const std = @import("std");
fn print(comptime fmt: []const u8, args: T) void {
// fmt 문자열을 compile time에 파싱, type check
std.debug.print(fmt, args);
}
print("Hello, {s}!\n", .{"world"}); // compile time check
Rust macro 비슷하지만 더 강력. type generic + runtime branching 통합.
2. C interop — 자동
const c = @cImport({
@cInclude("sqlite3.h");
});
pub fn main() !void {
var db: ?*c.sqlite3 = null;
_ = c.sqlite3_open(":memory:", &db);
}
.h 파일 그대로 import. bindgen 같은 도구 불필요.
3. 빌드 — Rust 대비
| 프로젝트 | Rust | Zig |
|---|---|---|
| CLI 도구(15K LoC) | 42s | 14s |
| 바이너리 크기 | 4.2MB | 2.4MB |
| Cross-compile(Win, Mac, Linux) | 3분 | 48초 |
4. 1.0 로드맵 — 2027
- Async/await 안정화
- Package manager 1.0
- Standard library API 동결
- Stable ABI
5. 함정
- Memory safety — Rust 같은 borrow checker 없음, error union으로 명시 처리, 실수 시 UB 가능
- Async 미안정 — 0.14에서 일부 깨짐, 1.0 전까지 sync 우선
- Allocator 명시 — std lib 함수 대부분 allocator 인자 받음, 패턴 학습
- Library 생태계 — Rust 대비 1/100, 직접 작성 또는 C 라이브러리 wrap 빈도 높음

댓글 0