Zig에서 타입 안전한 HTML 템플릿 라이브러리 zt 공개
원제 Type-safe HTML templating in Zig
108 포인트댓글 46
Key Point
Zig 같은 저수준 언어에서도 JavaScript 없이 타입 안전한 웹 개발이 가능함을 보여주는 새로운 접근법이며, 전통적 템플릿 라이브러리의 런타임 오류와 XSS 위험을 컴파일 타임에 제거한다.
핵심 요약
- 저자는 Zig 언어로 웹 개발을 시도하면서 타입 안전성과 XSS 방지를 갖춘 HTML 템플릿 라이브러리가 필요했다.
- Go의 Templ 라이브러리에서 영감을 받아 Zig용 템플릿 라이브러리 zt를 개발했다.
- zt는 템플릿을 빌드 시간에 Zig 코드로 변환하므로 모든 매개변수가 컴파일 타임에 타입 체크된다.
- 생성되는 코드는 std.Io.Writer에 직접 쓰기만 하며 메모리 할당이 없어 빠르다.
- 모든 동적 값은 기본으로 HTML 이스케이프되고, href나 src 같은 URL 속성은 위험한 스킴도 검증한다.
- 템플릿 오류는 Zig 컴파일러 오류로 표시되어 문법 오류나 타입 불일치를 즉시 발견할 수 있다.
- 레이아웃, 컴포넌트, @children을 통한 템플릿 상속 등 재사용 가능한 구조를 지원한다.
- 제어 흐름은 일반 Zig 코드(if, for, switch)로 작성하며, 모든 것이 메모리 할당 없이 쓰기 시퀀스로 컴파일된다.
- 블록 레벨 제어 흐름의 문법을 개선하기 위해 @if, @for, @switch로 변경할 지 검토 중이다.
- 프로젝트는 초기 단계이지만 이미 여러 사용자가 사용 중이며 피드백을 환영한다.