All Versions
25
Latest Version
Avg Release Cycle
32 days
Latest Release
1018 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v1.37.0 Changes
December 07, 2020- ๐ Supports version 20.0.0 of the standard
- ๐ฅ BREAKING CHANGE TO THE API: Improve error message for duplicate projection label
- This also makes the implementation more standards-compliant, by treating
๐ a duplicate label as a type error instead of a parse error - This is a breaking change since the
Project
constructor now stores a
[Text]
instead ofSet Text
- This also makes the implementation more standards-compliant, by treating
- Add
--cache
flag todhall hash
- This flag adds the hashed expression to the cache when enabled
- ๐ Deprecate
Inject
/Interpret
- You should instead use
ToDhall
/FromDhall
, respectively
- You should instead use
- ๐ Fixes and improvements to the haddocks:
- ๐ Fixes and improvements to error messages:
- ๐ Fixes and improvements to the parser:
- ๐ Fixes and improvements to the pretty printer:
-
v1.36.0 Changes
October 21, 2020- ๐ Supports version 19.0.0 of the standard
- BREAKING CHANGE TO THE API: Add
Text/replace
built-in - Implement
with
without syntactic sugar
- BREAKING CHANGE TO THE API: Add
- ๐
dhall lint
will now add a.dhall
extension to all Prelude imports- The old extension-free Prelude imports are deprecated
- Fix command-line completions for files
- ๐ Improve Template Haskell support for record constructors
- ๐ Fixes and improvements to code formatting
- ๐ Supports version 19.0.0 of the standard
-
v1.35.0 Changes
September 11, 2020- ๐ Supports version 18.0.0 of the standard
- Implement more efficient
with
desugaring - Chained
with
expressions will now be much more efficient
- Implement more efficient
- BREAKING CHANGE TO THE API: Preserve whitespace for
Lam
constructor- This change extends the
Lam
constructor to preserve whitespace around
the variable binding - The motivation for this change is to enable
dhall-docs
to support
jumping to definitions - You can replace your existing
Lam
constructors with
Dhall.Core.makeFunctionBinding
- This change extends the
- BREAKING CHANGE TO THE API: Preserve whitespace for
Field
constructors- This change extends the
Field
constructor to preserve whitespace around
the selected field - The motivation for this change is to enable
dhall-docs
to support
jumping to definitions - You can use
Dhall.Core.makeFieldSelection
and
Dhall.Core.fieldSelectionLabel
to convert between the detailed and the
simple representation of the selected field.
- This change extends the
- Add
FromDhall
instances for{Int,Word}{,8,16,32,64}
- Add
--output
option fordhall text
subcommand - Add
Dhall.Crypto.toString
- ๐ง Make the HTTP
Manager
configurable- Several import-related functions now provide an alternative variants that
๐ allows the user to supply a customManager
- You can use this to tweak HTTP request timeouts or use a different TLS
manager (e.g. one fromhttp-client-openssl
)
- Several import-related functions now provide an alternative variants that
- ๐ Fixes and improvements to code formatting
The formatter now preserves comments for record fields (both record types
and record literals) - ๐ Supports version 18.0.0 of the standard
-
v1.34.0 Changes
August 03, 2020- ๐ Supports version 17.1.0 of the standard
- ๐ฅ BREAKING CHANGE to the API: Support prefix comments on record key-value pairs
- The Dhall AST (i.e.
Expr
) now preserves some comments for record types
and record literals - The impact of this change is that you will need to add
Dhall.Syntax.makeRecordField
orDhall.Syntax.recordFieldValue
in a few
places wherever your Haskell assembles or disassembles record expressions - The motivation of this change is two-fold:
- To eventually enable
dhall-docs
support for rendering record
๐ comments as documentation - To eventually enable support for preserving record-related comments
when formatting Dhall code
- The Dhall AST (i.e.
- ๐ BUG FIX: Fix
with
expressions to permit functions on their left-hand side- This was a case of the Haskell implementation not being compliant with the
standard grammar
- This was a case of the Haskell implementation not being compliant with the
- ๐ Drop support for GHC 8.2
- Add a new
dhall rewrite-with-schemas
command- You can now simplify a Dhall expression using a schema record (e.g. a
๐ฆ./schemas.dhall
record that a package might provide) - This simplification replaces large anonymous records with an
equivalent use of a record completion when possible
- You can now simplify a Dhall expression using a schema record (e.g. a
- ๐ Add
--transitive
flag todhall {format,lint,freeze}
- This flag lets you format/lint/freeze a file and all of its transitive
dependencies that are reachable via relative file imports
- This flag lets you format/lint/freeze a file and all of its transitive
- ๐ Move
man/dhall.1
todata-files
- This ensures that Cabal will install
dhall
'sman
pages in the
correct directory
- This ensures that Cabal will install
- ๐ Performance improvements
- Standards compliance
- ๐ Fixes and improvements to haddocks
-
v1.33.1 Changes
June 23, 2020- ๐ Multi-line REPL / support
repline-0.4.0.0
dhall repl
supports a new:paste
command that lets you input a command
by pasting one or more lines
- ๐ Multi-line REPL / support
-
v1.33.0 Changes
June 18, 2020- ๐ Supports version 17.0.0 of the standard
- BREAKING CHANGE: URLs no longer support quoted path components
- BREAKING CHANGE:
Optional/{fold,build}
are no longer built-ins - Record fields now permit empty labels
- ๐ฅ BREAKING CHANGE: Fail instead of hanging when deriving
FromDhall
for recursive types- This is a breaking change as now the
expected
type returns an
Expector (Expr Src Void)
(essentially anEither
) instead of
Expr Src Void
- If you really don't want to handle the new error-related wrapper, you can
get the old behavior using a partial pattern match (which will be partial,
still an improvement over the previous behavior, which was hanging)
- This is a breaking change as now the
- Fix invalid cache entries
- The interpreter will now correct cached expressions that are incorrect
and warn you when this happens - Specifically, if there is a hash mismatch from the cached expression the
interpreter will resolve the import again and fix the cache if the
resolved import matches the expected hash
- The interpreter will now correct cached expressions that are incorrect
- Make
encodeExpression
polymorphicencodeExpression
now has a more general type, which means that you
can use it to serialise expressions without imports (i.e.
ones of typeExpr Void Void
)
- Add
--quiet
option fordhall decode
- Add
--noted
flag fordhall haskell-syntax-tree
- ๐ Performance improvements:
- ๐ Improvements to error messages
- ๐ Fixes to haddocks
- ๐ Supports version 17.0.0 of the standard
-
v1.32.0 Changes
May 08, 2020- ๐ Supports version 16.0.0 of the standard
- BREAKING CHANGE: Change the precedence of
with
and===
- The precedence change to
with
means that some old expressions that
were valid now require explicit parentheses - BREAKING CHANGE: Use RFC7049bis encoding for
Double
s - This is a breaking change because the hashes of expressions with small
Double
literals will change now - Add support for unions mixing terms and types
- For example,
< A : Bool | B : Type >
is legal now - You can now write
someRecord with a.b.c = x
to update a nested
fields
- BREAKING CHANGE: Change the precedence of
- ๐ DEPRECATION: Deprecate
Dhall.Parser.exprA
Dhall.Parser
module will eventually drop support for parsing custom
import types- This is necessary in order to fix several parsing bugs and improve
๐ parsing error messages
- ๐ BUG FIX: GHC Generics instance for
:+:
now usesunion
- This fixes a few subtle bugs in how Dhall unions are marshalled into
Haskell types, and also improves the error messages
- This fixes a few subtle bugs in how Dhall unions are marshalled into
- Formatting improvements
- Convert union alternatives to directory tree
dhall to-directory-tree
now supports unions which are automatically
unwrapped
- ๐ Fix
dhall freeze --cache
to better handle protected importsdhall freeze --cache
will now also update imports that already have
integrity checks
- Don't normalized partially saturated
{List,Natural}/fold
- The behavior now matches the standard. Previously, the Haskell
implementation was not standards-compliant because it would normalize
these partially saturated built-ins
- The behavior now matches the standard. Previously, the Haskell
- ๐ Supports version 16.0.0 of the standard
-
v1.31.1 Changes
April 01, 2020- ๐ BUG FIX: Allow whitespace after record pun entry
- The record pun feature introduced in the previous release did not
๐ correctly parse record puns with trailing whitespace, which this change
๐ fixes.
- The record pun feature introduced in the previous release did not
- 0๏ธโฃ Expose
{default,}InputNormalizer
- The previous version introduced a breaking change to the
autoWith
type
that required access to the implementation ofInputNormalizer
, which was
๐ not exported. This change fixes that.
- The previous version introduced a breaking change to the
- ๐ Build against latest dependencies
- Prefer to format using record puns when possible
dhall format
will now reformat code to use record puns when applicable
- ๐ Fixes and improvements to error messages:
- ๐ BUG FIX: Allow whitespace after record pun entry
-
v1.31.0 Changes
March 29, 2020- ๐ Supports version 15.0.0 of the standard
- Implement
with
keyword - You can now write
someRecord with a.b.c = x
to update a nested
fields - Add support for record puns
- You can now write
{ x, y }
as a shorthand for{ x = x, y = y }
- Implement
- ๐ฅ BREAKING CHANGE TO THE API: Auto-derive
Generic
/FromDhall
/ToDhall
with Template Haskell- Now the
Dhall.TH.makeHaskell*
utilities will include these derived
instances in the generated declarations - This is a breaking change since users were likely already generating these
instances separately, which will now conflict with the included instances
- Now the
- ๐ฅ BREAKING CHANGE TO THE API:
From/ToDhall
no longer takesInterpretOptions
argument- The types of the
autoWith
andinjectWith
methods have changed to
take anInputNormalizer
instead of anInterpretOptions
- Note that
InputNormalizer
is a subset ofInterpretOptions
- This is a breaking change to how derived
FromDhall
/ToDhall
instances
๐ฆ are customized to more closely match how other Haskell packages customize
derived instances (e.g.aeson
withFromJSON
/ToJSON
) - Previously you would customize the behavior globally by passing in
a top-levelInterpretOptions
record toautoWith
- Now you can customize the behavior locally on a per-instance basis
- This change enables the following change ...
- The types of the
- Add
Dhall.Deriving
module forderiving-via
helpers- Now you can take advantage of the
-XDerivingVia
language extension to
customize derivedFromDhall
/ToDhall
instances, like this: deriving (FromDhall, ToDhall) via Codec (SetSingletonConstructors Bare) Name
- Now you can take advantage of the
- ๐ฅ BREAKING CHANGE TO THE LANGUAGE: Match standard with respect to
using toMap
https://example.com using toMap customHeaders
is now a parse error
and needs to be explicitly parenthesized as
https://example.com using (toMap customHeaders)
- The language standard had always required the parentheses, but the Haskell
implementation was not correctly matching the standard
- Fix formatting of indented comments containing empty lines
dhall format
was previously not idempotent when formatting indented
comments with empty lines- Specifically, the formatter kept indenting things further with each
๐ format, which this change fixes
- ๐จ Fix pretty-printer to preserve original numeric literals
- Now
dhall format
will preserve numeric literals exactly how you wrote
them - For example,
0xFF
will no longer be reformatted as255
- Now
- ๐ Add
dhall to-directory-tree
support forMap
sMap
s are now converted to directories (just like records)
- Add manpage
- ... mainly for the benefit of people packaging Dhall for various
distributions
- ... mainly for the benefit of people packaging Dhall for various
- Group commands in CLI
- The command-line
--help
output now groups commands into useful
sections
- The command-line
- ๐ Fix numeric parsing for GHCJS
- The GHCJS backend for Dhall was failing to parse numbers, which this
๐ change fixes
- The GHCJS backend for Dhall was failing to parse numbers, which this
- ๐ Fixes and improvements to error messages:
- ๐ Fixes and improvements to the haddocks:
- ๐ Supports version 15.0.0 of the standard
-
v1.30.0 Changes
February 15, 2020- ๐ Supports version 14.0.0 of the standard
- ๐ฅ BREAKING CHANGE TO THE API: Add
--check
flag todhall {lint,freeze}
- You can now use the
--check
flag to verify that a file has already been
๐ linted or frozen - This is a breaking change to the types used by the
Dhall.Format
module
- You can now use the
- ๐ฅ BREAKING CHANGE TO THE LANGUAGE: Disallow
Natural
literals with leading zeros- Now a literal like
042
is no longer valid - See the changelog for standard version 14.0.0 for more details
- Now a literal like
- ๐ BUG FIX: Fix parsing of
Double
literal trailing whitespace- Certain expressions using
Double
literals would fail to parse, which this
๐ change fixes
- Certain expressions using
- ๐ BUG FIX: Use
DeriveLift
instead of GHC Generics to deriveLift
- This fixes a build failure on GHC 8.10
- ๐ Drop support for GHC 7.10.3
- GHC 8.0.2 is now the earliest supported version
- ๐ Add support for dotted field syntax
{ x.y.z = 1 }
now legal syntax for nested fields- See the changelog for standard version 14.0.0 for more details
- ๐ Add support for duplicate record fields
- This combines with the previous feature to let you write
{ x.y = 1, x.z = True }
, which is equivalent to
{ x = { y = 1, z = True } }
- See the changelog for standard version 14.0.0 for more details
- This combines with the previous feature to let you write
- ๐ Add
dhall lint
support for deprecatingOptional/{fold,build}
- The
Optional/{fold,build}
built-ins are deprecated and can be implemented
in terms of other language features Optional/fold
can be implemented in terms ofmerge
(which now works on
Optional
values)Optional/build
could always be implemented usingSome
/None
dhall lint
now transforms the deprecated built-ins to use their
๐ equivalent built-in-free versions
- The
- ๐ Support Template Haskell for multiple datatypes
- This extends the Template Haskell support added in the previous release to
work for datatypes that refer to one another
- This extends the Template Haskell support added in the previous release to
- ๐ Add support for custom substitutions
- You can now add custom substitutions, which are like
let
bindings that
propagate to transitive imports
- You can now add custom substitutions, which are like
- ๐ Small formatting fixes