awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
dhall-lang avatar

dhall-lang/dhall-lang

0
View on GitHub↗
4,458 stars·184 forks·Dhall·BSD-3-Clause·5 viewsdhall-lang.org↗

Dhall Lang

Dhall is a type-safe configuration language designed to create programmable configuration files that are guaranteed to terminate. It is a non-Turing-complete language that uses a strict type system to ensure correctness and prevent infinite loops during evaluation.

The project functions as a deterministic configuration engine and marshalling tool, converting programmable expressions into static formats such as JSON, YAML, and Bash. It distinguishes itself through a focus on security and integrity, using semantic hashing to pin remote imports and enforcing origin policies to prevent data exfiltration.

Its capabilities cover a broad surface of configuration management, including the use of polymorphic functions, union types, and record completion to reduce redundancy. It provides tools for schema validation, remote expression resolution, and a Language Server Protocol implementation for editor integration.

The language provides a command-line interface and a REPL for evaluating expressions and verifying equality.

Features

  • Type-Safe Configuration Languages - Provides a programmable language specifically designed for creating validated, type-safe structured configuration files.
  • Deterministic Configuration Engines - Provides a deterministic configuration engine that ensures security and consistency through semantic hashing and normalization.
  • Non-Turing-Complete Languages - Uses a non-Turing-complete language specification to guarantee that all configuration evaluations terminate.
  • Termination Guarantees - Use a strict type system to ensure configuration files are well-formed and guaranteed to terminate.
  • Configuration Logic Reusability - Enables the creation of shareable configuration logic using let-bindings, anonymous functions, and explicit polymorphism.
  • Typed Configuration Schemas - Enforce a schema on configuration files using type annotations to reject invalid structures.
  • Configuration Record Operations - Perform complex record operations including shallow overrides, nested field syntax, and subset projection.
  • Record Completion - Fills missing record fields automatically using a schema that defines required types and default values.
  • Schema Validators - Enforces strict data structures and types on configuration files to reject invalid inputs.
  • Configuration Format Converters - Evaluates programmable configurations into a normal form and converts them into static formats like JSON or YAML.
  • Configuration File Generators - Produces formatted configuration files for external tools by converting type-safe definitions into YAML, JSON, or CloudFormation.
  • Programmable - Uses functions and variables to reduce redundancy and generate complex JSON or YAML files.
  • External File Importers - Resolve local paths or remote URLs to integrate external configuration files and raw text.
  • Expression Imports - Resolve local file paths into expressions to share types, functions, or values across files.
  • Configuration Imports - Load reusable code and configuration fragments from other files or remote URLs to avoid duplication.
  • Configuration Schemas - Check a configuration file against a predefined schema to ensure it meets required types.
  • Configuration Merging - Combine multiple records into a single output using a merge operator.
  • JSON-to-YAML Converters - Compiles type-safe programmable expressions into static formats such as JSON, YAML, Bash, or Nix.
  • Programmatic Configuration Generation - Generate repetitive configuration blocks programmatically using functions and variables to ensure consistency.
  • Boolean Logic Evaluation - Evaluate truth values using logical operators and conditional expressions to control configuration flow.
  • Configuration Logic Functions - Implements custom functions within the configuration language to generate complex records based on input arguments.
  • Configuration Marshalling - Converts interpreted normal forms into standard static data formats like JSON or YAML.
  • Data Marshalling - Translate programmable configuration into static formats like JSON or YAML for other applications.
  • Expression Evaluators - Evaluates programmable configuration into plain data through resolution, type checking, and normalization.
  • Type-Safe Data Structures - Allows the definition of structured data using a strict type system with records, lists, and union types.
  • Sum Types - Implements sum types (tagged unions) to ensure a value belongs to a specific set of distinct alternatives.
  • List Types - Create ordered sequences of a single type with support for indexing, reversing, and folding.
  • Local Bindings - Assigns names to expressions via let-bindings to enable reuse and improve readability within a file.
  • Normalization Pipelines - Transforms programmable expressions into a canonical normal form through a multi-phase pipeline of resolution and reduction.
  • Parametric Polymorphism - Provides explicit polymorphism allowing the creation of reusable logic that operates on multiple different types.
  • Record Types - Manipulate structured data using recursive merging, field projection, and schema-based auto-completion.
  • Termination Verifiers - Guarantees that evaluation always terminates by utilizing a non-Turing-complete language specification.
  • Type Checking - Uses a strict type system to validate configuration structures and ensure correctness before evaluation.
  • Union Types - Use union types to represent multiple possible value types when bridging typed configurations to weakly typed outputs.
  • Code Execution Prevention - Prevents the execution of arbitrary scripts by treating configuration as non-Turing-complete data.
  • Dependency Integrity Verifiers - Ensures remote imports are untampered using semantic SHA256 hashes of the abstract syntax tree.
  • Canonical Normalization - Produces a canonical normal form by eliminating all indirection to verify the behavior of the configuration logic.
  • Type-Safe Configurations - Ensures configuration files are valid and predictable using a strict type system and fixed grammar.
  • Variable Bindings - Define reusable values using let-expressions to avoid duplicating data across a configuration.
  • Schema Default Values - Provides specialized assignment operators to apply fallback values when configuration inputs are missing.
  • Remote Expression Imports - Fetch remote expressions via HTTP using custom headers to distribute shared packages.
  • Version Pinning - Secures external imports using cryptographic hashes to lock them to a specific version.
  • Integer Arithmetic - Calculate sums, differences, and products using natural numbers and integers.
  • Programmable Configurations - Provides a system for building reusable configuration logic using functions, polymorphism, and record completion.
  • Semantic Hashing - Ensures the integrity of remote imports by calculating cryptographic hashes of the abstract syntax tree.
  • Church-Encoded Recursion - Translates recursive data structures into a compatible non-recursive format using Church encoding to guarantee termination.
  • Church-Encoded Pattern Matching - Convert Church-encoded values back into union types to enable standard conditional logic.
  • Native Data Marshallers - Decodes expressions directly into strongly typed data structures within the host programming language.
  • Nested Record Mutations - Modify specific values deep within a record structure without redefining the entire object.
  • Cross-Language Marshallers - Converts interpreted expressions into target file formats or language bindings like JSON and YAML.
  • Remote Resource Resolution - Provides mechanisms for resolving and fetching configuration expressions from external remote URLs and local files.
  • Language Server Protocol Implementations - Implements the Language Server Protocol to provide auto-completion and formatting for configuration files in compatible editors.
  • Language Server Protocol Integrations - Implements the Language Server Protocol to provide autocomplete, formatting, and navigation in compatible editors.
  • LSP Editor Integrations - Implements the Language Server Protocol to provide auto-completion and formatting in compatible text editors.
  • Configuration Distribution and Sharing - Shares reusable configuration logic across teams using hashed remote imports to ensure integrity.
  • Configuration File Loading - Reads configuration files directly into programming languages using native bindings to ensure type safety.
  • Infrastructure as Code Tools - Provides a type-safe layer for generating cloud templates and system settings for external infrastructure tools.
  • Expression Equality Verifiers - Provides a built-in mechanism to assert that two expressions are functionally equivalent.
  • External Value Imports - Fetches configuration values from local files, environment variables, or web services to reduce redundancy.
  • Immutable Record Updates - Modify specific fields within deeply nested records or optional values without recreating the structure.
  • Import Restrictions - Restricts web-imported expressions from accessing local files or environment variables to prevent data exfiltration.
  • List Folding - Combine all elements of a list into a single output value using a folding function.
  • Normal Form Evaluation - Reduces expressions and functions to their simplest representation by removing all imports and indirection.
  • Domain Specific Languages - Allows the creation of serializable, type-safe domain-specific languages using a non-Turing-complete model.
  • Import Origin Policies - Enforces a same-origin header policy to prevent credential leaking during remote expression imports.
  • Record Completion - Fills missing record fields by merging user input with predefined type schemas and default values.
  • Import Fallback Chains - Switch to a secondary import alternative if the primary source fails to resolve.
  • Optional Value Types - Represent the presence or absence of a value using a type-safe wrapper.

