<story><title>Dhall – A Distributed, Safe Configuration Language</title><url>https://github.com/dhall-lang/dhall-lang</url></story><parent_chain></parent_chain><comment><author>ff_</author><text>Dhall was such a godsend to make our infra configs more safe &amp;amp; modular (we jointly configure Kubernetes &amp;amp; Terraform with it).&lt;p&gt;If you need some example of use cases to see if it might help you, check out &amp;quot;Dhall in Production&amp;quot; [0]&lt;p&gt;So far I&amp;#x27;m a maintainer of dhall-kubernetes [1] and we&amp;#x27;ll soon open source some of our integration with Terraform.&lt;p&gt;And because it&amp;#x27;s absolutely safe to distribute Dhall code I&amp;#x27;m toying with the idea of making some kind of Dhall-Kafka pubsub, in which you can safely distribute Dhall code and data, with automatic version migrations (check this out for more info on why this is possible [2])&lt;p&gt;[0]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-lang&amp;#x2F;wiki&amp;#x2F;Dhall-in-production&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-lang&amp;#x2F;wiki&amp;#x2F;Dhall-in-produ...&lt;/a&gt;&lt;p&gt;[1]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-kubernetes&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-kubernetes&lt;/a&gt;&lt;p&gt;[2]: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.haskellforall.com&amp;#x2F;2017&amp;#x2F;11&amp;#x2F;semantic-integrity-checks-are-next.html?showComment=1511801973283#c6412191866661551590&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.haskellforall.com&amp;#x2F;2017&amp;#x2F;11&amp;#x2F;semantic-integrity-chec...&lt;/a&gt;</text></comment>
<story><title>Dhall – A Distributed, Safe Configuration Language</title><url>https://github.com/dhall-lang/dhall-lang</url></story><parent_chain></parent_chain><comment><author>KirinDave</author><text>Dhall&amp;#x27;s really cool because you can use it even if your tooling doesn&amp;#x27;t support dhall. There is direct JSON&amp;#x2F;YAML support with dhall-json: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-json&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-json&lt;/a&gt;&lt;p&gt;If you wanted to generate something like an NGINX config (or, for example, TOML or Terraform) you could use dhall-text: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-text&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;dhall-lang&amp;#x2F;dhall-text&lt;/a&gt;&lt;p&gt;Oh, did I say terraform? Someone&amp;#x27;s already on supporting that directly: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;blast-hardcheese&amp;#x2F;dhall-terraform&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;blast-hardcheese&amp;#x2F;dhall-terraform&lt;/a&gt;&lt;p&gt;Dhall is very unique among configuration because it&amp;#x27;s &amp;quot;distributed&amp;quot;, meaning that Dhall can load any file as a dhall expression, and has builtin URI resolvers to make even remote endpoints part of local configuration. This is excellent for, say, CI integration.&lt;p&gt;Dhall has &amp;quot;semantic hashing&amp;quot; so that if someone does change a dhall dependency in a surprising way, the dhall script will refuse to continue (and give a very clear error about what changed, where it was looking for the change, and why it&amp;#x27;s stopping).&lt;p&gt;Dhall is a secret superpower for project configuration. Especially as of the 1.14+ releases, it&amp;#x27;s become an increasingly go-to tool for me. Even in just one-off JSON generation scripts, I find it to be a lifesaver.</text></comment>