До версии 4.5 парсер интерпретировал схему прямо во время валидации: на каждый
parse() Zod обходил дерево и по ходу решал, что проверять. Во вчерашнем релизе появился z.compile() — он один раз проходит схему целиком и генерирует под неё плоский JavaScript без циклов, который выполняется через new Function(). На валидных данных срабатывает быстрый путь, на невалидных Zod возвращается к обычному парсеру за подробной ошибкой.Собирать ничего не нужно, всё происходит в рантайме:
import "zod/compile" в точке входа или флаг node --import zod/compile включают компиляцию для всех схем сразу. Ускорились и отказы — .safeParse() перестал захватывать стек-трейс и на неудачном пути стал быстрее примерно в 7,5 раза.Перед обновлением проверьте два места:
z.iso.datetime() больше не принимает время без секунд (2020-01-01T06:15Z теперь ошибка), а .min(), .max() и .length() у строк считают кодовые точки Unicode вместо кодовых единиц UTF-16.#javascript #перформанс