Star history

Star history chart for dhall-lang/dhall-langStar history chart for dhall-lang/dhall-lang

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Dhall Lang

Similar open-source projects, ranked by how many features they share with Dhall Lang.
  • apple/pklapple avatar

    apple/pkl

    11,429View on GitHub↗

    Pkl is a configuration-as-code language used to define, validate, and generate structured configuration files. It functions as a type-safe configuration generator that enforces data integrity through a strongly-typed schema, ensuring configuration values meet defined constraints and types during evaluation. The project distinguishes itself by acting as both a configuration file generator and a binding generator. It transforms high-level programmable definitions into static formats such as JSON, YAML, or XML, and produces language-specific source code to synchronize settings and provide type s

    Javaconfigconfigurationdata
    View on GitHub↗11,429
  • reasonml/reasonreasonml avatar

    reasonml/reason

    10,313View on GitHub↗

    Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web environments or native machine code for operating systems. It serves as an OCaml-compatible language that shares an abstract syntax tree with OCaml, providing a practical syntax for the OCaml ecosystem. The project functions as a type-safe frontend language, incorporating JSX support to build user interfaces through structural elements that translate into type-safe function calls. It enables deep integration with the JavaScript ecosystem, allowing the use of existing librarie

    OCamljavascriptocamlprogramming-language
    View on GitHub↗10,313
  • google/cel-specgoogle avatar

    google/cel-spec

    3,673View on GitHub↗

    The Common Expression Language specification is a formal standard for a non-Turing-complete expression language designed for safe, portable, and fast logic evaluation. It serves as a cross-language logic standard and a declarative policy language, providing a consistent semantic framework for executing boolean expressions and data transformations across different programming environments. This specification acts as an embedded expression engine that allows applications to integrate portable logic for evaluating user-defined configurations. It is specifically designed to enable safe user-defin

    Starlark
    View on GitHub↗3,673
  • cloudtools/tropospherecloudtools avatar

    cloudtools/troposphere

    4,942View on GitHub↗

    Troposphere is a Python library for programmatically creating and validating infrastructure as code templates. It serves as a generator for AWS CloudFormation and OpenStack templates, allowing cloud resources to be defined as objects within a general purpose programming language rather than through raw JSON or YAML markup. The project focuses on cloud resource validation by checking property names and data types during the template construction process. This system identifies configuration errors and missing required fields before the infrastructure is exported for deployment. The library co

    Python
    View on GitHub↗4,942
