Dhall
- title
- Dhall
- type
- toolbox
- summary
- Типизированный тотальный язык конфигурации с функциями, импортами и семантическими хешами; генерирует YAML/JSON
- tags
- configuration, language, types, functional
- language
- Haskell (reference impl), with bindings in many languages
- license
- BSD-3-Clause
- created
- 2026-05-21
- updated
- 2026-05-21
- lang
- ru
- translation_of
- dhall
- source_updated
- 2026-05-21
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Dhall - это программируемый язык конфигурации, задуманный как "JSON + функции + типы + импорты". В основе его концепции лежит идея о том, что конфигурации нужны те же инструменты обеспечения корректности, что и продакшен-коду, а "тьюринг-полные языки конфигурации" - неверный компромисс. Dhall - это тотальный язык программирования: гарантируется, что программы всегда завершаются и не вызывают произвольных побочных эффектов.
Что он даёт
- DRY-конфигурация - задаётся единый источник правды, на который ссылаются разные цели развёртывания. Один и тот же файл Dhall конвертируется в YAML или JSON для любого инструмента ниже по цепочке.
- Рефакторинг с семантическими хешами - семантический хеш выражения в Dhall инвариантен к рефакторингу, сохраняющему поведение, что гарантирует: переименование или реорганизация структуры не изменили фактическое содержимое конфигурации. Скринкаст на главной странице показывает, что хеш остаётся прежним после нескольких синтаксических переписываний.
- Семантический diff - проверка того, что внесённое изменение затрагивает только то, что планировалось изменить.
- Интеграция с редакторами - навигация с учётом типов, автодополнение, кликабельные импорты, всплывающие подсказки для выведенных типов. Поддержка VSCode показана в демо.
Модель безопасности
Dhall прямо заявляет о поддержке выполнения ненадёжного кода:
Язык нацелен на безопасный импорт и вычисление ненадёжного кода на Dhall, даже если он написан злоумышленником. Невозможность сделать это мы считаем ошибкой в спецификации.
Сочетание тотального вычисления (гарантированное завершение), отсутствия побочных эффектов и ограниченного разрешения импортов делает это возможным: враждебный ввод может не пройти проверку типов или не импортироваться, но по самому дизайну языка не способен повысить привилегии или нанести вред.
С чем конкурирует
- YAML/JSON с языками шаблонизации (Jsonnet, Helm templates, CUE, ksonnet). Система типов Dhall отлавливает ошибки, которые Jsonnet пропускает.
- Язык Nix для сценариев вне NixOS - схожие принципы ленивости и чистоты, но другая эргономика.
- Классы конфигурации на TypeScript/Pydantic - Dhall не привязан к конкретной платформе или языку, поэтому одна и та же конфигурация подходит для инструментов на Go, Rust, Haskell и Python.
Обратная сторона - порог входа. Система типов Dhall сложна, а механизм импортов и хешей требует отдельного понимания ментальной модели.
Где находится
Перекликается с whitelist-capability-config - аргументацией Refaktor в пользу встраиваемого скриптинга с запретом по умолчанию через Rye, - однако Dhall выбирает противоположный подход: полноценный функциональный язык со строгими гарантиями тотальности, а не минимальный с deny-by-default. Оба решения отвечают на одно и то же противоречие между выразительностью конфигурации и безопасностью. Dhall говорит: "сделай язык слишком ограниченным, чтобы совершить что-то опасное". Rye говорит: "начни с нуля и регистрируй возможности для каждого слова отдельно".
Сайт: dhall-lang.org