dhall v1.25.0 Release Notes

Release Date: 2019-07-29 // over 4 years ago
    • ๐Ÿ‘Œ Supports version 9.0.0 of the standard
    • ๐Ÿ’ฅ BREAKING CHANGE: Remove support for old-style List-like Optional literals
      • List-like Optional Literals (i.e. [1] : Optional Natural) are no
        longer valid
      • See: #1002
    • ๐Ÿ’ฅ BREAKING CHANGE: Add support for semi-semantic caching
      • This change significantly improves the performance of imports
      • This change also automatically caches imports without an integrity check
      • This changes several types in Dhall.Import to support this new
        ๐Ÿ”‹ feature
      • See: #1113
    • ๐Ÿ’ฅ BREAKING CHANGE: Implement new Unicode braced escape sequence
      • Escape sequences encoding surrogate pairs are no longer valid
      • Instead, characters previously encoded as surrogate pairs can instead be
        encoded as a braced sequence
      • For example: "\uD834\uDD1E" must now be written as "\u{1D11E}"
      • See: #987
      • See: #1104
    • ๐Ÿ’ฅ BREAKING CHANGE: Make the type of extract richer:
      • Dhall.extract can now return a detailed error instead of just a Maybe
      • This is a breaking chnage because the type of extract changed
      • See: #1011
    • ๐Ÿ’ฅ BREAKING CHANGE: Add support for importing expressions as Location
      • This is a breaking change because a new Location constructor was added
        to ImportMode
      • See: #1019
    • ๐Ÿ’ฅ BREAKING CHANGE: Switch Var to use an Int
      • This is a performance improvement, but also a breaking change since the
        Integer in the Var constructor was changed to an Int
      • See: #1044
    • ๐Ÿ’ฅ BREAKING CHANGE: Add new toMap keyword
      • This is a breaking change to the API because a new ToMap constructor
        was added to the Expr type
      • This is also a technically breaking change to the language because toMap
        is now a reserved keyword, although most code should be unaffected in
        practice
      • See: #1041
    • ๐Ÿ’ฅ BREAKING CHANGE: Sort the fields of a record projection during normalization
      • This is a technically breaking change to the language because any
        expressions with an uninterpreted record projection will have a different
        semantic integrity check. However, most could should be unaffected in
        practice
      • See: #1111
    • ๐Ÿ› BUG FIX: Fix substitution into record projection by type
      • An expression like this one was being incorrectly rejected:
        let e = { a = 10, b = "Text" } let s = { a : Natural } in e.(s), which
        ๐Ÿ›  this change fixes
      • See: #1012
    • ๐Ÿ› BUG FIX: Reject record projection when there is a field type mismatch
      • Record projection by type was previously not checking the expected
        ๐Ÿ›  field types, which this change fixes
      • See: #1027
    • ๐Ÿ› BUG FIX: Fix linting of unused let bindings
      • Certain let bindings were not correctly detected as unused, which this
        ๐Ÿ”„ change fixes
      • See: #1001
    • ๐Ÿ› BUG FIX: Fix --file option
      • The --file option from the previous release did not work, due to not
        ๐Ÿ›  computing relative paths correctly, which this change fixes
      • See: #1004
    • ๐Ÿ› BUG FIX: Minor fix to dhall diff
      • dhall diff was incorrectly displaying spurious differences for
        ๐Ÿ›  identical lists that were function arguments, which this change fixes
      • See: #1006
    • ๐Ÿ› BUG FIX: Allow Sort as type annotation
      • This should have been implemented in the previous release as part of
        ๐Ÿ‘Œ supporting version 8.0.0 of the standard, but was missed
      • See: #1024
    • ๐Ÿ› BUG FIX: Dhall.Map: Reflect original key ordering in Ord instance
      • Dhall.Map now considers key order when comparing Maps, which it should
        have done before, but didn't
      • See: #1050
    • ๐Ÿ› BUG FIX: Consistently format multi-line strings
      • The formatter now formats naked multi-line strings the same as nested
        multi-line strings
      • Specifically, naked multi-line strings can now be formatted on a single
        (just like nested multi-line strings)
      • See: #1056
    • ๐Ÿ› BUG FIX: Make isNormalized consistent with normalize
    • ๐Ÿ› BUG FIX: Make normalizeWithM consistent with normalize
    • ๐Ÿ› BUG FIX: Fix import alternatives to recover from type errors
    • ๐Ÿ”‹ Feature: Semi-semantic caching
      • The Haskell implementation now implicitly caches all local imports, not
        just imports frozen by integrity checks, so that you don't have to freeze
        them when doing local development
      • These cached imports are still correctly invalidated if they or any of
        their dependencies change
      • This new implicit cache is stored underneath ~/.cache/dhall-haskell by
        0๏ธโƒฃ default
      • See: #1154
    • ๐Ÿ”‹ Feature: New dhall text subcommand
      • This new subcommand supersedes the old dhall-to-text executable
    • ๐Ÿ”‹ Feature: Add instance Lift (Expr s a)
    • ๐Ÿ›  Fixes and improvements to error messages:
    • ๐Ÿ›  Fixes and improvements to tests:
    • ๐ŸŽ Performance improvements