Releases: dhall-lang/dhall-haskell
Releases · dhall-lang/dhall-haskell
dhall-1.23.0
- BREAKING CHANGE: Fix marshaling union literals
- 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 anif/then/else` expression in their
normal form - See: #931
- See: #938
- Version 1.22.0 introduced a new faster evaluation algorithm, but the new
- 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
- The language standard requires that
- BUG FIX:
dhall freezerespects the--asciiflag- See: #934
- BUG FIX: Don't autocomplete fields for record types
- This prevents the REPL from expanding
{ x : T }.<TAB>to{ x : T }.x - See: #937
- This prevents the REPL from expanding
- Support
MonadFail-related changes in GHC 8.8- See: #912
- Add
crossflag to simplify cross-compilation- This allows the
dhallpackage to be built without using
TemplateHaskell - See: #928
- This allows the
- 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
- Error messages now provide at least 20 lines of context instead of 3
- 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
- The bottom of every Dhall type error includes the original source code,
- Expand lower bounds on
megaparsec/transformers-compatdependencies- This is to support
dhallon Debian Sid - See: #939
- This is to support
dhall-1.22.0
- Supports version 7.0.0 of the standard
- BREAKING CHANGE: Remove deprecated
Pathtype synonym- See: #858
- BUG FIX: Correctly parse identifiers beginning with
http- i.e.
httpPortwas supposed to be a valid identifier name and now is - See: #870
- i.e.
- BUG FIX: Fix
dhall encodebugdhall encodebug 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 decodesubcommand 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
theUnionTypeutilities - See: #857
- This fixes some expressions that would previously fail to marshal into
- Feature: New
--alphaflag 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
constructorskeyword- ... 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
Doubles as half-floats- ... as standardized in version 6.0.0 of the language standard
- CBOR
Doubles exceptInfinity/-Infinity/NaN/0.0are 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
$HOMEenvironment variable is unset- The interpreter was incorrectly throwing an exception if
HOMEwas 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/showbuilt-in- ... as standardized in version 6.0.0 of the language standard
- You can now convert a
Textliteral to its equivalent Dhall source code
(which is itself aTextliteral) - This comes in handy when using Dhall code to generate JSON or Dhall code
- See: #811
- Feature: Add
--immediate-dependencies/--transitive-dependenciesflags for
dhall resolve - Feature:
dhall freezenow only freezes remote imports by defaultdhall freezeused to freeze all imports (including local imports and
environment variables)- Now
dhall freezeonly freezes remote imports by default, which is what
most users want - You can install freeze all imports using the
--allflag - See: #808
- Feature:
:saveand:loadREPL state:savewith no arguments now saves the REPL state to a.dhall-repl-N
file- The file format is a list of
dhall replcommands - You can use
:loadto load the saved state back into the REPL - See: #807
- Feature: Add
:hashcommand todhall repl- This lets you conveniently hash expressions within the
dhall repl - See: #806
- This lets you conveniently hash expressions within the
- Feature: Add
--checkflag 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
UnionInputTypebuilder forInputTypes- 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/:unsetcommands todhall repl- You can use these commands to set or unset command-line options
- Currently only setting/unsetting
--explainis 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 formatthen your multi-line literals already have the
necessary leading whitespace
- BREAKING CHANGE TO THE LANGUAGE:
constructors x = x- Now the
constructorskeyword 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
constructorsfield 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 aconstructorsrecord. dhall lintwill now remove the obsoleteconstructorskeyword for you- See: #693
- See: #701
- Now the
- BREAKING CHANGE TO THE API: Restore
Parentconstructor forLocaltype- This more closely matches the standard and also enables
dhall formatto
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 replhandles prior definitions- This changes the REPL to handle previous bindings as if they were
defined using a largeletexpression 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
dhallcan 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
:quitcommand fordhall repl- See: #719
- Feature: Add
--jsonflag 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 Textqualifier 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 lintbugdhall lintwould sometimes removeletexpressions 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:
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
Scientificvalues to
Dhallexpressions (i.e. noInjectinstance 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.Settype instead ofData.Set.Set - See: #670
- The API uses a new
- BREAKING CHANGE TO THE API: Add support for multi-
letexpressions- This changes the
Letconstructor to now support storing multiple
bindings perletexpression - 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
subExpressionsTraversal- See: #660
- Add
normalizeWithMfor 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/Noneconstructors for
Optionalvalues- Example:
[ Some 1, None Natural ] - This is a breaking change to the language because
SomeandNoneare
now reserved keywords - This is a breaking change to the API because
SomeandNoneare new
constructors for theExprtype
- Example:
- BREAKING CHANGE TO THE LANGUAGE AND API: Support for kind polymorphism
- This adds a new
Sortconstant aboveKindin the hierarchy - i.e.
Type : Kind : Sort - This is a breaking change to the language because
Sortis now a
reserved keyword - This is a breaking change to the API because
Sortis a new
constructor for theExprtype
- This adds a new
- BREAKING CHANGE TO THE API: New
Dhall.Mapmodule- This replaces
InsOrdHashMapin 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
ProtocolVersiontype is renamed toStandardVersionand the --protocol-versionoption 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 freezenow 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
--asciiflag for ASCII output- See: #570
- FEATURE: New
dhall encodeanddhall decodesubcommands- 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 freezenow caches the imports as it freezes them- See: #587
dhall freezenow refreezes imports with invalid semantic integrity checks- See: #637
dhall freezenow 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
ImportTypein 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
theconstructorskeyword- See: #554
- BUG FIX: Fix α-normalization of expressions with bound variables named
_- See: #524
- BUG FIX: Fix
isNormalizedto matchnormalize- See: #522
- BUG FIX:
dhall lintnow correctly handles nestedletexpressions- See: #555
- FEATURE: Imports protected by a semantic integrity check are now cached
- See: #533
- The default
dhallcommand no longer outputs the type tostderr- You can add back the type as a type annotation using the
--annotateswitch - 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.
ifChangedandlettuceare now legal identifiers - See: #551
- i.e.
dhall-1.16.1
- Fix test failure due to missing test data file