See all 30 alternatives to Dhall Lang→

Frequently asked questions

What does dhall-lang/dhall-lang do?

Dhall is a type-safe configuration language designed to create programmable configuration files that are guaranteed to terminate. It is a non-Turing-complete language that uses a strict type system to ensure correctness and prevent infinite loops during evaluation.

What are the main features of dhall-lang/dhall-lang?

The main features of dhall-lang/dhall-lang are: Type-Safe Configuration Languages, Deterministic Configuration Engines, Non-Turing-Complete Languages, Termination Guarantees, Configuration Logic Reusability, Typed Configuration Schemas, Configuration Record Operations, Record Completion.

What are some open-source alternatives to dhall-lang/dhall-lang?

Open-source alternatives to dhall-lang/dhall-lang include: apple/pkl — Pkl is a configuration-as-code language used to define, validate, and generate structured configuration files. It… reasonml/reason — Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web… google/cel-spec — The Common Expression Language specification is a formal standard for a non-Turing-complete expression language… cue-lang/cue — CUE is a constraint-based configuration language designed for data validation, schema definition, and code generation.… cloudtools/troposphere — Troposphere is a Python library for programmatically creating and validating infrastructure as code templates. It… elm/compiler — This project is a functional programming compiler and JavaScript transpiler that transforms a statically typed…