All Versions
25
Latest Version
Avg Release Cycle
32 days
Latest Release
1567 days ago
Changelog History
Page 2
Changelog History
Page 2
-
v1.29.0 Changes
January 13, 2020- ๐ Supports version 13.0.0 of the standard
- ๐ฅ BREAKING CHANGE: Generate Haskell datatype declarations from Dhall types
- You can now use the
makeHaskellTypeFromUnion
Template Haskell utility
to generate a Haskell datatype declaration from a Dhall union type - This helps ensure that your Haskell types and Dhall types stay in sync,
when you want the Dhall type to be the source of truth - This is a breaking change because the default
InterpretOptions
changed
0๏ธโฃ the default handling of singleton constructors fromWrapped
toSmart
- You can preserve the old behavior using:
0๏ธโฃautoWith defaultInterpretOptions{ singletonConstructors = Wrapped }
- You can now use the
- ๐ BUG FIX: Fix
dhall freeze --cache
anddhall lint
to preservelet
-related comments- Now they match the behavior of
dhall format
with regard to preserving
these comments
- Now they match the behavior of
- ๐ BUG FIX: Fix escaping of significant leading whitespace when formatting code
- The formatter would sometimes unnecessarily escape significant leading
whitespace for the final line of multiline string literals, which this
๐ change fixes
- The formatter would sometimes unnecessarily escape significant leading
- ๐ BUG FIX: Fix
dhall encode --json
forDouble
values - ๐ NEW FEATURE:
dhall to-directory-tree
command- You can now generate a directory tree from a Dhall expression
- Specifically:
- records are converted to directories
Text
fields are converted to files named after the fieldOptional
values are omitted ifNone
- Everything else is rejected
- ๐ NEW FEATURE: Hexadecimal literals
- See the changelog for standard version 13.0.0 for more details
- ๐ NEW FEATURE:
merge
works onOptional
values- See the changelog for standard version 13.0.0 for more details
- Improve formatter
dhall format
will now render expressions nested inside record fields or
alternatives more compactly, including:- Records
- Record completion expressions
- Expressions wrapped in
Some
- Lists
- Exclude the
using ...
suffix from imports listed bydhall resolve
- Specifically when using the
--{immediate,transitive}-dependencies
flags
- Specifically when using the
-
v1.28.0 Changes
December 06, 2019- ๐ Supports version 12.0.0 of the standard
- ๐ฅ BREAKING CHANGE: Add
Integer/{clamp,negate}
built-ins- This is a technically breaking change API since this adds a new
constructor to theExpr
type - This is also a technically breaking change to the language. See the changelog for standard version 12.0.0 for more details
- This is a technically breaking change API since this adds a new
- ๐ฅ BREAKING CHANGE: Remove support for fusion
- This is also a technically breaking change to the language. See the changelog for standard version 12.0.0 for more details
- ๐ฅ BREAKING CHANGE: Parse whitespace more precisely
- The Haskell implementation now matches the official grammar much more
closely, but as a result will now reject some programs that it used to
accept - For example,
1:Natural
used to be valid and now is no longer valid as
the standard requires mandatory whitespace after the:
- Consult the standard grammar if you run into a new parsing error as a result of this change
- This is also a parsing performance regression (specifically for parsing
๐ comments), but should not be noticeable in practice. See #1512 for more details
- The Haskell implementation now matches the official grammar much more
- ๐ฅ BREAKING CHANGE: Rename
Type
toDecoder
andInputType
toEncoder
#1483 / #1489 - ๐ BUG FIX: Fix
dhall format --check
- Before this change
dhall format --check
would fail due to attempting to
read all of standard input in twice
- Before this change
- ๐ BUG FIX: Fix
dhall freeze
to always re-freeze an import- Before this fix,
dhall freeze
would not attempt to refreeze an already
frozen import
- Before this fix,
- Permit spaces around completion operator
- See the changelog for standard version 12.0.0 for more details
- Make
missing
referentially transparentmissing
can now be imported transitively via a remote import- Normally resolving
missing
would still still fail, except for
missing as Location
, which is now a valid transitive import - See the changelog for standard version 12.0.0 for more details
- Write cache files atomically
- This is a resilience improvement so that the cache is not left in a
corrupt state in the event of a power outage or exhausting disk/memory
- This is a resilience improvement so that the cache is not left in a
- New
Dhall.function
utility- This is provides the same functionality as the
Interpret
instance for
(->)
, except without the use of typeclasses
- This is provides the same functionality as the
- New
dhall haskell-syntax-tree
command- This command displays the Haskell syntax tree of an expression
(primarily for debugging purposes) - Note that this is highly-volatile and subject to change, so don't depend
on this programmatically. We may break the output of this command without
any notice.
- This command displays the Haskell syntax tree of an expression
- Add
instance Show Ann
- ๐ Move normalization code from
Dhall.Core
toDhall.Normalize
- Note that this is not a breaking change. The relocated utilities are
still re-exported fromDhall.Core
- Note that this is not a breaking change. The relocated utilities are
- Fix
dhall resolve --transitive-dependencies
to list dependencies in "post-order" - ๐ Performance improvements
- ๐ Fixes and improvements to code formatting
- ๐ Fixes and improvements to code linting
- ๐ Fixes and improvements to error messages
- ๐ Fixes and improvements to the parser
- ๐ Fixes and improvements to diffs
- ๐ Fixes and improvements to the REPL
- ๐ Fixes and improvements to documentation
-
v1.27.0 Changes
October 20, 2019- ๐ Supports version 11.0.0 of the standard
- ๐ฅ BREAKING CHANGE: Rename
Inject
/Interpret
toToDhall
/FromDhall
- This change
ConstraintKinds
to minimize disruption by keeping around
Inject
/Interpret
as synonyms forToDhall
/FromDhall
- In other words, constraints and derived instances using
Inject
or
Interpret
will still work - However, manual instances using
Inject
orInterpret
won't work
unless you rename them toToDhall
/FromDhall
or enable the
TypeSynonymInstances
extension
- This change
- ๐ฅ BREAKING CHANGE: Fix
Eq
instance forExpr
s with specialDouble
s- This fixes the
Eq
instance forExpr
s to match the standard regarding
Double
comparisons - Specifically:
NaN == NaN
and-0.0 /= 0.0
- This is a breaking change because the
DoubleLit
constructor ofExpr
now stores aDhallDouble
instead of aDouble
- This fixes the
- ๐ฅ BREAKING CHANGE: Add
--file
option fordhall hash
- This is a breaking change because it also removes the
Dhall.Hash
module,
which wasn't really carrying its own weight
- This is a breaking change because it also removes the
- ๐ Add support for leading separators
- See the changelog for standard version 11.0.0 for more details
- Add record completion operator
- See the changelog for standard version 11.0.0 for more details
- Add
dhall tags
subcommand- This generates an ETags file from an input file or directory
- ๐ Add
dhall lint
support for fixing malformed assertionsdhall lint
now fixeslet example = foo === bar
to be
let example = assert : foo === bar
- Normalize inferred types #1337
- ๐ New
FromDhall
/ToDhall
(previouslyInterpret
/Inject
) instances for: - Add
--output
option todhall
- ๐ Move syntax things from
Dhall.Core
to a newDhall.Syntax
module- This is not a breaking change.
Dhall.Core
still re-exports the same
API as before
- This is not a breaking change.
- ๐ Performance improvements
- ๐ Fixes and improvements to code formatting
-
v1.26.1 Changes
September 25, 2019- TECHNICALLY BREAKING CHANGES: Simplify
โซฝ
within projection / Simplify nested record projections- These are technically breaking changes because you will need to update
integrity checks that protect code simplified in this way - We're not bumping the major version since the likelihood that you're
affected is quite low
- These are technically breaking changes because you will need to update
- ๐ BUG FIX: Fix performance regression
- This change fixes the performance regression introduced in the previous
๐ release (version 1.26.0)
- This change fixes the performance regression introduced in the previous
- ๐ BUG FIX: Prevent REPL from inserting inferred
Sort
s into context- This protects the REPL from getting hosed if you define an expression
using:let
that has an inferred type ofSort
- This protects the REPL from getting hosed if you define an expression
- ๐ NEW FEATURE: Improved
Inject
/Interpret
support for 1-field constructors - (#1315 / #1321)- This adds a new
singletonConstructors
field toInterpretOptions
that
lets you control what Dhall type 1-field Haskell constructors correspond
to - The default (
Wrapped
) is backwards compatible with the old behavior - The
Smart
option is probably what you want: it will strip the
Haskell constructor from the Dhall type if the constructor has one
anonymous field - The
Bare
option always strips 1-field Haskell constructors from the
Dhall type
- This adds a new
- ๐ NEW FEATURE:
--censor
flag that disables source code display (#1312 / #1329)- Use this flag when you don't want sensitive
Text
literals showing up in
๐ parsing or type-checking error messages
- Use this flag when you don't want sensitive
- Format record fields more compactly if they fit on 1 line
- The formatter will now format record fields on a field-by-field basis to
avoid unnecessary vertical sprawl of formatted records - Specifically, record fields that fit on one line will now be formatted
on one line
- The formatter will now format record fields on a field-by-field basis to
- Add
--quiet
option todhall type
- This lets you use
dhall type
in "check only" mode (e.g. for CI for
for development feedback)
- This lets you use
- ๐ Improved GHCJS support - (#1311 / #1330)
- Fix all executables to accept
--version
- Note that the
dhall version
subcommand is still supported, too
- Note that the
- New
Dhall.Version
module - Don't normalize inferred types
- This fixes
dhall type
to more accurately follow the standard
- This fixes
- ๐ Initial changes for GHC 8.8 support
- Fix Haddock formatting for
dhallFromJSON
- TECHNICALLY BREAKING CHANGES: Simplify
-
v1.26.0 Changes
September 12, 2019- ๐ Supports version 10.0.0 of the standard
- ๐ฅ BREAKING CHANGE TO THE LANGUAGE: Remove old union literal syntax
- Union literals of the form
< x = e | ... >
are no longer valid - For more details, see: Migration: Deprecation of old union literal syntax
- Also see the changelog for standard version 10.0.0 for more details
- Union literals of the form
- ๐ฅ BREAKING CHANGE TO THE API: Change
X
to be a type synonym forData.Void
- This is a breaking change if you were previously pattern matching on the
X
constructor. You can replace that with the use ofData.Void.absurd
- This is a breaking change if you were previously pattern matching on the
- ๐ฅ BREAKING CHANGE TO THE API: Treat multi-
let
s as syntactic sugar- This is a breaking change because the
Let
constructor now only stores
oneBinding
instead of aNonEmpty
list ofBinding
s
- This is a breaking change because the
- ๐ PERFORMANCE REGRESSION & TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: Dependent types
- You can now write functions from terms to types
- There is also now language support for tests of the form
assert : x === y
- This deteriorates the performance of large multi-
let
expressions
๐ (See: #1306) - Splitting large multi-
let
expressions into smaller files may mitigate
the problem as a work-around for now - Follow #1129
๐ for work to fix this performance regression - This is also a technically breaking change because
assert
is now a
reserved keyword - See the changelog for standard version 10.0.0 for more details
- TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: Add
Natural/subtract
built-in- The language now supports machine subtraction, which can be used to
๐ support several other high-performance operations (likeNatural
comparisons) - This is a technically breaking change if you used
Natural/subtract
as an
identifier in your code - See the changelog for standard version 10.0.0 for more details
- The language now supports machine subtraction, which can be used to
- TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: More simplifications for field selection
- Now the interpreter will more intelligently simplify certain field
projections - For example:
ฮป(x : { a : Bool, b : Bool }) โ (x โซฝ { c = 0 }).{ a, c }.c
will now simplify toฮป(x : { a : Bool, b : Bool }) โ 0
- This is a technically breaking change because you will need to update
integrity checks that protect code simplified in this way - See the changelog for standard version 10.0.0 for more details
- Now the interpreter will more intelligently simplify certain field
- TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: Simplify
โซฝ
when its arguments are equivalent- This is a technically breaking change for the same reason: this will
perturb semantic integrity checks for affected code - See the changelog for standard version 10.0.0 for more details
- This is a technically breaking change for the same reason: this will
- ๐ NEW FEATURE: Restore support for records containing both types and terms
- In other words
{ foo = 1, bar = Bool }
is now valid again - This means that you now can export a single package containing both types
and terms - See the changelog for standard version 10.0.0 for more details
- In other words
dhall format
now preserveslet
commentsdhall
format will now preserve comments in the following locations of
alet
binding:let {- HERE -} x {- HERE -} : {- HERE -} Bool = {- HERE -} True in x
- This support handles both single-line and multi-line comments and also
takes care of correctly indenting/dedenting them - Note that comments before the
let
keyword are still not preserved
(unless it is the beginning of the file)
- ๐ Add API support for marshalling recursive types
- You can now marshal recursive types from Dhall into Haskell using the
๐ newly-added utilities - See also: #1298
- You can now marshal recursive types from Dhall into Haskell using the
- New
:help
command fordhall repl
- New
--no-cache
flag- You can now disable use of the cache with this flag
- This comes in handy if you want to disable ฮฑ-normalization for imports
protected by a semantic integrity check
- ๐ Bug fixes
- ๐ Performance optimizations
- ๐ Improvements to error messages
- ๐ Improvements to formatting
- ๐ Improvements to diffs
- ๐ Improvements to documentation
- ๐ Improvements to command-line interface
-
v1.25.0 Changes
July 29, 2019- ๐ Supports version 9.0.0 of the standard
- ๐ฅ BREAKING CHANGE: Remove support for old-style
List
-likeOptional
literals- List-like
Optional
Literals (i.e.[1] : Optional Natural
) are no
longer valid - See: #1002
- List-like
- ๐ฅ BREAKING CHANGE: Add support for semi-semantic caching
- This change significantly improves the performance of imports
- This change also automatically caches imports without an integrity check
- This changes several types in
Dhall.Import
to support this new
๐ feature - See: #1113
- ๐ฅ BREAKING CHANGE: Implement new Unicode braced escape sequence
- ๐ฅ BREAKING CHANGE: Make the type of extract richer:
Dhall.extract
can now return a detailed error instead of just aMaybe
- This is a breaking chnage because the type of
extract
changed - See: #1011
- ๐ฅ BREAKING CHANGE: Add support for importing expressions
as Location
- This is a breaking change because a new
Location
constructor was added
toImportMode
- See: #1019
- This is a breaking change because a new
- ๐ฅ BREAKING CHANGE: Switch
Var
to use anInt
- This is a performance improvement, but also a breaking change since the
Integer
in theVar
constructor was changed to anInt
- See: #1044
- This is a performance improvement, but also a breaking change since the
- ๐ฅ BREAKING CHANGE: Add new
toMap
keyword- This is a breaking change to the API because a new
ToMap
constructor
was added to theExpr
type - This is also a technically breaking change to the language because
toMap
is now a reserved keyword, although most code should be unaffected in
practice - See: #1041
- This is a breaking change to the API because a new
- ๐ฅ BREAKING CHANGE: Sort the fields of a record projection during normalization
- This is a technically breaking change to the language because any
expressions with an uninterpreted record projection will have a different
semantic integrity check. However, most could should be unaffected in
practice - See: #1111
- This is a technically breaking change to the language because any
- ๐ BUG FIX: Fix substitution into record projection by type
- An expression like this one was being incorrectly rejected:
let e = { a = 10, b = "Text" } let s = { a : Natural } in e.(s)
, which
๐ this change fixes - See: #1012
- An expression like this one was being incorrectly rejected:
- ๐ BUG FIX: Reject record projection when there is a field type mismatch
- Record projection by type was previously not checking the expected
๐ field types, which this change fixes - See: #1027
- Record projection by type was previously not checking the expected
- ๐ BUG FIX: Fix linting of unused let bindings
- Certain let bindings were not correctly detected as unused, which this
๐ change fixes - See: #1001
- Certain let bindings were not correctly detected as unused, which this
- ๐ BUG FIX: Fix
--file
option- The
--file
option from the previous release did not work, due to not
๐ computing relative paths correctly, which this change fixes - See: #1004
- The
- ๐ BUG FIX: Minor fix to
dhall diff
dhall diff
was incorrectly displaying spurious differences for
๐ identical lists that were function arguments, which this change fixes- See: #1006
- ๐ BUG FIX: Allow
Sort
as type annotation- This should have been implemented in the previous release as part of
๐ supporting version 8.0.0 of the standard, but was missed - See: #1024
- This should have been implemented in the previous release as part of
- ๐ BUG FIX:
Dhall.Map
: Reflect original key ordering inOrd
instanceDhall.Map
now considers key order when comparingMap
s, which it should
have done before, but didn't- See: #1050
- ๐ BUG FIX: Consistently format multi-line strings
- The formatter now formats naked multi-line strings the same as nested
multi-line strings - Specifically, naked multi-line strings can now be formatted on a single
(just like nested multi-line strings) - See: #1056
- The formatter now formats naked multi-line strings the same as nested
- ๐ BUG FIX: Make
isNormalized
consistent withnormalize
- See: #1115
- ๐ BUG FIX: Make
normalizeWithM
consistent withnormalize
- See: #1126
- ๐ BUG FIX: Fix import alternatives to recover from type errors
- See: #1152
- ๐ Feature: Semi-semantic caching
- The Haskell implementation now implicitly caches all local imports, not
just imports frozen by integrity checks, so that you don't have to freeze
them when doing local development - These cached imports are still correctly invalidated if they or any of
their dependencies change - This new implicit cache is stored underneath
~/.cache/dhall-haskell
by
0๏ธโฃ default - See: #1154
- The Haskell implementation now implicitly caches all local imports, not
- ๐ Feature: New
dhall text
subcommand- This new subcommand supersedes the old
dhall-to-text
executable
- This new subcommand supersedes the old
- ๐ Feature: Add
instance Lift (Expr s a)
- See: #1119
- ๐ Fixes and improvements to error messages:
- ๐ Fixes and improvements to tests:
- ๐ Performance improvements
-
v1.24.0 Changes
June 07, 2019- ๐ Supports version 8.0.0 of the standard
- ๐ฅ BREAKING CHANGE: Allow tabs and blank lines in multi-line strings
- Blank lines are now ignored for the purpose of dedenting multiline strings
- Lines with leading tabs (or mixed tabs and spaces) are now dedented, too,
so long as they all share the same prefix - This is technically a breaking change, but unlikely to affect programs
in practice, especially if they were formatted withdhall format
. This
๐ change mainly affects programs that were not indented correctly. - See the changelog for standard version 8.0.0 for more details
- ๐ฅ BREAKING CHANGE: Simplify bare interpolations
- Expressions like
ฮป(x : Text) โ "${x}"
now simplify toฮป(x : Text) โ x
- This is a technically breaking change because it changes how these sorts
of expressions are serialized. This does not affect semantic integrity
checks and the new simplified expressions are extensionally equivalent to
their older counterpart expressions. - See the changelog for standard version 8.0.0 for more details
- Expressions like
- ๐ฅ BREAKING CHANGE: Encode integrity check as multihash
- Semantic integrity checks are now encoded using the multihash spec
- This is a technically breaking change that does not perturb the hash for
๐ user-facing semantic integrity checks. This only affects how expressions
with unresolved imports are serialized, but semantic integrity checks are
only computed for fully-resolved imports. - See the changelog for standard version 8.0.0 for more details
- ๐ BUG FIX: Fix type-checker to reject invalid record type annotations
- e.g.
{ x = 1 } : { x : Text }
was not properly rejected by the type
checker - See: #965
- e.g.
- ๐ BUG FIX: Custom header forwarding fixed
- Forwarding custom headers could previously fail in various ways, such as:
- Cyclic imports leading to endless network requests
- Resolving a non-existent import for the custom headers
- Resolving an existing but incorrect import for the custom headers
- This change fixes that by forwarding custom headers by value instead of
by reference - See: #967
- ๐ BUG FIX: Fix GHCJS support
Natural/fold
was broken in version 1.22, which this change fixes- Specifically, it would hang for
Natural
numbers greater than 1 - See: #985
- ๐ BUG FIX:
dhall diff
no longer double-prints key-value separators- See: #952
- ๐ Feature: Record projection by expression
- You can now project out a subset of record fields by the expected type
let t = { x : Natural } let p = { x = 1, y = 2 } in p.(t) = { x = 1 }
- See the changelog for standard version 8.0.0 for more details
- ๐ Feature: Inline headers
- You no longer need to specify custom headers in a separate import. You
can now specify them inline within the same file. - e.g.:
https://example.com/x using [{ header = "Foo", value = "Bar" }]
- See the changelog for standard version 8.0.0 for more details
- You no longer need to specify custom headers in a separate import. You
- ๐ Feature: Allow
Sort
as a type annotation- An expression such as
Kind โ Kind : Sort
will now type-check Sort
is still disallowed outside of a type annotation- See the changelog for standard version 8.0.0 for more details
- An expression such as
- ๐ Feature: Allow self-describe-cbor when decoding
- Dhall expressions serialized as CBOR can be tagged to describe themselves
as CBOR without affecting decoding - See the changelog for standard version 8.0.0 for more details
- Dhall expressions serialized as CBOR can be tagged to describe themselves
- ๐ Feature: New
--file
option fordhall
commands- In other words, instead of
dhall <<< './some/file
you can now use
dhall --file some/file
- See: #949
- In other words, instead of
- ๐ Feature: New
--cache
flag fordhall freeze
command- This automates the idiom used by the Prelude to optimistically cache
imports but gracefully degrade if the semantic integrity check fails - See: #980
- This automates the idiom used by the Prelude to optimistically cache
- ๐ Feature: Add
:clear
command todhall repl
- This deletes previous bindings from the history so that they can be
garbage collected - See: #966
- This deletes previous bindings from the history so that they can be
- ๐ Feature: New
chunkExprs
Traversal
added toDhall.Core
- See: #954
- ๐ Feature: New
Dhall.Optics
module - ๐ More GHC 8.8 support
- See: #961
-
v1.23.0 Changes
May 11, 2019- ๐ฅ 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 freeze
respects the--ascii
flag- 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
cross
flag to simplify cross-compilation- This allows the
dhall
package 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-compat
dependencies- This is to support
dhall
on Debian Sid - See: #939
- This is to support
-
v1.22.0 Changes
April 28, 2019- ๐ 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
-
v1.21.0 Changes
March 07, 2019- ๐ 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