Лукаш Лалинский сделал zt — шаблонизатор, который во время
zig build превращает HTML-шаблоны в код Zig. Параметры типизированы: ошибку в имени поля или несовместимый тип компилятор замечает до запуска приложения.Сгенерированный код пишет результат в
std.Io.Writer: можно отправлять HTML в сокет или собирать его в буфере. Динамические значения экранируются по умолчанию, а URL в href и src проверяются на опасные схемы. Для сырого HTML нужно явное исключение.Автор разбирает устройство библиотеки и границы защиты: безопасные значения по умолчанию не закрывают все варианты XSS. Интересный пример того, как перенести часть ошибок шаблона из запроса пользователя в сборку.
🔗 Разбор автора, найденный на Hacker News
🐸 Библиотека программиста