Skip to content

@Gabriel439 Gabriel439 released this Jul 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
      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
Assets 15

@Gabriel439 Gabriel439 released this Jun 7, 2019 · 159 commits to master since this release

  • 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
Assets 13

@Gabriel439 Gabriel439 released this May 11, 2019 · 191 commits to master since this release

  • 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
Assets 13

@Gabriel439 Gabriel439 released this Apr 28, 2019 · 212 commits to master since this release

  • 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
Assets 13

@Gabriel439 Gabriel439 released this Mar 7, 2019 · 322 commits to master since this release

  • 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:
Assets 10

@Gabriel439 Gabriel439 released this Jan 6, 2019 · 372 commits to master since this release

  • BUG FIX: Fix binary encoding to use correct standard version
    • This fixes computed hashes to correctly match standard version 5.0.0
    • This is not marked as a breaking change since it is a bug fix. The
      1.20.0 release will be blacklisted on Hackage and users should upgrade
      from 1.19.* directly to 1.20.1
    • See: #771
Assets 10

@Gabriel439 Gabriel439 released this Dec 29, 2018 · 374 commits to master since this release

  • Supports version 5.0.0 of the language standard
  • BREAKING CHANGE TO THE LANGUAGE: Implement standardized support for multi-line
    literals
    • This updates the multi-line support to match the standard
    • This is a breaking change because empty lines within the multi-line
      literal now require leading whitespace whereas previously they did not
    • This is also a breaking change because now a newline is required after
      the opening '' quotes whereas previously it was not required
    • If you use dhall format then your multi-line literals already have the
      necessary leading whitespace
  • BREAKING CHANGE TO THE LANGUAGE: constructors x = x
    • Now the constructors keyword behaves like an identity function, since
      constructors can already be accessed as fields off the original union
      type.
    • This is a breaking change since any record of terms that contains a
      constructors field will now be a forbidden mixed record of types and
      terms.
    • This is also a breaking change if you annotated the type of what used to
      be a constructors record.
    • dhall lint will now remove the obsolete constructors keyword for you
    • See: #693
    • See: #701
  • BREAKING CHANGE TO THE API: Restore Parent constructor for Local type
    • This more closely matches the standard and also enables dhall format to
      produce a leading ../ for imports instead of ./../
    • See: #718
  • BUG FIX: Fix type-checking bug for unions
    • The first fix was that the inferred type was wrong for unions where
      alternatives were types or kinds
    • The second fix was that unions that mixed terms/types/kinds were not
      properly rejected
    • See: #763
  • BUG FIX: Change how dhall repl handles prior definitions
    • This changes the REPL to handle previous bindings as if they were
      defined using a large let expression instead of adding them to the
      context
    • This fixes some type-checking false negatives
    • See: #729
  • Feature: Autocomplete for dhall repl
    • You can now auto-complete record fields, union constructors, and
      identifiers that are in scope
    • See: #727
  • Feature: GHCJS support
    • dhall can now be built using GHCJS, although some features are still
      not supported for GHCJS, such as:
      • Semantic integrity checks
      • Custom HTTP headers
    • Also, HTTP imports only work for URLs that support CORS
    • See: #739
  • Feature: Add support for records of records of types
    • You can now nest records of types
    • See: #700
  • Feature: Add :quit command for dhall repl
  • Feature: Add --json flag for dhall {encode,decode}
    • You can now produce/consume CBOR expressions via JSON instead of binary
    • See: #717
  • Feature: Add decoding logic for as Text
    • You can now preserve the as Text qualifier on imports when serializing
      them
    • See: #712
  • Prenormalize substituted expressions
    • This is a performance improvement that reduces the time and memory
      consumption when normalizing expressions
    • See: #765
Assets 10

@Gabriel439 Gabriel439 released this Nov 27, 2018 · 420 commits to master since this release

dhall-1.19.1

  • BUG FIX: Fix serious dhall lint bug
    • dhall lint would sometimes remove let expressions that were still
      in use
    • See: #703
  • BUG FIX: Fix import caching efficiency bug
    • Some imports were being wastefully fetched multiple times
    • See: #702
  • Feature: Generate dot graph to visualize import graph
    • Use the dhall resolve --dot command
    • See: #698
    • See: #713
  • Improve HTTP error messages
