dhall v1.21.0 Release Notes

Release Date: 2019-03-07 // about 5 years ago
    • ๐Ÿ‘Œ Supports version 6.0.0 of the language standard
    • ๐Ÿ’ฅ BREAKING CHANGE: Remove the constructors keyword
    • ๐Ÿ’ฅ BREAKING CHANGE: CBOR-encode only special Doubles as half-floats
      • ... as standardized in version 6.0.0 of the language standard
      • CBOR Doubles except Infinity/-Infinity/NaN/0.0 are now encoded in at
        least 32 bits
      • See: #822
    • ๐Ÿ’ฅ BREAKING CHANGE: Sort record and union fields when CBOR-encoding
      • Fields and alternatives are now sorted when serialized
      • This does not affect semantic integrity checks, which already sorted these
        fields/alternatives before hashing expressions
      • This does affect the serialization of expressions that have not been
        normalized (e.g. uninterpreted expressions transmitted over the wire)
      • See: #835
    • ๐Ÿ› BUG FIX: Fix non-exhaustive pattern match in dhall lint
      • This fixes: Irrefutable pattern failed for pattern Let (l' :| ls') d'
      • This bug would cause dhall lint to fail on some nested let/in
        expressions
      • See: #780
      • See: #784
    • ๐Ÿ› BUG FIX: Don't fail if $HOME environment variable is unset
      • The interpreter was incorrectly throwing an exception if HOME was unset
      • The standard requires that implementations should handle the HOME
        environment variable being missing
      • See: #789
    • ๐Ÿ”‹ Feature: Remove version tag from semantic integrity check
      • ... as standardized in version 6.0.0 of the language standard
      • This is not a breaking change because this change also includes
        ๐Ÿ‘ backwards-compatible support for semantic integrity checks produced by
        older versions of the interpreter
    • ๐Ÿ”‹ Feature: Support Unicode path components
      • ... as standardized in version 6.0.0 of the language standard
      • You can now use Unicode in path components if they are quoted
      • i.e. ./families/"็ฆบ.dhall" is now legal
    • ๐Ÿ”‹ Feature: Add Text/show built-in
      • ... as standardized in version 6.0.0 of the language standard
      • You can now convert a Text literal to its equivalent Dhall source code
        (which is itself a Text literal)
      • This comes in handy when using Dhall code to generate JSON or Dhall code
      • See: #811
    • ๐Ÿ”‹ Feature: Add --immediate-dependencies/--transitive-dependencies flags for
      dhall resolve
      • You can now retrieve all of your immediate or transitive dependencies as a
        textual list
      • This simplifies integration with other command-line tools (such as file
        watchers)
      • See: #795
      • See: #803
    • ๐Ÿ”‹ Feature: dhall freeze now only freezes remote imports by default
      • dhall freeze used to freeze all imports (including local imports and
        environment variables)
      • Now dhall freeze only freezes remote imports by default, which is what
        most users want
      • You can install freeze all imports using the --all flag
      • See: #808
    • ๐Ÿ”‹ Feature: :save and :load REPL state
      • :save with no arguments now saves the REPL state to a .dhall-repl-N
        file
      • The file format is a list of dhall repl commands
      • You can use :load to load the saved state back into the REPL
      • See: #807
    • ๐Ÿ”‹ Feature: Add :hash command to dhall repl
      • This lets you conveniently hash expressions within the dhall repl
      • See: #806
    • ๐Ÿ”‹ Feature: Add --check flag to dhall format
      • Use this to check if the input is already formatted
      • Useful for continuous integration when you want to ensure that all code
        under version control remains formatted
      • See: #810
    • ๐Ÿ”‹ Feature: Add UnionInputType builder for InputTypes
      • This is the union analog of RecordInputType, letting you build a
        record explicitly instead of deriving the instance using GHC generics
      • See: #775
    • ๐Ÿ”‹ Feature: Add :set/:unset commands to dhall repl
      • You can use these commands to set or unset command-line options
      • Currently only setting/unsetting --explain is supported
    • ๐Ÿ›  Standards-compliance fixes:
    • ๐Ÿ“š Documentation fixes:
    • โœ… Test fixes:
    • ๐Ÿ‘Œ Improved error messages:
    • ๐Ÿ›  Formatting fixes:
    • ๐Ÿ›  REPL fixes: