Releases: dhall-lang/dhall-haskell
Releases · dhall-lang/dhall-haskell
dhall-1.22.0
- Supports version 7.0.0 of the standard
- BREAKING CHANGE: Remove deprecated
Path
type synonym- See: #858
- BUG FIX: Correctly parse identifiers beginning with
http
- i.e.
httpPort
was supposed to be a valid identifier name and now is - See: #870
- i.e.
- BUG FIX: Fix
dhall encode
bugdhall 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 thedhall 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
theUnionType
utilities - See: #857
- This fixes some expressions that would previously fail to marshal into
- Feature: New
--alpha
flag to α-normalize command-line output- See: #855
- Performance improvements
- The normalizer is now much faster
- See: #876
dhall-1.21.0
- Supports version 6.0.0 of the language standard
- BREAKING CHANGE: Remove the
constructors
keyword- ... as standardized in version 6.0.0 of the language standard
- The deprecation cycle is over, so the keyword is no longer supported
- For more details, see: https://github.com/dhall-lang/dhall-lang/wiki/Migration%3A-Deprecation-of-constructors-keyword
- See: #829
- BREAKING CHANGE: CBOR-encode only special
Double
s as half-floats- ... as standardized in version 6.0.0 of the language standard
- CBOR
Double
s exceptInfinity
/-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
- 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
- The interpreter was incorrectly throwing an exception if
- 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 aText
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
- Feature:
dhall freeze
now only freezes remote imports by defaultdhall 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 todhall repl
- This lets you conveniently hash expressions within the
dhall repl
- See: #806
- This lets you conveniently hash expressions within the
- Feature: Add
--check
flag todhall 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 forInputType
s- This is the union analog of
RecordInputType
, letting you build a
record explicitly instead of deriving the instance using GHC generics - See: #775
- This is the union analog of
- Feature: Add
:set
/:unset
commands todhall 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:
- See: #831
- REPL fixes:
- See: #837
dhall-1.20.1
- 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
dhall-1.20.0
- 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 aconstructors
record. dhall lint
will now remove the obsoleteconstructors
keyword for you- See: #693
- See: #701
- Now the
- BREAKING CHANGE TO THE API: Restore
Parent
constructor forLocal
type- This more closely matches the standard and also enables
dhall format
to
produce a leading../
for imports instead of./../
- See: #718
- This more closely matches the standard and also enables
- 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
- The first fix was that the inferred type was wrong for unions where
- BUG FIX: Change how
dhall repl
handles prior definitions- This changes the REPL to handle previous bindings as if they were
defined using a largelet
expression instead of adding them to the
context - This fixes some type-checking false negatives
- See: #729
- This changes the REPL to handle previous bindings as if they were
- Feature: Autocomplete for
dhall repl
- You can now auto-complete record fields, union constructors, and
identifiers that are in scope - See: #727
- You can now auto-complete record fields, union constructors, and
- 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 fordhall repl
- See: #719
- Feature: Add
--json
flag fordhall {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
- You can now preserve the
- Prenormalize substituted expressions
- This is a performance improvement that reduces the time and memory
consumption when normalizing expressions - See: #765
- This is a performance improvement that reduces the time and memory
dhall-1.19.1
dhall-1.19.1
- BUG FIX: Fix serious
dhall lint
bugdhall lint
would sometimes removelet
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
- Improve HTTP error messages
- See: #710
dhall-1.19.0
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:
Double
s are now double-precision
floating point numbers- This restricts the range of
Double
s to IEEE 754 double-precision
floating point - This also implies that you can no longer convert
Scientific
values to
Dhall
expressions (i.e. noInject
instance forScientific
) - See: #667
- This restricts the range of
- BREAKING CHANGE TO THE API: Preserve field order for record projection
- The API uses a new
Dhall.Set.Set
type instead ofData.Set.Set
- See: #670
- The API uses a new
- BREAKING CHANGE TO THE API: Add support for multi-
let
expressions- This changes the
Let
constructor to now support storing multiple
bindings perlet
expression - See: #675
- This changes the
- Access constructors as if they were fields of the union type
- In other words:
< Left : Bool | Right : Natural >.Left
- See: #657
- In other words:
- Support GHC 8.6
- See: #669
- Add support for quoted path components
- i.e.
/"foo"/bar/"baz qux"
orhttps://example.com/foo/"bar?baz"?qux
- See: #690
- i.e.
- Fix parsing of
//\\
operator- See: 9d0fd42
- Preserve Unicode characters when formatting code
- See: #679
- Allow identifier names to begin with
Some
- See: #658
- Add
subExpressions
Traversal
- See: #660
- Add
normalizeWithM
for monadic normalization- See: #371
- 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
dhall-1.18.0
- 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
andNone
are
now reserved keywords - This is a breaking change to the API because
Some
andNone
are new
constructors for theExpr
type
- Example:
- BREAKING CHANGE TO THE LANGUAGE AND API: Support for kind polymorphism
- This adds a new
Sort
constant aboveKind
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 theExpr
type
- This adds a new
- 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 oninsert-ordered-containers
- This replaces
- 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 toStandardVersion
and the --protocol-version
option is renamed to--standard-version
- See: #634
- BUG FIX: Fix import chaining for custom header imports
- See: #618
- BUG FIX: Fix import chaining for imports protected by semantic integrity
checks- See: #584
- 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- See: a22aa79
- BUG FIX: Fix parsing of IPv4-mapped IPv6 addresses
- See: #632
- FEATURE: New
--ascii
flag for ASCII output- See: #570
- FEATURE: New
dhall encode
anddhall decode
subcommands- These allow you to transform Dhall source code to and from its binary
representation - See: #588
- These allow you to transform Dhall source code to and from its binary
- LARGE parsing performance improvements
- Type-checking performance improvements:
- See: #566
- Normalization performance improvements:
- See: #610
dhall freeze
now caches the imports as it freezes them- See: #587
dhall freeze
now refreezes imports with invalid semantic integrity checks- See: #637
dhall freeze
now adds a trailing newline- See: #629
- Build against
megaparsec-7.0.*
- See: #565
- Support GHC 8.6
- Support GHC all the way back to 7.10.3
- Improvements to error messages:
dhall-1.17.0
- This release corresponds to version 2.0.0 of the language standard
- BREAKING CHANGE TO THE LANGUAGE AND API: Binary serialization support
- This is a breaking change to the hash for all semantic integrity checks
- The hash used by the semantic integrity check is now based on the
binary representation instead of a text representation of the
expression - You can pin the new hashes by supplying the
--protocol-version 1.0
option on the command line until you need support for newer language
features - This also includes a breaking change to
ImportType
in the API
- BREAKING CHANGE TO THE LANGUAGE: Disallow combining records of terms and
types- This is mainly for consistency and to improve type errors that would
have otherwise happened further downstream - This should not affect the vast majority of code
- See: #538
- This is mainly for consistency and to improve type errors that would
- BUG FIX: Semantic integrity checks now work for imported expression using
theconstructors
keyword- See: #554
- BUG FIX: Fix α-normalization of expressions with bound variables named
_
- See: #524
- BUG FIX: Fix
isNormalized
to matchnormalize
- See: #522
- BUG FIX:
dhall lint
now correctly handles nestedlet
expressions- See: #555
- FEATURE: Imports protected by a semantic integrity check are now cached
- See: #533
- The default
dhall
command no longer outputs the type tostderr
- You can add back the type as a type annotation using the
--annotate
switch - See: #544
- You can add back the type as a type annotation using the
- New utilities for building
InputTypes
- See: #530
- Improve parsing performance for long variable names
- See: #526
- More succinct type diffs for function types
- See: #540
- Identifier names can now begin with keywords
- i.e.
ifChanged
andlettuce
are now legal identifiers - See: #551
- i.e.
dhall-1.16.1
- Fix test failure due to missing test data file
dhall-1.16.0
- BREAKING CHANGE: Consolidate
input
family of functions- These now take a record of options
- This also
_stack
field of theStatus
type from[Import]
to
NonEmpty Import
- Permit
$
in quoted variable names- See: #510