Что нового
Что изменилось в TDC из того, что видно вам, — новая команда или флаг, новая проверка, что-то, что теперь работает иначе, — новое сверху, и у каждого пункта ссылка на раздел документации, где это теперь описано. Изменения внутри движка, которые не меняют ничего из того, что вы пишете или читаете, здесь не упоминаются; все изменения — в журнале изменений.
25 октября 2026 — версия 0.3.6
<line each="Pool">печатает пул запись за записью. Строка на каждую запись, каждое поле читается как${{Pool.field}}— справочная таблица выходит из того же конфига, что и строки, которые на неё ссылаются. ПозицииPool._first,Pool._lastиPool._itemсчитают реально напечатанные строки: так запятая встаёт между объектами JSON, а не после последнего. → Весь пул, запись за записью<group>держит несколько строк вместе.<group each="Depts">печатает свои строки для каждого отделения, а группа внутри неё — врачей этого отделения: вложенный JSON из одного конфига. Безeachеёif=оставляет или убирает все её строки разом. → Несколько строк на элемент- Фильтр
json.${{Name | json}}пишет строку JSON с экранированием илиnullдля пустого значения;${{Tags | json:;}}пишет список как массив JSON. На список без его разделителя — предупреждениеTDC312. →json plus=читает расстояние из столбца.<gen type="date" of="Start" plus="Length m">заканчивает каждый приём через его собственную длительность после начала. → Расстояние из другого столбцаif=у строки сeachрешает для каждого элемента.<line each="Orders" if="Orders > 5000">печатает только крупные заказы; раньше условие оставляло или убирало всю строку. → Что видно внутри строки сeach- Строки фикстур проверяются, и их
if=читается. Опечатка в${{Name}}внутри<before>— ошибка вcheck, а не текст, который попадает в файл как есть. → Фикстуры - Медицинские номера с настоящими контрольными цифрами: американский NPI, немецкие KVNR и LANR, французские RPPS и FINESS, бразильский CNS. → Национальные налоговые номера и номера документов
- Телефоны США и Канады берут любой действующий код зоны и номера от 555-0100 до 555-0199,
отведённые для вымысла. Раньше каждый номер в США начинался с
+1 202 555. → Телефоны - В реестре пакетов 294 наборов. Теперь можно скачать традиционный китайский,
узбекский, черногорский, бретонский, синдхи, ещё четыре языка и 46 стран, а
tdcv2 pack listназывает страны по-человечески: United States, а не «Usa». →pack list - Rust и C#: пакет, чья проверка
<valid>отбраковывает значение, теперь перетягивает его так же, как остальные три. Одиннадцать встроенных пакетов, среди них код контейнера ISO 6346 и почтовые индексы Словении, давали там другие значения. →<valid> - ИИ-агенты. Claude Code, Codex, Cursor, VS Code и Gemini CLI могут писать и запускать конфиги TDC за вас — через скилл и MCP-сервер. → ИИ-агенты
17 октября 2026 — версия 0.3.5
checkговорит, какой движок будет выполнять конфиг и почему. Вторая строка после «is valid», напримерruns on engine 1 (in memory): uniq="true" on "Code", — от этого зависит, сколько памяти уйдёт. С--briefэтой строки нет. →tdcv2 check--engine 3сообщает, когда конфиг выполняет движок 1. На running-сумме, статистике или колонке сuniq="true"он всегда отдавал прогон движку в памяти; теперь печатает заметку, и замер памяти больше не оказывается молча замером движка 1. → Какой движок запустит ваш конфиг- Исправлено: поиск в пуле или формула, читающие участника
<uniq>, видели значение до перестановки группы — напечатанный день и найденный день расходились почти в каждой строке. →<uniq>— по отдельным последовательностям - Исправлено:
<assert>иif=читают поле на глубине двух и более пулов, напримерD.room.dept.dep_id. → Насколько глубоко это идёт - Исправлено: фильтр внутри пула читает поля рядом с собой.
filter="dept_no == want", гдеwant— поле того же пула, отклонялся как фильтр, который никогда не совпадёт. → Что означает имя внутриfilter - Исправлено: каждый элемент
repeat=— отдельный выбор. Повторённый e-mail больше не повторяет один домен, а распределение, параметр которого называет другую колонку, читает значение своей строки. → Несколько значений в ячейке - Исправлено: 29 февраля остаётся 29 февраля. В пакете npm дата с границей 2024-02-29 или отсчитанная от неё превращалась в 1 марта. → Случайная дата из диапазона
- Python, Rust, Java и C#:
<switch>по полю записи пула, дата, отсчитанная от такого поля, иrepeat=внутри ветки<switch>или<mix>работают так же, как в пакете npm. → Два имени и точка
16 октября 2026 — версия 0.3.4
-
initможет не создавать примеры.tdcv2 init --yes --no-examplesпишет конфиг и папку пакетов — и больше ничего. Это для скрипта или ИИ-агента, который настраивает проект за человека. →--no-examples -
checkпредупреждает о трёх ошибках, которые раньше проходили молча. Каждая запускалась без единого слова и давала не те данные:- у
<env>нетseed=: каждый запуск даёт другой файл →seed mmв формате даты — это минуты, поэтомуYYYY-mm-DDпечатал месяц00; месяц — этоMM→ Форматирование вывода"или другая XML-сущность в<data>печатается как написана →<data>— сырой текст
Это предупреждения:
checkпо-прежнему завершается с кодом 0. Запуску с--seedпредупреждать не о чем, а запуск без него вместо этого печатает зерно, которое вытянул. →tdcv2 check, кодыTDC309–TDC311в справочнике диагностик - у
-
У даты, отсчитанной от другой даты, теперь проверяется формат.
format="YYY"у даты сof=/plus=печатал25Yв каждой строке; теперьcheckего отклоняет, как и у любой другой даты. → Дата, отсчитанная от другой даты -
Пакет npm:
init --localeбез значения отклоняется. Раньше он молча записывал конфиг сen; остальные четыре реализации это уже отклоняли. →--locale