Releases: dhall-lang/dhall-haskell
Releases · dhall-lang/dhall-haskell
v1.42.1
- Add several new entrypoints to
Dhall
module [#2534] / [#2544] - Build against latest versions of:
ansi-terminal
optparse-applicative
optparse-generic
lens
template-haskell
[#2532] / [#2542]unix-compat
1.42.0
- Supports standard version 23.0.0
- BREAKING CHANGE TO THE API AND LANGUAGE: Language support for
Bytes
literals- This is a breaking change to the API due to adding new
Bytes
andBytesLiteral
constructors to theExpr
type - This is a breaking change to the language now that
Bytes
is a reserved identifier
- This is a breaking change to the API due to adding new
- BREAKING CHANGE TO THE API AND LANGUAGE: New
{Date,Time,TimeZone}/show
builtins- This is a breaking change to the API due to adding new
{Date,Time,TimeZone}Show
constructors to theExpr
type - This is a breaking change to the language now that
{Date,Time,TimeZone}/show
are not reserved identifiers
- This is a breaking change to the API due to adding new
- BREAKING CHANGE TO THE API AND LANGUAGE: Language support for
- BREAKING CHANGE:
dhall lint
no longer sortslet
bindings- This had to be removed because the old behavior was not always correct
- The old behavior would sometimes change the behavior of a Dhall program or break the program
- Out of an abundance of caution we're disabling the feature until it can be properly fixed (which is't trivial)
- BUG FIX: Fix pretty-printing of
Time
literals- The pretty-printer was stripping leading zeros from the fractional component
of seconds
- The pretty-printer was stripping leading zeros from the fractional component
- BUG FIX: Fix custom normalizers to work for things other than functions
- Before this change you could extend the language with custom functions, but
not custom values (e.g.foo = 1
)
- Before this change you could extend the language with custom functions, but
- BUG FIX: Don't URL encode path components
- The pretty-printer was URL-encoding path components, which is not correct (according to the standard)
- URL path components are supposed to be already URL-encoded by the user and left undisturbed by the interpreter (which is now what it correctly does)
- New
dhall package
command: #2478, #2508- This command makes it easier to turn a directory full of Dhall expressions
into a dhall package (e.g.package.dhall
)
- This command makes it easier to turn a directory full of Dhall expressions
- Improved
dhall to-directory-tree
subcommand- The
dhall to-directory-tree
subcommand now optionally supports specifying
metadata for generated paths - For a worked example, see: https://github.com/dhall-lang/dhall-haskell/blob/main/dhall/examples/to-directory-tree.dhall
- The
dhall freeze --cache --all
is now idempotent: #2486, #2500- Before this change a second run would fail due to attempting to resolve
themissing
import it would generate
- Before this change a second run would fail due to attempting to resolve
- New Template Haskell options for adding strictness annotations to generated Haskell types
- Template Haskell can now generate higher-kinded Haskell types from higher-kinded Dhall types
- New
Dhall.Freeze
utilities for working with custom evaluators - Add
Data
instances forImport
and various other types - Add
Eq
instances forInvalidDecoder
andExtractError
1.41.2
- BUG FIX: Fix
:hash
REPL command to α-normalize input - Add
{From,To}Dhall
instances forDayOfWeek
- Add
{From,To}Dhall
instances forShortText
- Performance improvements
- Fixes and improvements to haddocks
- Fixes and improvements to test suite
- Build against newer dependencies
1.41.1
1.41.0
- Support standard version 22.0.0
- BUG FIX: Fix pretty-printing of time zones
- Timezones with a negative offset were previously being rendered with two
leading minus signs instead of one
- Timezones with a negative offset were previously being rendered with two
- BUG FIX:
dhall freeze --cache
to work with standard version 21.0.0dhall freeze
will now usemissing sha256:…
for the first import so that
the latter import will be tried if the import is not in cache- The old behavior is incompatible with standard version 21.0.0 because the
new behavior of the?
operator doesn't fall back on hash mismatches
- BUG FIX: Allow
with
expression to update a field namedSome
- This fixes a discrepancy between the Haskell implementation and the standard
where the Haskell implementation would not permit
{ Some = 0 } with Some = 1
- This fixes a discrepancy between the Haskell implementation and the standard
- Fix
dhall {format,lint,freeze}
to preserve leading shebangs - Add
FromDhall
instances forInt{8,16,32,64}
1.40.2
- Supports standard version 21.1.0
- BUG FIX:
dhall repl
no longer ignores type annotations on:let
commands- Before this fix,
:let x : T = 3
would ignore the: T
type annotation
- Before this fix,
- BUG FIX: Don't accept a bar after an empty union
- Before this fix, the interpreter would accept something like
<>|
, which
is not valid according to the standard grammar
- Before this fix, the interpreter would accept something like
- New
FromDhall
/ToDhall
instances forDay
/TimeOfDay
/TimeZone
#2294 #2300- These types correspond to the recent temporal literals added to the
language
- These types correspond to the recent temporal literals added to the
- New
subExpressionsWith
Traversal
- Add Template Haskell support for modifying field names in generated Haskell
types- This adds a new
makeHaskellTypesWith
utility with takes a
GenerateOptions
function argument for customizing the code-generation
logic - This comes in handy when Dhall fields have names are reserved keywords in
Haskell code. You can now transform the Haskell field names to avoid
collisions
- This adds a new
- Support GHC 9.2
- Fixes and improvements to documentation
- Fixes and improvements to error messages
1.40.1
- BUG FIX: Fix equivalence check for
Date
/Time
/TimeZone
- This fixes a serious bug in the recently introduced support for temporal
literals where they would fail to type-check when given a correct type
annotation or when they were checked against an existing type - For example,
00:00:00 : Time
was failing to type-check
- This fixes a serious bug in the recently introduced support for temporal
1.40.0
- Almost supports version 20.2.0 of the standard
- The main thing that is missing is support for the
headers.dhall
file - BREAKING CHANGE TO THE LANGUAGE: Add support for
Date
/Time
/TimeZone
- This is a breaking change because
Date
,Time
, andTimeZone
are
now reserved identifiers
- This is a breaking change because
- Improved fallback behavior for
?
- The main thing that is missing is support for the
- BREAKING CHANGE TO THE LANGUAGE: Require whitespace before
with
- The parser now requires whitespace before the
with
keyword, which brings
the Haskell implementation into closer compliance with the standard - In practice this is a technically breaking change which will not affect
most programs
- The parser now requires whitespace before the
- New
FromDhall
instances forPredicate
,Equivalence
, andOp
dhall lint
will now sortlet
bindings with importsdhall lint
now reorderslet
bindings to move imports to the top so
long as doing so does not change the behavior of the program
- Fixes and improvements to code formatting
- Fixes and improvements to error messages
1.39.0
- Supports version 20.2.0 of the standard
- BREAKING CHANGE TO THE API:
dhall {format,freeze,lint}
now accept multiple
files- The
--inplace
flag is no longer necessary and you can now specify
multiple files to update in place on the command line, like
dhall format foo.dhall bar.dhall
- The
--inplace
flag is still accepted, but does nothing, and will emit a
warning - This is a breaking change to the API for formatting/freezing/linting files
because now you can specify multiple inputs instead of one input
- The
- BREAKING CHANGE: Pre-6.0.0 hashes are no longer supported
- The interpreter no longer provides backwards compatibility for integrity
checks computed before standard version 6.0.0 - This is a breaking change to the API of the
Dhall.Binary
module, where
certain utilities are no longer parameterized on aStandardVersion
- This is also a breaking change to any Dhall code that depended on these
really old integrity checks
- The interpreter no longer provides backwards compatibility for integrity
- BUG FIX: Formatting
≡
now correctly preserves the original character set - BUG FIX: Don't panic on
Text/replace ""
- Quasiquotation support for Dhall
- You can now convert a Dhall expression to the corresponding syntax tree
using a quasiquoter like this:[dhall| \x -> x + 2 ]
- You can now convert a Dhall expression to the corresponding syntax tree
- New
Dhall.Marshal.{Encode,Decode}
modules- These modules split up the
Dhall
module into two smaller modules for
encoding and decoding logic, respectively - The
Dhall
module still re-exports the same functionality as before, so
this is not a breaking change
- These modules split up the
- Support GHC 9.0.1
- Fixes and improvements to code formatting
1.38.1
- Add
INLINABLE
annotations in more places- This may improve performance by enabling more specializations
- Fix
hashable
-related test failures - Fix support for GHC 8.4.4
- … by using
GeneralizedNewtypeDeriving
(with az
)
- … by using
- Allow doctest-0.18
- Allow bytestring-0.11