dhall v1.26.0 Release Notes
Release Date: 2019-09-12 // over 4 years ago-
- ๐ 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