{"id":13393207,"url":"https://github.com/dhall-lang/dhall-lang","last_synced_at":"2025-04-08T09:03:02.095Z","repository":{"id":40444099,"uuid":"102303588","full_name":"dhall-lang/dhall-lang","owner":"dhall-lang","description":"Maintainable configuration files","archived":false,"fork":false,"pushed_at":"2024-10-03T12:21:54.000Z","size":3825,"stargazers_count":4221,"open_issues_count":150,"forks_count":173,"subscribers_count":61,"default_branch":"master","last_synced_at":"2024-10-29T21:05:38.538Z","etag":null,"topics":["configuration-language","dhall"],"latest_commit_sha":null,"homepage":"https://dhall-lang.org","language":"Dhall","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dhall-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"dhall-lang","open_collective":"dhall"}},"created_at":"2017-09-04T00:41:19.000Z","updated_at":"2024-10-29T13:18:54.000Z","dependencies_parsed_at":"2023-12-18T05:06:59.079Z","dependency_job_id":"9f2d2664-2ae9-48c0-9a41-6cd830d144bc","html_url":"https://github.com/dhall-lang/dhall-lang","commit_stats":{"total_commits":765,"total_committers":92,"mean_commits":8.315217391304348,"dds":0.5333333333333333,"last_synced_commit":"74bcea9c9660718dc47872fb8fcaa01104833ee7"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhall-lang%2Fdhall-lang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhall-lang%2Fdhall-lang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhall-lang%2Fdhall-lang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhall-lang%2Fdhall-lang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhall-lang","download_url":"https://codeload.github.com/dhall-lang/dhall-lang/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247465472,"owners_count":20943181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration-language","dhall"],"created_at":"2024-07-30T17:00:46.399Z","updated_at":"2025-04-08T09:03:02.004Z","avatar_url":"https://github.com/dhall-lang.png","language":"Dhall","funding_links":["https://github.com/sponsors/dhall-lang","https://opencollective.com/dhall","https://opencollective.com/dhall/contribute","https://opencollective.com/dhall/organization/0/website","https://opencollective.com/dhall/organization/1/website","https://opencollective.com/dhall/organization/2/website","https://opencollective.com/dhall/organization/3/website","https://opencollective.com/dhall/organization/4/website","https://opencollective.com/dhall/organization/5/website","https://opencollective.com/dhall/organization/6/website","https://opencollective.com/dhall/organization/7/website","https://opencollective.com/dhall/organization/8/website","https://opencollective.com/dhall/organization/9/website"],"categories":["Dhall","Other Configuration Language","DevOps","others","Configuration Management"],"sub_categories":["Configuration Language"],"readme":"\u003cimg src=\"./img/dhall-logo.svg\" width=\"600\" alt=\"Dhall Logo\"\u003e\n\n\u003chead\u003e\n  \u003cmeta charset=\"UTF-8\"\u003e\n\u003c/head\u003e \n\nDhall is a programmable configuration language optimized for\nmaintainability.\n\nYou can think of Dhall as: JSON + functions + types + imports\n\nNote that while Dhall is programmable, Dhall is not Turing-complete.  Many\nof Dhall's features take advantage of this restriction to provide stronger\nsafety guarantees and more powerful tooling.\n\nYou can try the language live in your browser by visiting the official website:\n\n* [https://dhall-lang.org](http://dhall-lang.org/)\n\n## Getting started\n\nThe easiest way to get started experimenting with Dhall is to install the\n`dhall-to-json` and/or `dhall-to-yaml` executables, which enable you to\ngenerate JSON and YAML, respectively, on the command line. Platform- and\nruntime-specific installation instructions can be found in [the Dhall\ndocumentation][dhall-json-tutorial-wiki].\n\nFor other ways to integrate Dhall in your project, read:\n\n* [How to integrate Dhall][dhall-integration-howto]\n\n## Tutorials\n\nFor a short introduction, read:\n\n* [Learn Dhall in Y minutes][learn-dhall-in-y-minutes]\n\nTo learn more about core language features, read:\n\n* [Core language features][core-language-features]\n\nFor an even longer hands-on tutorial, read:\n\n* [Getting started: Generate JSON or YAML][dhall-json-tutorial-wiki]\n\n... and for an even longer tutorial, read:\n\n* [Language Tour][language-tour]\n\nFinally, we have a cheatsheet for a very condensed overview and quick lookup:\n\n* [Dhall Cheatsheet][dhall-cheatsheet]\n\n## What is this repository?\n\nThe Dhall configuration language has multiple implementations so that Dhall\nconfiguration files can be understood natively by several programming\nlanguages.  You can find the latest list of the language bindings and their\nrespective repositories here:\n\n* [How to integrate Dhall - Language support][language-support]\n\nThis repository contains language-independent functionality, such as:\n\n* The [grammar and formal semantics](./standard/README.md)\n\n  Dhall is a formally-specified language standard, and language bindings follow\n  the specification in order to ensure portability of Dhall configuration files\n  across language bindings.\n\n* The [standard test suite](./tests/README.md)\n\n  This repository contains a test suite that language bindings can use to\n  check compliance against the standard.\n\n* The [Prelude](./Prelude/README.md)\n\n  One Dhall package named the Prelude is versioned with and distributed\n  alongside the language standard.  This package contains general-purpose\n  utilities.\n\n* [Shared infrastructure](./nixops/README.md) for the Dhall ecosystem\n\n  Several services support Dhall developers and this repository contains a\n  [NixOps](https://nixos.org/nixops/manual/) specification of that\n  infrastructure that automatically deploys changes merged to that\n  configuration.\n\n## Development status\n\nThe current version and versioning policy is detailed in the\n[Versioning document](./standard/versioning.md), and you can see the latest\nchanges [in the Changelog](CHANGELOG.md).\n\nThe Dhall configuration language slowly evolves in response to user feedback\nand if you would like to participate in the language evolution process then\nyou should read:\n\n* [`CONTRIBUTING.md` - How do I change the language](.github/CONTRIBUTING.md)\n\n## Design philosophy\n\nProgramming languages are all about design tradeoffs and the Dhall language uses\nthe following guiding principles (in order of descending priority) that help\nnavigate those tradeoffs:\n\n* Polish\n\n    The language should delight users.  Error messages should be fantastic,\n    execution should be snappy, documentation should be excellent, and\n    everything should \"just work\".\n\n* Simplicity\n\n    When in doubt, cut it out.  Every configuration language needs bindings to\n    multiple programming languages, and the more complex the configuration\n    language the more difficult to create new bindings.  Let the host language\n    that you bind to compensate for any missing features from Dhall.\n\n* Beginner-friendliness\n\n    Dhall needs to be a language that anybody can learn in a day and debug\n    with little to no assistance from others.  Otherwise people can't recommend\n    Dhall to their team with confidence.\n\n* Robustness\n\n    A configuration language needs to be rock solid.  The last thing a person\n    wants to debug is their configuration file.  The language should never hang\n    or crash.  Ever.\n\n* Consistency\n\n    There should only be one way to do something.  Users should be able to\n    instantly discern whether or not something is possible within the Dhall\n    language or not.\n\nThe Dhall configuration language is also designed to negate many of the common\nobjections to programmable configuration files, such as:\n\n\u003e \"Config files shouldn't be Turing complete\"\n\nDhall is not Turing-complete.  Evaluation always terminates, no exceptions\n\n\u003e \"Configuration languages become unreadable due to abstraction and indirection\"\n\nEvery Dhall configuration file can be reduced to a normal form which eliminates\nall abstraction and indirection\n\n\u003e \"Users will go crazy with syntax and user-defined constructs\"\n\nDhall is a very minimal programming language.  For example: you cannot even\ncompare strings for equality.  The language also forbids many other common\noperations in order to force users to keep things simple\n\n## Name\n\nThe language is named after a\n[Dustman from the game Planescape: Torment][dhall-name] who belongs to a faction\nobsessed with death (termination).  The fountain pen in the logo is the modern\nanalog of Dhall's quill.\n\nThe name rhymes with \"tall\"/\"call\"/\"hall\" (i.e. \"dɔl\" for a US speaker or\n\"dɔːl\" for a UK speaker using the International Phonetic Alphabet).\n\n## Contributors\n\n### Code Contributors\n\nThis project exists thanks to all the people who contribute. [[Contribute](.github/CONTRIBUTING.md)].\n\u003ca href=\"https://github.com/dhall-lang/dhall-lang/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/dhall/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n### Financial Contributors\n\nBecome a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/dhall/contribute)]\n\n#### Individuals\n\n\u003ca href=\"https://opencollective.com/dhall\"\u003e\u003cimg src=\"https://opencollective.com/dhall/individuals.svg?width=890\"\u003e\u003c/a\u003e\n\n#### Organizations\n\nSupport this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/dhall/contribute)]\n\n\u003ca href=\"https://opencollective.com/dhall/organization/0/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/1/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/2/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/3/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/4/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/5/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/6/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/7/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/8/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/dhall/organization/9/website\"\u003e\u003cimg src=\"https://opencollective.com/dhall/organization/9/avatar.svg\"\u003e\u003c/a\u003e\n\n[dhall-haskell]: https://github.com/dhall-lang/dhall-haskell\n[dhall-haskell-tutorial]: https://hackage.haskell.org/package/dhall/docs/Dhall-Tutorial.html\n[dhall-haskell-post]: http://www.haskellforall.com/2016/12/dhall-non-turing-complete-configuration.html\n[dhall-nix]: https://github.com/dhall-lang/dhall-nix\n[dhall-nix-tutorial]: https://hackage.haskell.org/package/dhall-nix/docs/Dhall-Nix.html\n[dhall-nix-post]: http://www.haskellforall.com/2017/01/typed-nix-programming-using-dhall.html\n[dhall-ruby]: https://git.sr.ht/~singpolyma/dhall-ruby\n[dhall-ruby-rubydoc]: https://www.rubydoc.info/gems/dhall\n[dhall-ruby-rubygems]: https://rubygems.org/gems/dhall\n[dhall-clj]: https://github.com/f-f/dhall-clj\n[dhall-purescript]: https://github.com/MonoidMusician/dhall-purescript\n[dhall-eta]: https://github.com/eta-lang/dhall-eta\n[dhall-python]: https://github.com/SupraSummus/dhall-python\n[dhall-scala]: https://github.com/amarpotghan/dhall-scala\n[dhall-json]: https://github.com/dhall-lang/dhall-json\n[dhall-json-tutorial]: https://hackage.haskell.org/package/dhall-json/docs/Dhall-JSON.html\n[dhall-json-post]: http://www.haskellforall.com/2017/02/program-json-and-yaml-with-dhall.html\n[dhall-bash]: https://github.com/dhall-lang/dhall-bash\n[dhall-bash-tutorial]: https://hackage.haskell.org/package/dhall-bash/docs/Dhall-Bash.html\n[dhall-bash-post]: http://www.haskellforall.com/2017/04/use-dhall-to-configure-bash-programs.html\n[dhall-text]: https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-text\n[dhall-text-post]: http://www.haskellforall.com/2017/06/dhall-is-now-template-engine.html\n[dhallToNix]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/dhall-to-nix.nix\n[dhall-name]: http://torment.wikia.com/wiki/Dhall\n[dhall-prelude]: https://prelude.dhall-lang.org\n[hcl]: https://github.com/hashicorp/hcl\n[learn-dhall-in-y-minutes]: https://learnxinyminutes.com/docs/dhall/\n[readme-before-nat-int-swap]: https://github.com/dhall-lang/dhall-lang/blob/1b74481c87b3ed83ecd613420c11de92335652a3/README.md\n[migration-nat-int-swap]: https://docs.dhall-lang.org/howtos/migrations/Swapped-syntax-for-Natural-numbers-and-Integers.html\n[issue-tracker]: https://github.com/dhall-lang/dhall-lang/issues\n[core-language-features]: https://docs.dhall-lang.org/discussions/Core-language-features.html\n[dhall-json-tutorial-wiki]: https://docs.dhall-lang.org/tutorials/Getting-started_Generate-JSON-or-YAML.html\n[dhall-integration-howto]: https://docs.dhall-lang.org/howtos/How-to-integrate-Dhall.html\n[dhall-cheatsheet]: https://docs.dhall-lang.org/howtos/Cheatsheet.html\n[language-tour]: https://docs.dhall-lang.org/tutorials/Language-Tour.html\n[language-support]: https://docs.dhall-lang.org/howtos/How-to-integrate-Dhall.html#language-support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhall-lang%2Fdhall-lang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhall-lang%2Fdhall-lang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhall-lang%2Fdhall-lang/lists"}