Assets 10

@Gabriel439 Gabriel439 released this Nov 22, 2018 · 430 commits to master since this release

dhall-1.19.0

  • Supports version 4.0.0 of the language standard
  • BREAKING CHANGE TO THE LANGUAGE AND API: Prevent Hurkens' paradox
    • This fixes a type-checking soundness bug which permitted infinite loops
    • This is a breaking change because infinite loops are no longer possible
    • This is also a breaking change because a record of types is now treated as
      a kind instead of a type
    • See: #680
  • BREAKING CHANGE TO THE LANGUAGE AND API: Doubles are now double-precision
    floating point numbers
    • This restricts the range of Doubles to IEEE 754 double-precision
      floating point
    • This also implies that you can no longer convert Scientific values to
      Dhall expressions (i.e. no Inject instance for Scientific)
    • See: #667
  • BREAKING CHANGE TO THE API: Preserve field order for record projection
    • The API uses a new Dhall.Set.Set type instead of Data.Set.Set
    • See: #670
  • BREAKING CHANGE TO THE API: Add support for multi-let expressions
    • This changes the Let constructor to now support storing multiple
      bindings per let expression
    • See: #675
  • Access constructors as if they were fields of the union type
    • In other words: < Left : Bool | Right : Natural >.Left
    • See: #657
  • Support GHC 8.6
  • Add support for quoted path components
    • i.e. /"foo"/bar/"baz qux" or https://example.com/foo/"bar?baz"?qux
    • See: #690
  • Fix parsing of //\\ operator
  • Preserve Unicode characters when formatting code
  • Allow identifier names to begin with Some
  • Add subExpressions Traversal
  • Add normalizeWithM for monadic normalization
  • Custom normalizers now take precedence over default normalization logic
    • This allows one to override the implementation of built-in operators
    • See: #684

dhall-json-1.2.5

Assets 10

@Gabriel439 Gabriel439 released this Oct 16, 2018 · 455 commits to master since this release

  • Supports version 3.0.0 of the language standard:
  • BREAKING CHANGE TO THE LANGUAGE AND API: New Some/None constructors for
    Optional values
    • Example: [ Some 1, None Natural ]
    • This is a breaking change to the language because Some and None are
      now reserved keywords
    • This is a breaking change to the API because Some and None are new
      constructors for the Expr type
  • BREAKING CHANGE TO THE LANGUAGE AND API: Support for kind polymorphism
    • This adds a new Sort constant above Kind in the hierarchy
    • i.e. Type : Kind : Sort
    • This is a breaking change to the language because Sort is now a
      reserved keyword
    • This is a breaking change to the API because Sort is a new
      constructor for the Expr type
  • BREAKING CHANGE TO THE API: New Dhall.Map module
    • This replaces InsOrdHashMap in the API
    • The primary motivation is to improve performance and to remove the
      dependency on insert-ordered-containers
  • BREAKING CHANGE TO THE API: Use standard version instead of protocol version
    • The binary protocol is now versioned alongside the standard
    • The ProtocolVersion type is renamed to StandardVersion and the
    • --protocol-version option is renamed to --standard-version
    • See: #634
  • BUG FIX: Fix import chaining for custom header imports
  • BUG FIX: Fix import chaining for imports protected by semantic integrity
    checks
  • BUG FIX: Record literals and types produced by // are now sorted
    • This ensures that β-normalization is idempotent
    • See: #572
  • BUG FIX: dhall freeze now correctly handles the starting file being
    located outside the current working directory
  • BUG FIX: Fix parsing of IPv4-mapped IPv6 addresses
  • FEATURE: New --ascii flag for ASCII output
  • FEATURE: New dhall encode and dhall decode subcommands
    • These allow you to transform Dhall source code to and from its binary
      representation
    • See: #588
  • LARGE parsing performance improvements
  • Type-checking performance improvements:
  • Normalization performance improvements:
  • dhall freeze now caches the imports as it freezes them
  • dhall freeze now refreezes imports with invalid semantic integrity checks
  • dhall freeze now adds a trailing newline
  • Build against megaparsec-7.0.*
  • Support GHC 8.6
  • Support GHC all the way back to 7.10.3
  • Improvements to error messages:
Assets 4
You can’t perform that action at this time.