← На главную

Jacquard (FriendMachine): модели пишут код, люди проверяют, без моков

13.07.2026 15:56 · hackernews

Jacquard — исследовательский проект FriendMachine для запуска, проверки, симуляции и доверия к программам, которые пишут модели, а проверяют люди. Это небольшой язык с поверхностным синтаксисом .jac, проверкой и CPS-интерпретатором на OCaml, нативным AOT-бэкендом (компилирует в C), стандартной библиотекой, написанной на самом Jacquard, и тестовым фреймворком Warp. Версия 0.1 работает end‑to‑end, но это research prototype, не production‑язык.

Главная фишка: Jacquard показывает не только что вычисляет программа, но и какие эффекты она может выполнять, конечную дискретную неопределённость и канонический идентификатор программы. Сигнатура (text) ->{net} text говорит, что функция может делать сетевой эффект. Рантайм отвергает необработанные эффекты, если их явно не разрешить через --allow. Один и тот же код можно запускать в разных «мирах»: с реальной сетью, с записью прошлого трафика или с вероятностной моделью поведения серверов — достаточно подменить handler. Это заменяет многое из обычного mocking’а.

Для конечных дискретных моделей можно перечислить все достижимые исходы с точными вероятностями. Например, демо ремонта берёт багги-программу, мутирует её AST, считает патчи и после наблюдения (упавшего теста) выводит, какой патч вероятнее всего — и канонический diff в одну строку.

Ещё одна особенность: Jacquard хэширует каноническую разрешённую структуру, а не байты исходника. Комментарии, форматирование, локальные переименования не меняют хэш. Чистые тесты перезапускаются только когда меняется канонический код или зависимости.

Установка — curl с бинарниками: linux-x86_64, macos-x86_64 и macos-arm64. Если нужна разработка — клонируйте репозиторий, установите opam 2.5.1 и OCaml 5.1.1, затем dune build @all и dune runtest. Ключевые команды: jac run, jac check, jac fmt, jac diff, jac infer enumerate, jac replay, jac build (компилирует .jqd в standalone бинарник). Вывод компиляции побайтово совпадает с интерпретатором.

В состав входят демо: проверка политики checkout при разной доступности API, оценка риска релиза, repair как байесовский вывод, value of information для агента, escrow-пайплайн с полным циклом проверки. Все публичные демо привязаны к cram-транскриптам — при изменении кода тесты завалятся.

Лицензия — Apache License 2.0 со специальным исключением: скомпилированные программы могут использовать любую лицензию, включая проприетарную, и не требуют упоминания лицензии Jacquard в уведомлениях. Имя и идентичность проекта регулируются TRADEMARKS.md.

Это прототип: нет VM/JIT, конкурентности, непрерывных распределений, градиентов, формальных доказательств корректности. Все границы семантики Core 0.1 зафиксированы в docs/release/0.1/LIMITS.md.

Читать оригинал →