Releases: dhall-lang/dhall-haskell
Releases · dhall-lang/dhall-haskell
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
dhall-1.15.1
- Fix infinite loop when formatting expressions containing
?
- See: #491
dhall-1.15.0
- BREAKING CHANGE TO THE API: Support alternative imports using new
?
operator- This adds a new constructor which affects exhaustive pattern matches
- See: #473
- BREAKING CHANGE TO THE API: Add
Integer/toDouble
built-in function- This adds a new constructor which affects exhaustive pattern matches
- See: #434
- BREAKING CHANGE TO THE API: Use strict
Text
instead of lazyText
- See: #455
- BREAKING CHANGE TO THE API: Remove
Buildable
in favor ofPretty
- See: #459
- BREAKING CHANGE TO THE API: Removed the
Parent
constructor fromFilePrefix
- Instead, use
Here
with a".."
prefix. - See: #407
- Instead, use
- BUG FIX: Disallow duplicate fields in records
- See: #430
- BUG FIX: Fix stripping of leading whitespace in multi-line strings
- See: #469
- BUG FIX: Fix formatting field access of an import
- See: #471
- Add
dhall freeze
command- See: #486
- Add
dhall diff
command- See: #442
- Add
dhall lint
command- See: #484
- Change
dhall-repl
/dhall-hash
/dhall-format
todhall
subcommands - Add
with-http
cabal flag to disable support for remote imports- See: #482
- Added
inputFrom
andinputFromWith
- These allow naming the file that the expression is coming from for better
error messages - See: #464
- These allow naming the file that the expression is coming from for better
- Performance improvements
- See: #420
- Tutorial recommends GitHub for Prelude instead of IPFS
- See: #479
- Pretty-print expressions in type errors
- See: #429
- Formatting improvements
- Diff improvements
dhall-1.14.0
- BREAKING CHANGE TO THE LANGUAGE: Switch grammar of
Natural
andInteger
Natural
number literals are now unsigned andInteger
literals always
require a sign- This is a VERY disruptive change to most Dhall code in the wild but
was unanimously agreed upon here:
dhall-lang/dhall-lang#138 - See also: #381
- BREAKING CHANGE TO THE LANGUAGE: Drop support for importing directories
- Importing
dir/
used to resolve todir/@
, which is no longer supported - See: #384
- Importing
- BREAKING CHANGE TO THE LANGUAGE: Change to the grammar for imports
- File path components can no longer contain
#
or?
characters - URL imports must now contain at least one path component
- URL path components must match the grammar for file path components
- See: #390
- File path components can no longer contain
- BREAKING CHANGE TO THE API: Rename
Path{,Mode,Hashed,Type}
to
Import{,Mode,Hashed,Type}
- In practice this change is not breaking for the most common use cases
since this also provides aPath
type synonym for backwards compatibility - See: #376
- In practice this change is not breaking for the most common use cases
- BUG FIX: Fix α-equivalence bug when type-checking
merge
merge
expressions would sometimes reject valid code due to a
type-checking bug- See: #394
- Improve import caching
- Increase upper bound on
tasty
- See: #382
- Fix lower bound on
insert-ordered-containers
- See: #377
dhall-1.13.1
- Increase upper bound on
ansi-terminal
andmegaparsec
dhall-1.13.0
- BUG FIX: Fix semantic integrity hashing support
- Both parsing and pretty-printing semantic hashes were broken since version
1.11.0 - See: #345
- Both parsing and pretty-printing semantic hashes were broken since version
- BUG FIX: Allow leading whitespace in interpolated expresssions
- See: #369
- BUG FIX: Fix
deriving (Interpret)
for sum types- The types of alternatives were not correctly included in the corresponding
Dhall type - See: #348
- The types of alternatives were not correctly included in the corresponding
- BREAKING CHANGE TO LANGUAGE: Records cannot store both types and terms
- Records can also not store type-level functions (like
List
)- Records might be allowed to store type-level functions again in the
future
- Records might be allowed to store type-level functions again in the
- This fixes a potential soundness bug
- The primarily practical consequence of this change is that if you are
hosting a "package" then you will need to split terms and types from your
package into different records for your users to import - This also implies removing the
./Monoid
type-level function from the
./Prelude/package.dhall
record - See: #335
- Records can also not store type-level functions (like
- BREAKING CHANGE TO THE API: Replace
trifecta
withmegaparsec
- This change the API to use the
Parser
type frommegaparsec
- This also slightly changes the type of
exprFromText
- If you program using the type classes provided by the
parsers
library
then this is not a breaking change as that interface is preserved - See: #268
- This change the API to use the
- BREAKING CHANGE TO THE API: New
⩓
operator for merging record types- Example:
{ foo : Text } ⩓ { bar : Bool } = { foo : Text, bar : Bool }
- This is breaking because it adds a new constructor to the
Expr
type - See: #342
- Example:
- BREAKING CHANGE TO THE API: New support for projecting a subset of fields
- Example:
{ x = 1, y = 2, z = 3 }.{ x, y } = { x = 1, y = 2 }
- This is breaking because it adds a new constructor to the
Expr
type - See: #350
- Example:
- API+UX feature: New support for pretty-printing diffs of Dhall expressions
- Error messages also use this feature to simplify large type mismatches
- There is also a new
Dhall.Diff
module - See: #336
- Add
version
,resolve
,type
, andnormalize
sub-commands to interpreter- See: #352
- Support GHC 7.10.3
- See: #340
:type
command indhall-repl
now only displays the type- Before it would also display the original expression
- See: #344
- Trim dependency tree
dhall-1.12.0
- Additional changes to support GHC 8.4
- See: #331
- BREAKING CHANGE TO API: Replace dependency on
text-format
withformatting
- This replace the
Data.Text.Buildable.Buildable
instances with
Formatting.Buildable.Buildable
instances, which is why this is a
breaking change text-format
is no longer maintained and blocking GHC 8.4 support- See: #330
- This replace the
dhall-1.11.1
- Support GHC 8.4
- See: #321
- Fix α-normalization bug
- Note that this is not a type-checking bug. This only affects users who
were directly using thealphaNormalize
function from the Haskell API
becauselet
expressions were not correctly α-normalized - See: #319
- Note that this is not a type-checking bug. This only affects users who
- Slight tweak to syntax highlighting
- See: #324
- Increase upper bound on
ansi-terminal
andexceptions
dhall-1.11.0
- BREAKING CHANGE TO THE API: Fix
{Natural,Optional,List}/build
semantics to
match standard- This is a breaking change because the
OptionalLit
andListLit
constructors changed their representations to efficiently support the
standard semantics ListLit
now stores aData.Sequence.Seq
instead of a
Data.Vector.Vector
OptionalLit
now stores aMaybe
instead of aData.Vector.Vector
- See: #300
- This is a breaking change because the
- BREAKING CHANGE TO THE COMMAND LINE:
dhall
executable always formats output- Previously you had to opt into formatting using
--pretty
- Now formatting is obligatory and the
--pretty
flag is gone - See: #303
- Previously you had to opt into formatting using
- Feature: New
:save
command fordhall-repl
- Now you can save an expression to a file:
./yourFile = someExpression
- See: #309
- Now you can save an expression to a file:
- Improvement: Add new simplifications to match standard
- Improvement: Fix equivalence check to match standard
- Practically this means that more corner cases of the language correctly
type-check than before
- Practically this means that more corner cases of the language correctly
- Improvement: New
--plain
flag to disable syntax highlighting- See: #310
- Improvement: Prelude now provides an umbrella
package.dhall
import- This is primarily for convenience
- See: #298
- Improvement: Context is now normalized
- See: #302
- Replace
cryptohash
dependency withcryptonite
- See: 5d20129
- Increase upper bound on exceptions
- See: #306
- Fix type error in tutorial
- See: 5a9126b
dhall-1.10.0
- Feature: Records/unions can now have fields/alternatives that are types
- i.e.
{ foo = Text, bar = List }
is legal now - See: #273
- i.e.
- Feature: New
dhall-repl
for interactively evaluating Dhall expressions- See: #266
- Feature: Syntax highlighting
- See: #260
- Feature: BREAKING CHANGE TO THE API:
dhall-format
preserves field order- This changes the syntax tree to use an
InsOrdHashMap
instead of aMap
- This changes the syntax tree to use an
- BREAKING CHANGE TO THE API: Use Haskell's
Scientific
type- This is fixes the interpreter to correct handle really large/small numbers
- This also allows marshaling into Haskell's
Scientific
type - See: #256
- BREAKING CHANGE TO THE API: Remove
system-filepath
/system-fileio
dependencies- Now the library uses
Prelude.FilePath
- See: #248
- Now the library uses
- Feature: Labels can now begin with reserved names
- i.e.
List/map
is now a legal label - See: #255
- i.e.
- Fix: Rendered labels are now correctly escaped if they are numbers
- See: #252
- Add the instance
Interpret String
.- See: #247
- Fix: Custom contexts passed to
typeWith
are now checked- This prevents a custom context from triggering an infinite loop
- See: #259