All Versions
25
Latest Version
Avg Release Cycle
32 days
Latest Release
1227 days ago

Changelog History
Page 2

  • v1.29.0 Changes

    January 13, 2020
  • v1.28.0 Changes

    December 06, 2019
  • v1.27.0 Changes

    October 20, 2019
  • v1.26.1 Changes

    September 25, 2019
  • v1.26.0 Changes

    September 12, 2019
  • v1.25.0 Changes

    July 29, 2019
    • ๐Ÿ‘Œ 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
  • v1.24.0 Changes

    June 07, 2019
    • ๐Ÿ‘Œ Supports version 8.0.0 of the standard
    • ๐Ÿ’ฅ BREAKING CHANGE: Allow tabs and blank lines in multi-line strings
      • Blank lines are now ignored for the purpose of dedenting multiline strings
      • Lines with leading tabs (or mixed tabs and spaces) are now dedented, too,
        so long as they all share the same prefix
      • This is technically a breaking change, but unlikely to affect programs
        in practice, especially if they were formatted with dhall format. This
        ๐Ÿ”„ change mainly affects programs that were not indented correctly.
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ’ฅ BREAKING CHANGE: Simplify bare interpolations
      • Expressions like ฮป(x : Text) โ†’ "${x}" now simplify to ฮป(x : Text) โ†’ x
      • This is a technically breaking change because it changes how these sorts
        of expressions are serialized. This does not affect semantic integrity
        checks and the new simplified expressions are extensionally equivalent to
        their older counterpart expressions.
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ’ฅ BREAKING CHANGE: Encode integrity check as multihash
      • Semantic integrity checks are now encoded using the multihash spec
      • This is a technically breaking change that does not perturb the hash for
        ๐Ÿ‘‰ user-facing semantic integrity checks. This only affects how expressions
        with unresolved imports are serialized, but semantic integrity checks are
        only computed for fully-resolved imports.
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ› BUG FIX: Fix type-checker to reject invalid record type annotations
      • e.g. { x = 1 } : { x : Text } was not properly rejected by the type
        checker
      • See: #965
    • ๐Ÿ› BUG FIX: Custom header forwarding fixed
      • Forwarding custom headers could previously fail in various ways, such as:
      • Cyclic imports leading to endless network requests
      • Resolving a non-existent import for the custom headers
      • Resolving an existing but incorrect import for the custom headers
      • This change fixes that by forwarding custom headers by value instead of
        by reference
      • See: #967
    • ๐Ÿ› BUG FIX: Fix GHCJS support
      • Natural/fold was broken in version 1.22, which this change fixes
      • Specifically, it would hang for Natural numbers greater than 1
      • See: #985
    • ๐Ÿ› BUG FIX: dhall diff no longer double-prints key-value separators
    • ๐Ÿ”‹ Feature: Record projection by expression
      • You can now project out a subset of record fields by the expected type
      • let t = { x : Natural } let p = { x = 1, y = 2 } in p.(t) = { x = 1 }
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ”‹ Feature: Inline headers
      • You no longer need to specify custom headers in a separate import. You
        can now specify them inline within the same file.
      • e.g.: https://example.com/x using [{ header = "Foo", value = "Bar" }]
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ”‹ Feature: Allow Sort as a type annotation
      • An expression such as Kind โ†’ Kind : Sort will now type-check
      • Sort is still disallowed outside of a type annotation
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ”‹ Feature: Allow self-describe-cbor when decoding
      • Dhall expressions serialized as CBOR can be tagged to describe themselves
        as CBOR without affecting decoding
      • See the changelog for standard version 8.0.0 for more details
    • ๐Ÿ”‹ Feature: New --file option for dhall commands
      • In other words, instead of dhall <<< './some/file you can now use
        dhall --file some/file
      • See: #949
    • ๐Ÿ”‹ Feature: New --cache flag for dhall freeze command
      • This automates the idiom used by the Prelude to optimistically cache
        imports but gracefully degrade if the semantic integrity check fails
      • See: #980
    • ๐Ÿ”‹ Feature: Add :clear command to dhall repl
      • This deletes previous bindings from the history so that they can be
        garbage collected
      • See: #966
    • ๐Ÿ”‹ Feature: New chunkExprs Traversal added to Dhall.Core
    • ๐Ÿ”‹ Feature: New Dhall.Optics module
      • This re-exports some convenient @lens@ utilities used internally for
        ๐Ÿ“ฆ packages trying to avoid a @lens@ dependency
      • See: #986
    • ๐Ÿ‘ More GHC 8.8 support
  • v1.23.0 Changes

    May 11, 2019
    • ๐Ÿ’ฅ BREAKING CHANGE: Fix marshaling union literals
      • 1.22.0 introduced two separate bugs in marshaling union literals between
        ๐Ÿš€ Dhall and Haskell, which this release fixes:
      • Dhall enums did not correctly map onto Haskell enums
      • New-style union literals (i.e. < A : T >.A x) were not correctly
        ๐Ÿ‘Œ supported
      • See: #918
      • See: #927
      • See: #936
    • ๐Ÿ› BUG FIX: Fix ฮฑ-normalization
      • Version 1.22.0 introduced a new faster evaluation algorithm, but the new
        ๐Ÿš€ algorithm introduced two ฮฑ-normalization regression, which this release
        ๐Ÿ›  fixes
      • The primary effect of this bug was that semantic integrity checks would
        fail for expressions that contain an if/then/else` expression in their
        normal form
      • See: #931
      • See: #938
    • ๐Ÿ› BUG FIX: Fix merging of sort-level record types
      • The language standard requires that { a : Kind } โฉ“ { b : Kind } is
        ๐Ÿ›  valid, which this change fixes
      • See: #891
    • ๐Ÿ› BUG FIX: dhall freeze respects the --ascii flag
    • ๐Ÿ› BUG FIX: Don't autocomplete fields for record types
      • This prevents the REPL from expanding { x : T }.<TAB> to { x : T }.x
      • See: #937
    • ๐Ÿ‘Œ Support MonadFail-related changes in GHC 8.8
    • โž• Add cross flag to simplify cross-compilation
      • This allows the dhall package to be built without using
        TemplateHaskell
      • See: #928
    • Increase lines of context for error messages
      • Error messages now provide at least 20 lines of context instead of 3
        before truncating large expressions
      • See: #916
    • โž• Add line numbers to error messages
      • The bottom of every Dhall type error includes the original source code,
        which now has line numbers on the left margin
      • See: #919
    • ๐Ÿ“œ Expand lower bounds on megaparsec/transformers-compat dependencies
      • This is to support dhall on Debian Sid
      • See: #939
  • v1.22.0 Changes

    April 28, 2019
    • ๐Ÿ‘Œ Supports version 7.0.0 of the standard
    • ๐Ÿ’ฅ BREAKING CHANGE: Remove deprecated Path type synonym
    • ๐Ÿ› BUG FIX: Correctly parse identifiers beginning with http
      • i.e. httpPort was supposed to be a valid identifier name and now is
      • See: #870
    • ๐Ÿ› BUG FIX: Fix dhall encode bug
      • dhall encode bug was generating binary expressions that were valid
        (i.e. they would decode correctly) but were non-standard (i.e. hashing
        them would not match the hash you would normally get from a semantic
        integrity check)
      • Semantic integrity checks were not affected by this bug since they used
        a slightly different code path that generated the correct binary input to
        the hash. Only the dhall decode subcommand was affected
      • See: #859
    • ๐Ÿ› BUG FIX: Fix for Dhall.UnionType
      • This fixes some expressions that would previously fail to marshal into
        Haskell, specifically those were the marshalling logic was built using
        the UnionType utilities
      • See: #857
    • ๐Ÿ”‹ Feature: New --alpha flag to ฮฑ-normalize command-line output
    • ๐ŸŽ Performance improvements
      • The normalizer is now much faster
      • See: #876
  • v1.21.0 Changes

    March 07, 2019
    • ๐Ÿ‘Œ 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: