1419 lines
76 KiB
Markdown
1419 lines
76 KiB
Markdown
1.27.0
|
||
|
||
* [Supports version 11.0.0 of the standard](https://github.com/dhall-lang/dhall-lang/releases/tag/v11.0.0)
|
||
* BREAKING CHANGE: Rename `Inject`/`Interpret` to `ToDhall`/`FromDhall`
|
||
* This change `ConstraintKinds` to minimize disruption by keeping around
|
||
`Inject`/`Interpret` as synonyms for `ToDhall`/`FromDhall`
|
||
* In other words, constraints and derived instances using `Inject` or
|
||
`Interpret` will still work
|
||
* However, manual instances using `Inject` or `Interpret` won't work
|
||
unless you rename them to `ToDhall`/`FromDhall` or enable the
|
||
`TypeSynonymInstances` extension
|
||
* BREAKING CHANGE: Fix `Eq` instance for `Expr`s with special `Double`s
|
||
* This fixes the `Eq` instance for `Expr`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 of `Expr`
|
||
now stores a `DhallDouble` instead of a `Double`
|
||
* BREAKING CHANGE: [Add `--file` option for `dhall hash`](https://github.com/dhall-lang/dhall-haskell/pull/1445)
|
||
* This is a breaking change because it also removes the `Dhall.Hash` module,
|
||
which wasn't really carrying its own weight
|
||
* [Add support for leading separators](https://github.com/dhall-lang/dhall-haskell/pull/1355)
|
||
* See the [changelog for standard version 11.0.0](https://github.com/dhall-lang/dhall-lang/releases/tag/v11.0.0) for more details
|
||
* [Add record completion operator](https://github.com/dhall-lang/dhall-haskell/pull/1375)
|
||
* See the [changelog for standard version 11.0.0](https://github.com/dhall-lang/dhall-lang/releases/tag/v11.0.0) for more details
|
||
* [Add `dhall tags` subcommand](https://github.com/dhall-lang/dhall-haskell/pull/1398)
|
||
* This generates an ETags file from an input file or directory
|
||
* [Add `dhall lint` support for fixing malformed assertions](https://github.com/dhall-lang/dhall-haskell/pull/1353)
|
||
* `dhall lint` now fixes `let example = foo === bar` to be
|
||
`let example = assert : foo === bar`
|
||
* Normalize inferred types [#1337](https://github.com/dhall-lang/dhall-haskell/pull/1337)
|
||
* New `FromDhall`/`ToDhall` (previously `Interpret`/`Inject`) instances for:
|
||
* [`Void`](https://github.com/dhall-lang/dhall-haskell/pull/1382)
|
||
* `Map` [#1391](https://github.com/dhall-lang/dhall-haskell/pull/1391) / [#1412](https://github.com/dhall-lang/dhall-haskell/pull/1412)
|
||
* [`HashMap`](https://github.com/dhall-lang/dhall-haskell/pull/1426)
|
||
* [`Set` and `HashSet`](https://github.com/dhall-lang/dhall-haskell/pull/1405)
|
||
* [`()`](https://github.com/dhall-lang/dhall-haskell/pull/1388)
|
||
* [Add `--output` option to `dhall`](https://github.com/dhall-lang/dhall-haskell/pull/1399)
|
||
* [Move syntax things from `Dhall.Core` to a new `Dhall.Syntax` module](https://github.com/dhall-lang/dhall-haskell/pull/1440)
|
||
* This is not a breaking change. `Dhall.Core` still re-exports the same
|
||
API as before
|
||
* Performance improvements
|
||
* [#1362](https://github.com/dhall-lang/dhall-haskell/pull/1362)
|
||
* [#1366](https://github.com/dhall-lang/dhall-haskell/pull/1366)
|
||
* [#1368](https://github.com/dhall-lang/dhall-haskell/pull/1368)
|
||
* [#1397](https://github.com/dhall-lang/dhall-haskell/pull/1397)
|
||
* [#1401](https://github.com/dhall-lang/dhall-haskell/pull/1401)
|
||
* Fixes and improvements to code formatting
|
||
* [#1360](https://github.com/dhall-lang/dhall-haskell/pull/1360)
|
||
* [#1372](https://github.com/dhall-lang/dhall-haskell/pull/1372)
|
||
* [#1380](https://github.com/dhall-lang/dhall-haskell/pull/1380)
|
||
* [#1415](https://github.com/dhall-lang/dhall-haskell/pull/1415)
|
||
|
||
1.26.1
|
||
|
||
* TECHNICALLY BREAKING CHANGES: [Simplify `⫽` within projection](https://github.com/dhall-lang/dhall-haskell/pull/1283) / [Simplify nested record projections](https://github.com/dhall-lang/dhall-haskell/pull/1307)
|
||
* 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
|
||
* BUG FIX: [Fix performance regression](https://github.com/dhall-lang/dhall-haskell/pull/1335)
|
||
* This change fixes the performance regression introduced in the previous
|
||
release (version 1.26.0)
|
||
* BUG FIX: [Prevent REPL from inserting inferred `Sort`s into context](https://github.com/dhall-lang/dhall-haskell/pull/1318)
|
||
* This protects the REPL from getting hosed if you define an expression
|
||
using `:let` that has an inferred type of `Sort`
|
||
* NEW FEATURE: Improved `Inject`/`Interpret` support for 1-field constructors - ([#1315](https://github.com/dhall-lang/dhall-haskell/pull/1315) / [#1321](https://github.com/dhall-lang/dhall-haskell/pull/1321))
|
||
* This adds a new `singletonConstructors` field to `InterpretOptions` 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
|
||
* NEW FEATURE: `--censor` flag that disables source code display ([#1312](https://github.com/dhall-lang/dhall-haskell/pull/1312) / [#1329](https://github.com/dhall-lang/dhall-haskell/pull/1329))
|
||
* Use this flag when you don't want sensitive `Text` literals showing up in
|
||
parsing or type-checking error messages
|
||
* [Format record fields more compactly if they fit on 1 line](https://github.com/dhall-lang/dhall-haskell/pull/1314)
|
||
* 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
|
||
* [Add `--quiet` option to `dhall type`](https://github.com/dhall-lang/dhall-haskell/pull/1325)
|
||
* This lets you use `dhall type` in "check only" mode (e.g. for CI for
|
||
for development feedback)
|
||
* Improved GHCJS support - ([#1311](https://github.com/dhall-lang/dhall-haskell/pull/1311) / [#1330](https://github.com/dhall-lang/dhall-haskell/pull/1330))
|
||
* [Fix all executables to accept `--version`](https://github.com/dhall-lang/dhall-haskell/pull/1334)
|
||
* Note that the `dhall version` subcommand is still supported, too
|
||
* [New `Dhall.Version` module](https://github.com/dhall-lang/dhall-haskell/pull/1332)
|
||
* [Don't normalize inferred types](https://github.com/dhall-lang/dhall-haskell/pull/1317)
|
||
* This fixes `dhall type` to more accurately follow the standard
|
||
* [Initial changes for GHC 8.8 support](https://github.com/dhall-lang/dhall-haskell/pull/1324)
|
||
* [Fix Haddock formatting for `dhallFromJSON`](https://github.com/dhall-lang/dhall-haskell/pull/1316)
|
||
* [Improved Windows caching support](https://github.com/dhall-lang/dhall-haskell/pull/1272)
|
||
* `dhall` will now prefer the `%LOCALAPPDATA%` directory for caching if it is
|
||
available
|
||
* [Warn about missing cache directories](https://github.com/dhall-lang/dhall-haskell/pull/1320)
|
||
|
||
1.26.0
|
||
|
||
* [Supports version 10.0.0 of the standard](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0)
|
||
* BREAKING CHANGE TO THE LANGUAGE: [Remove old union literal syntax](https://github.com/dhall-lang/dhall-haskell/pull/1176)
|
||
* Union literals of the form `< x = e | ... >` are no longer valid
|
||
* For more details, see: [Migration: Deprecation of old union literal syntax](https://github.com/dhall-lang/dhall-lang/wiki/Migration%3A-Deprecation-of-old-union-literal-syntax)
|
||
* Also see the [changelog for standard version 10.0.0](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0) for more details
|
||
* BREAKING CHANGE TO THE API: [Change `X` to be a type synonym for `Data.Void`](https://github.com/dhall-lang/dhall-haskell/pull/1172)
|
||
* This is a breaking change if you were previously pattern matching on the
|
||
`X` constructor. You can replace that with the use of `Data.Void.absurd`
|
||
* BREAKING CHANGE TO THE API: [Treat multi-`let`s as syntactic sugar](https://github.com/dhall-lang/dhall-haskell/pull/1242)
|
||
* This is a breaking change because the `Let` constructor now only stores
|
||
one `Binding` instead of a `NonEmpty` list of `Binding`s
|
||
* PERFORMANCE REGRESSION & TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: [Dependent types](https://github.com/dhall-lang/dhall-haskell/pull/1164)
|
||
* 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](https://github.com/dhall-lang/dhall-haskell/issues/1306))
|
||
* Splitting large multi-`let` expressions into smaller files may mitigate
|
||
the problem as a work-around for now
|
||
* Follow [#1129](https://github.com/dhall-lang/dhall-haskell/issues/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](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0) for more details
|
||
* TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: [Add `Natural/subtract` built-in](https://github.com/dhall-lang/dhall-haskell/pull/1133)
|
||
* The language now supports machine subtraction, which can be used to
|
||
support several other high-performance operations (like `Natural`
|
||
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](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0) for more details
|
||
* TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: [More simplifications for field selection](https://github.com/dhall-lang/dhall-haskell/pull/1174)
|
||
* 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](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0) for more details
|
||
* TECHNICALLY BREAKING CHANGE TO THE LANGUAGE: [Simplify `⫽` when its arguments are equivalent](https://github.com/dhall-lang/dhall-haskell/pull/1196)
|
||
* 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](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0) for more details
|
||
* NEW FEATURE: [Restore support for records containing both types and terms](https://github.com/dhall-lang/dhall-haskell/pull/1173)
|
||
* 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](https://github.com/dhall-lang/dhall-lang/releases/tag/v10.0.0) for more details
|
||
* [`dhall format` now preserves `let` comments](https://github.com/dhall-lang/dhall-haskell/pull/1273)
|
||
* `dhall` format will now preserve comments in the following locations of
|
||
a `let` 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](https://github.com/dhall-lang/dhall-haskell/pull/1195)
|
||
* You can now marshal recursive types from Dhall into Haskell using the
|
||
newly-added utilities
|
||
* See also: [#1298](https://github.com/dhall-lang/dhall-haskell/pull/1298)
|
||
* [New `:help` command for `dhall repl`](https://github.com/dhall-lang/dhall-haskell/pull/1237)
|
||
* New `--no-cache` flag [#1290](https://github.com/dhall-lang/dhall-haskell/pull/1290) / [#1434](https://github.com/dhall-lang/dhall-haskell/pull/1434) / [#1436](https://github.com/dhall-lang/dhall-haskell/pull/1436)
|
||
* 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
|
||
* [Fix `isNormalized` for field selections](https://github.com/dhall-lang/dhall-haskell/pull/1210)
|
||
* [Simplify `Natural/subtract` when its arguments are equivalent](https://github.com/dhall-lang/dhall-haskell/pull/1220)
|
||
* [Fix `NaN` to be judgmentally equivalent to itself](https://github.com/dhall-lang/dhall-haskell/pull/1231)
|
||
* [Fix `Inject` instance for lists](https://github.com/dhall-lang/dhall-haskell/pull/1261)
|
||
* [Fix typechecking of `toMap`](https://github.com/dhall-lang/dhall-haskell/pull/1279)
|
||
* Performance optimizations
|
||
* [Optimize a few `Set` instances](https://github.com/dhall-lang/dhall-haskell/pull/1184)
|
||
* [Remove some redundant sorting during normalization](https://github.com/dhall-lang/dhall-haskell/pull/1228)
|
||
* Improvements to error messages
|
||
* [Improve error reporting for failed remote imports](https://github.com/dhall-lang/dhall-haskell/pull/1188)
|
||
* [Improve HTTP errors](https://github.com/dhall-lang/dhall-haskell/pull/1253)
|
||
* Improvements to formatting
|
||
* [Indent function arguments when formatting](https://github.com/dhall-lang/dhall-haskell/pull/1167)
|
||
* [Prefer unquoted URLs](https://github.com/dhall-lang/dhall-haskell/pull/1235)
|
||
* [Strip leading whitespace](https://github.com/dhall-lang/dhall-haskell/pull/1270)
|
||
* Improvements to diffs
|
||
* [Fix diffs for lists](https://github.com/dhall-lang/dhall-haskell/pull/1213)
|
||
* [Improve diff for non-empty lists](https://github.com/dhall-lang/dhall-haskell/pull/1244)
|
||
* [Small fixes to `dhall diff`](https://github.com/dhall-lang/dhall-haskell/pull/1263)
|
||
* Improvements to documentation
|
||
* [Fix documentation for `UnionInputType`](https://github.com/dhall-lang/dhall-haskell/pull/1230)
|
||
* [Document support for caching protected imports](https://github.com/dhall-lang/dhall-haskell/pull/1247)
|
||
* Improvements to command-line interface
|
||
* [Improve description of `dhall lint`](https://github.com/dhall-lang/dhall-haskell/pull/1264)
|
||
* [Change `dhall type` to resolve imports](https://github.com/dhall-lang/dhall-haskell/pull/1281)
|
||
|
||
1.25.0
|
||
|
||
* Supports version 9.0.0 of the standard
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v9.0.0
|
||
* BREAKING CHANGE: Remove support for old-style `List`-like `Optional` literals
|
||
* List-like `Optional` Literals (i.e. `[ 1 ] : Optional Natural`) are no
|
||
longer valid
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1002
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/1113
|
||
* BREAKING CHANGE: Implement new Unicode braced escape sequence
|
||
* Escape sequences encoding surrogate pairs are no longer valid
|
||
* Instead, characters previously encoded as surrogate pairs can instead be
|
||
encoded as a braced sequence
|
||
* For example: "\uD834\uDD1E" must now be written as "\u{1D11E}"
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/987
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1104
|
||
* BREAKING CHANGE: Make the type of extract richer:
|
||
* `Dhall.extract` can now return a detailed error instead of just a `Maybe`
|
||
* This is a breaking chnage because the type of `extract` changed
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1011
|
||
* BREAKING CHANGE: Add support for importing expressions `as Location`
|
||
* This is a breaking change because a new `Location` constructor was added
|
||
to `ImportMode`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1019
|
||
* BREAKING CHANGE: Switch `Var` to use an `Int`
|
||
* This is a performance improvement, but also a breaking change since the
|
||
`Integer` in the `Var` constructor was changed to an `Int`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1044
|
||
* BREAKING CHANGE: Add new `toMap` keyword
|
||
* This is a breaking change to the API because a new `ToMap` constructor
|
||
was added to the `Expr` 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: https://github.com/dhall-lang/dhall-haskell/pull/1041
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/1111
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/1012
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/1027
|
||
* BUG FIX: Fix linting of unused let bindings
|
||
* Certain let bindings were not correctly detected as unused, which this
|
||
change fixes
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1001
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/1004
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/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: https://github.com/dhall-lang/dhall-haskell/pull/1024
|
||
* BUG FIX: `Dhall.Map`: Reflect original key ordering in `Ord` instance
|
||
* `Dhall.Map` now considers key order when comparing `Map`s, which it should
|
||
have done before, but didn't
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/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: https://github.com/dhall-lang/dhall-haskell/pull/1056
|
||
* BUG FIX: Make `isNormalized` consistent with `normalize`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1115
|
||
* BUG FIX: Make `normalizeWithM` consistent with `normalize`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1126
|
||
* BUG FIX: Fix import alternatives to recover from type errors
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/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
|
||
default
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1154
|
||
* Feature: New `dhall text` subcommand
|
||
* This new subcommand supersedes the old `dhall-to-text` executable
|
||
* Feature: Add `instance Lift (Expr s a)`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1119
|
||
* Fixes and improvements to error messages:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1030
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1137
|
||
* Fixes and improvements to tests:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1155
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1159
|
||
* Performance improvements
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1036
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1051
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1048
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1057
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1065
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1066
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/1085
|
||
|
||
1.24.0
|
||
|
||
* Supports version 8.0.0 of the standard
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v8.0.0
|
||
* 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 with `dhall 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
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/965
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/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: https://github.com/dhall-lang/dhall-haskell/pull/985
|
||
* BUG FIX: `dhall diff` no longer double-prints key-value separators
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/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
|
||
* 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
|
||
* 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
|
||
* Feature: New `--file` option for `dhall` commands
|
||
* In other words, instead of `dhall <<< './some/file` you can now use
|
||
`dhall --file some/file`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/949
|
||
* Feature: New `--cache` flag for `dhall freeze` command
|
||
* This automates the idiom used by the Prelude to optimistically cache
|
||
imports but gracefully degrade if the semantic integrity check fails
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/980
|
||
* Feature: Add `:clear` command to `dhall repl`
|
||
* This deletes previous bindings from the history so that they can be
|
||
garbage collected
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/966
|
||
* Feature: New `chunkExprs` `Traversal` added to `Dhall.Core`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/954
|
||
* Feature: New `Dhall.Optics` module
|
||
* This re-exports some convenient @lens@ utilities used internally for
|
||
packages trying to avoid a @lens@ dependency
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/986
|
||
* More GHC 8.8 support
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/961
|
||
|
||
1.23.0
|
||
|
||
* BREAKING CHANGE: Fix marshaling union literals
|
||
* 1.22.0 introduced two separate bugs in marshaling union literals between
|
||
Dhall and Haskell, which this release fixes:
|
||
* Dhall enums did not correctly map onto Haskell enums
|
||
* New-style union literals (i.e. `< A : T >.A x`) were not correctly
|
||
supported
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/918
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/927
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/936
|
||
* 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 an `if`/`then`/else` expression in their
|
||
normal form
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/931
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/938
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/891
|
||
* BUG FIX: `dhall freeze` respects the `--ascii` flag
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/934
|
||
* BUG FIX: Don't autocomplete fields for record types
|
||
* This prevents the REPL from expanding `{ x : T }.<TAB>` to `{ x : T }.x`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/937
|
||
* Support `MonadFail`-related changes in GHC 8.8
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/912
|
||
* Add `cross` flag to simplify cross-compilation
|
||
* This allows the `dhall` package to be built without using
|
||
`TemplateHaskell`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/928
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/916
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/919
|
||
* Expand lower bounds on `megaparsec`/`transformers-compat` dependencies
|
||
* This is to support `dhall` on Debian Sid
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/939
|
||
|
||
1.22.0
|
||
|
||
* Supports version 7.0.0 of the standard
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v7.0.0
|
||
* BREAKING CHANGE: Add support for empty alternatives
|
||
* The `Union` type now has an optional (`Maybe`) type for each alternative
|
||
* See the changelog for standard version 7.0.0 for more details
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/863
|
||
* BREAKING CHANGE: Remove support for URL fragments
|
||
* The `URL` type no longer has a field for a URL fragment since the language
|
||
no longer supports fragments
|
||
* See the changelog for standard version 7.0.0 for more details
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/851
|
||
* BREAKING CHANGE: Remove deprecated `Path` type synonym
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/858
|
||
* BUG FIX: Correctly parse identifiers beginning with `http`
|
||
* i.e. `httpPort` was supposed to be a valid identifier name and now is
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/870
|
||
* BUG FIX: Fix `dhall encode` bug
|
||
* `dhall 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 the `dhall decode` subcommand was affected
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/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
|
||
the `UnionType` utilities
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/857
|
||
* Feature: New `--alpha` flag to α-normalize command-line output
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/855
|
||
* Performance improvements
|
||
* The normalizer is now *much* faster
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/876
|
||
|
||
1.21.0
|
||
|
||
* Supports version 6.0.0 of the language standard
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v6.0.0
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/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 except `Infinity`/`-Infinity`/`NaN`/`0.0` are now encoded in at
|
||
least 32 bits
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/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: https://github.com/dhall-lang/dhall-haskell/pull/835
|
||
* BUG FIX: Fix non-exhaustive pattern match in `dhall lint`
|
||
* This fixes: `Irrefutable pattern failed for pattern Let (l' :| ls') d'`
|
||
* This bug would cause `dhall lint` to fail on some nested `let`/`in`
|
||
expressions
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/780
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/784
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/789
|
||
* 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 a `Text` literal)
|
||
* This comes in handy when using Dhall code to generate JSON or Dhall code
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/811
|
||
* Feature: Add `--immediate-dependencies`/`--transitive-dependencies` flags for
|
||
`dhall resolve`
|
||
* You can now retrieve all of your immediate or transitive dependencies as a
|
||
textual list
|
||
* This simplifies integration with other command-line tools (such as file
|
||
watchers)
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/795
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/803
|
||
* Feature: `dhall freeze` now only freezes remote imports by default
|
||
* `dhall 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: https://github.com/dhall-lang/dhall-haskell/pull/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: https://github.com/dhall-lang/dhall-haskell/pull/807
|
||
* Feature: Add `:hash` command to `dhall repl`
|
||
* This lets you conveniently hash expressions within the `dhall repl`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/806
|
||
* Feature: Add `--check` flag to `dhall 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: https://github.com/dhall-lang/dhall-haskell/pull/810
|
||
* Feature: Add `UnionInputType` builder for `InputType`s
|
||
* This is the union analog of `RecordInputType`, letting you build a
|
||
record explicitly instead of deriving the instance using GHC generics
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/775
|
||
* Feature: Add `:set`/`:unset` commands to `dhall repl`
|
||
* You can use these commands to set or unset command-line options
|
||
* Currently only setting/unsetting `--explain` is supported
|
||
* Standards-compliance fixes:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/779
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/804
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/833
|
||
* Documentation fixes:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/792
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/825
|
||
* Test fixes:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/782
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/836
|
||
* Improved error messages:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/812
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/815
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/824
|
||
* Formatting fixes:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/831
|
||
* REPL fixes:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/837
|
||
|
||
1.20.1
|
||
|
||
* BUG FIX: Fix binary encoding to use correct standard version
|
||
* This fixes computed hashes to correctly match standard version 5.0.0
|
||
* This is not marked as a breaking change since it is a bug fix. The
|
||
1.20.0 release will be blacklisted on Hackage and users should upgrade
|
||
from 1.19.* directly to 1.20.1
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/771
|
||
|
||
1.20.0
|
||
|
||
* Supports version 5.0.0 of the language standard
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v5.0.0
|
||
* BREAKING CHANGE TO THE LANGUAGE: Implement standardized support for multi-line
|
||
literals
|
||
* This updates the multi-line support to match the standard
|
||
* This is a breaking change because empty lines within the multi-line
|
||
literal now require leading whitespace whereas previously they did not
|
||
* This is also a breaking change because now a newline is required after
|
||
the opening `''` quotes whereas previously it was not required
|
||
* If you use `dhall format` then your multi-line literals already have the
|
||
necessary leading whitespace
|
||
* BREAKING CHANGE TO THE LANGUAGE: `constructors x = x`
|
||
* Now the `constructors` keyword behaves like an identity function, since
|
||
constructors can already be accessed as fields off the original union
|
||
type.
|
||
* This is a breaking change since any record of terms that contains a
|
||
`constructors` field will now be a forbidden mixed record of types and
|
||
terms.
|
||
* This is also a breaking change if you annotated the type of what used to
|
||
be a `constructors` record.
|
||
* `dhall lint` will now remove the obsolete `constructors` keyword for you
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/693
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/701
|
||
* BREAKING CHANGE TO THE API: Restore `Parent` constructor for `Local` type
|
||
* This more closely matches the standard and also enables `dhall format` to
|
||
produce a leading `../` for imports instead of `./../`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/718
|
||
* BUG FIX: Fix type-checking bug for unions
|
||
* The first fix was that the inferred type was wrong for unions where
|
||
alternatives were types or kinds
|
||
* The second fix was that unions that mixed terms/types/kinds were not
|
||
properly rejected
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/763
|
||
* BUG FIX: Change how `dhall repl` handles prior definitions
|
||
* This changes the REPL to handle previous bindings as if they were
|
||
defined using a large `let` expression instead of adding them to the
|
||
context
|
||
* This fixes some type-checking false negatives
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/729
|
||
* Feature: Autocomplete for `dhall repl`
|
||
* You can now auto-complete record fields, union constructors, and
|
||
identifiers that are in scope
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/727
|
||
* Feature: GHCJS support
|
||
* `dhall` can now be built using GHCJS, although some features are still
|
||
not supported for GHCJS, such as:
|
||
* Semantic integrity checks
|
||
* Custom HTTP headers
|
||
* Also, HTTP imports only work for URLs that support CORS
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/739
|
||
* Feature: Add support for records of records of types
|
||
* You can now nest records of types
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/700
|
||
* Feature: Add `:quit` command for `dhall repl`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/719
|
||
* Feature: Add `--json` flag for `dhall {encode,decode}`
|
||
* You can now produce/consume CBOR expressions via JSON instead of binary
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/717
|
||
* Feature: Add decoding logic for `as Text`
|
||
* You can now preserve the `as Text` qualifier on imports when serializing
|
||
them
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/712
|
||
* Prenormalize substituted expressions
|
||
* This is a performance improvement that reduces the time and memory
|
||
consumption when normalizing expressions
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/765
|
||
|
||
1.19.1
|
||
|
||
|
||
* BUG FIX: Fix serious `dhall lint` bug
|
||
* `dhall lint` would sometimes remove `let` expressions that were still
|
||
in use
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/703
|
||
* BUG FIX: Fix import caching efficiency bug
|
||
* Some imports were being wastefully fetched multiple times
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/702
|
||
* Feature: Generate dot graph to visualize import graph
|
||
* Use the `dhall resolve --dot` command
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/698
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/713
|
||
* Improve HTTP error messages
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/710
|
||
|
||
1.19.0
|
||
|
||
* Supports version 4.0.0 of the language standard
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v4.0.0
|
||
* BREAKING CHANGE TO THE LANGUAGE AND API: Prevent Hurkens' paradox
|
||
* This fixes a type-checking soundness bug which permitted infinite loops
|
||
* This is a breaking change because infinite loops are no longer possible
|
||
* This is also a breaking change because a record of types is now treated as
|
||
a kind instead of a type
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/680
|
||
* BREAKING CHANGE TO THE LANGUAGE AND API: `Double`s are now double-precision
|
||
floating point numbers
|
||
* This restricts the range of `Double`s to IEEE 754 double-precision
|
||
floating point
|
||
* This also implies that you can no longer convert `Scientific` values to
|
||
`Dhall` expressions (i.e. no `Inject` instance for `Scientific`)
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/667
|
||
* BREAKING CHANGE TO THE API: Preserve field order for record projection
|
||
* The API uses a new `Dhall.Set.Set` type instead of `Data.Set.Set`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/670
|
||
* BREAKING CHANGE TO THE API: Add support for multi-`let` expressions
|
||
* This changes the `Let` constructor to now support storing multiple
|
||
bindings per `let` expression
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/675
|
||
* Access constructors as if they were fields of the union type
|
||
* In other words: `< Left : Bool | Right : Natural >.Left`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/657
|
||
* Support GHC 8.6
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/669
|
||
* Add support for quoted path components
|
||
* i.e. `/"foo"/bar/"baz qux"` or `https://example.com/foo/"bar?baz"?qux`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/690
|
||
* Fix parsing of `//\\` operator
|
||
* See: https://github.com/dhall-lang/dhall-haskell/commit/9d0fd42d95ab69fa64da4afd8b60d69aca8e65a6
|
||
* Preserve Unicode characters when formatting code
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/679
|
||
* Allow identifier names to begin with `Some`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/658
|
||
* Add `subExpressions` `Traversal`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/660
|
||
* Add `normalizeWithM` for monadic normalization
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/371
|
||
* Custom normalizers now take precedence over default normalization logic
|
||
* This allows one to override the implementation of built-in operators
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/684
|
||
|
||
1.18.0
|
||
|
||
* Supports version 3.0.0 of the language standard:
|
||
* See: https://github.com/dhall-lang/dhall-lang/releases/tag/v3.0.0
|
||
* BREAKING CHANGE TO THE LANGUAGE AND API: New `Some`/`None` constructors for
|
||
`Optional` values
|
||
* Example: `[ Some 1, None Natural ]`
|
||
* This is a breaking change to the language because `Some` and `None` are
|
||
now reserved keywords
|
||
* This is a breaking change to the API because `Some` and `None` are new
|
||
constructors for the `Expr` type
|
||
* BREAKING CHANGE TO THE LANGUAGE AND API: Support for kind polymorphism
|
||
* This adds a new `Sort` constant above `Kind` in the hierarchy
|
||
* i.e. `Type : Kind : Sort`
|
||
* This is a breaking change to the language because `Sort` is now a
|
||
reserved keyword
|
||
* This is a breaking change to the API because `Sort` is a new
|
||
constructor for the `Expr` type
|
||
* BREAKING CHANGE TO THE API: New `Dhall.Map` module
|
||
* This replaces `InsOrdHashMap` in the API
|
||
* The primary motivation is to improve performance and to remove the
|
||
dependency on `insert-ordered-containers`
|
||
* BREAKING CHANGE TO THE API: Use standard version instead of protocol version
|
||
* The binary protocol is now versioned alongside the standard
|
||
* The `ProtocolVersion` type is renamed to `StandardVersion` and the
|
||
* `--protocol-version` option is renamed to `--standard-version`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/634
|
||
* BUG FIX: Fix import chaining for custom header imports
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/618
|
||
* BUG FIX: Fix import chaining for imports protected by semantic integrity
|
||
checks
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/584
|
||
* BUG FIX: Record literals and types produced by `∧`/`⫽`/`⩓` are now sorted
|
||
* This ensures that β-normalization is idempotent
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/572
|
||
* BUG FIX: `dhall freeze` now correctly handles the starting file being
|
||
located outside the current working directory
|
||
* See: https://github.com/dhall-lang/dhall-haskell/commit/a22aa79d1957be9ecf166ea066e2a9a5b309e1ae
|
||
* BUG FIX: Fix parsing of IPv4-mapped IPv6 addresses
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/632
|
||
* FEATURE: New `--ascii` flag for ASCII output
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/570
|
||
* FEATURE: New `dhall encode` and `dhall decode` subcommands
|
||
* These allow you to transform Dhall source code to and from its binary
|
||
representation
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/588
|
||
* LARGE parsing performance improvements
|
||
* Parsing is about 10x-100x faster on most code
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/591
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/592
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/597
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/601
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/602
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/604
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/606
|
||
* Type-checking performance improvements:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/566
|
||
* Normalization performance improvements:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/610
|
||
* `dhall freeze` now caches the imports as it freezes them
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/587
|
||
* `dhall freeze` now refreezes imports with invalid semantic integrity checks
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/637
|
||
* `dhall freeze` now adds a trailing newline
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/629
|
||
* Build against `megaparsec-7.0.*`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/565
|
||
* Support GHC 8.6
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/599
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/623
|
||
* Support GHC all the way back to 7.10.3
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/595
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/621
|
||
* Improvements to error messages:
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/563
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/576
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/583
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/589
|
||
|
||
|
||
1.17.0
|
||
|
||
* This release corresponds to version 2.0.0 of the language standard
|
||
* BREAKING CHANGE TO THE LANGUAGE AND API: Binary serialization support
|
||
* This is a breaking change to the hash for all semantic integrity checks
|
||
* The hash used by the semantic integrity check is now based on the
|
||
binary representation instead of a text representation of the
|
||
expression
|
||
* You can pin the new hashes by supplying the `--protocol-version 1.0`
|
||
option on the command line until you need support for newer language
|
||
features
|
||
* This also includes a breaking change to `ImportType` in the API
|
||
* BREAKING CHANGE TO THE LANGUAGE: Disallow combining records of terms and
|
||
types
|
||
* This is mainly for consistency and to improve type errors that would
|
||
have otherwise happened further downstream
|
||
* This should not affect the vast majority of code
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/538
|
||
* BUG FIX: Semantic integrity checks now work for imported expression using
|
||
the `constructors` keyword
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/554
|
||
* BUG FIX: Fix α-normalization of expressions with bound variables named `_`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/524
|
||
* BUG FIX: Fix `isNormalized` to match `normalize`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/522
|
||
* BUG FIX: `dhall lint` now correctly handles nested `let` expressions
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/555
|
||
* FEATURE: Imports protected by a semantic integrity check are now cached
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/533
|
||
* The default `dhall` command no longer outputs the type to `stderr`
|
||
* You can add back the type as a type annotation using the
|
||
`--annotate` switch
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/544
|
||
* New utilities for building `InputTypes`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/530
|
||
* Improve parsing performance for long variable names
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/526
|
||
* More succinct type diffs for function types
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/540
|
||
* Identifier names can now begin with keywords
|
||
* i.e. `ifChanged` and `lettuce` are now legal identifiers
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/551
|
||
|
||
1.16.1
|
||
|
||
* Fix test failure due to missing test data file
|
||
|
||
1.16.0
|
||
|
||
* BREAKING CHANGE: Consolidate `input` family of functions
|
||
* These now take a record of options
|
||
* This also `_stack` field of the `Status` type from `[Import]` to
|
||
`NonEmpty Import`
|
||
* Permit `$` in quoted variable names
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/510
|
||
|
||
1.15.1
|
||
|
||
* Fix infinite loop when formatting expressions containing `?`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/491
|
||
|
||
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: https://github.com/dhall-lang/dhall-haskell/pull/473
|
||
* BREAKING CHANGE TO THE API: Add `Integer/toDouble` built-in function
|
||
* This adds a new constructor which affects exhaustive pattern matches
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/434
|
||
* BREAKING CHANGE TO THE API: Use strict `Text` instead of lazy `Text`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/455
|
||
* BREAKING CHANGE TO THE API: Remove `Buildable` in favor of `Pretty`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/459
|
||
* BREAKING CHANGE TO THE API: Removed the `Parent` constructor from `FilePrefix`
|
||
* Instead, use `Here` with a `".."` prefix.
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/407
|
||
* BUG FIX: Disallow duplicate fields in records
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/430
|
||
* BUG FIX: Fix stripping of leading whitespace in multi-line strings
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/469
|
||
* BUG FIX: Fix formatting field access of an import
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/471
|
||
* Add `dhall freeze` command
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/486
|
||
* Add `dhall diff` command
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/442
|
||
* Add `dhall lint` command
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/484
|
||
* Change `dhall-repl`/`dhall-hash`/`dhall-format` to `dhall` subcommands
|
||
* i.e. `dhall repl`/`dhall hash`/`dhall format`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/435
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/452
|
||
* Add `with-http` cabal flag to disable support for remote imports
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/482
|
||
* Added `inputFrom` and `inputFromWith`
|
||
* These allow naming the file that the expression is coming from for better
|
||
error messages
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/464
|
||
* Performance improvements
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/420
|
||
* Tutorial recommends GitHub for Prelude instead of IPFS
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/479
|
||
* Pretty-print expressions in type errors
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/429
|
||
* Formatting improvements
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/398
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/458
|
||
* Diff improvements
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/455
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/470
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/478
|
||
|
||
1.14.0
|
||
|
||
* BREAKING CHANGE TO THE LANGUAGE: Switch grammar of `Natural` and `Integer`
|
||
* `Natural` number literals are now unsigned and `Integer` literals always
|
||
require a sign
|
||
* This is a **VERY** disruptive change to most Dhall code in the wild but
|
||
was unanimously agreed upon here:
|
||
https://github.com/dhall-lang/dhall-lang/issues/138
|
||
* See also: https://github.com/dhall-lang/dhall-haskell/pull/381
|
||
* BREAKING CHANGE TO THE LANGUAGE: Drop support for importing directories
|
||
* Importing `dir/` used to resolve to `dir/@`, which is no longer supported
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/384
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/390
|
||
* 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 a `Path` type synonym for backwards compatibility
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/376
|
||
* BUG FIX: Fix α-equivalence bug when type-checking `merge`
|
||
* `merge` expressions would sometimes reject valid code due to a
|
||
type-checking bug
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/394
|
||
* Improve import caching
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/388
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/392
|
||
* Increase upper bound on `tasty`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/382
|
||
* Fix lower bound on `insert-ordered-containers`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/377
|
||
|
||
1.13.1
|
||
|
||
* Increase upper bound on `ansi-terminal` and `megaparsec`
|
||
|
||
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: https://github.com/dhall-lang/dhall-haskell/pull/345
|
||
* BUG FIX: Allow leading whitespace in interpolated expresssions
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/369
|
||
* BUG FIX: Fix `deriving (Interpret)` for sum types
|
||
* The types of alternatives were not correctly included in the corresponding
|
||
Dhall type
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/348
|
||
* 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
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/335
|
||
* BREAKING CHANGE TO THE API: Replace `trifecta` with `megaparsec`
|
||
* This change the API to use the `Parser` type from `megaparsec`
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/268
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/342
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/350
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/336
|
||
* Add `version`, `resolve`, `type`, and `normalize` sub-commands to interpreter
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/352
|
||
* Support GHC 7.10.3
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/340
|
||
* `:type` command in `dhall-repl` now only displays the type
|
||
* Before it would also display the original expression
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/344
|
||
* Trim dependency tree
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/351
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/268
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/355
|
||
|
||
1.12.0
|
||
|
||
* Additional changes to support GHC 8.4
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/331
|
||
* BREAKING CHANGE TO API: Replace dependency on `text-format` with `formatting`
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/330
|
||
|
||
1.11.1
|
||
|
||
* Support GHC 8.4
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/321
|
||
* Fix α-normalization bug
|
||
* Note that this is not a type-checking bug. This only affects users who
|
||
were directly using the `alphaNormalize` function from the Haskell API
|
||
because `let` expressions were not correctly α-normalized
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/319
|
||
* Slight tweak to syntax highlighting
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/324
|
||
* Increase upper bound on `ansi-terminal` and `exceptions`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/322
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/325
|
||
|
||
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` and `ListLit`
|
||
constructors changed their representations to efficiently support the
|
||
standard semantics
|
||
* `ListLit` now stores a `Data.Sequence.Seq` instead of a
|
||
`Data.Vector.Vector`
|
||
* `OptionalLit` now stores a `Maybe` instead of a `Data.Vector.Vector`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/300
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/303
|
||
* Feature: New `:save` command for `dhall-repl`
|
||
* Now you can save an expression to a file: `./yourFile = someExpression`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/309
|
||
* Improvement: Add new simplifications to match standard
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/312
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/316
|
||
* Improvement: Fix equivalence check to match standard
|
||
* Practically this means that more corner cases of the language correctly
|
||
type-check than before
|
||
* Improvement: New `--plain` flag to disable syntax highlighting
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/310
|
||
* Improvement: Prelude now provides an umbrella `package.dhall` import
|
||
* This is primarily for convenience
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/298
|
||
* Improvement: Context is now normalized
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/302
|
||
* Replace `cryptohash` dependency with `cryptonite`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/commit/5d2012927a062ec8bdf2bbaba77150344f38db77
|
||
* Increase upper bound on exceptions
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/306
|
||
* Fix type error in tutorial
|
||
* See: https://github.com/dhall-lang/dhall-haskell/commit/5a9126b2f684d3236fc1e8e20e206cfaf47d97db
|
||
|
||
1.10.0
|
||
|
||
* Feature: Records/unions can now have fields/alternatives that are types
|
||
* i.e. `{ foo = Text, bar = List }` is legal now
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/273
|
||
* Feature: New `dhall-repl` for interactively evaluating Dhall expressions
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/266
|
||
* Feature: Syntax highlighting
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/260
|
||
* Feature: BREAKING CHANGE TO THE API: `dhall-format` preserves field order
|
||
* This changes the syntax tree to use an `InsOrdHashMap` instead of a `Map`
|
||
* 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: https://github.com/dhall-lang/dhall-haskell/pull/256
|
||
* BREAKING CHANGE TO THE API: Remove `system-filepath`/`system-fileio` dependencies
|
||
* Now the library uses `Prelude.FilePath`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/248
|
||
* Feature: Labels can now begin with reserved names
|
||
* i.e. `List/map` is now a legal label
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/255
|
||
* Fix: Rendered labels are now correctly escaped if they are numbers
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/252
|
||
* Add the instance `Interpret String`.
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/247
|
||
* Fix: Custom contexts passed to `typeWith` are now checked
|
||
* This prevents a custom context from triggering an infinite loop
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/259
|
||
|
||
1.9.1
|
||
|
||
* `dhall-format` now emits single-quoted strings for multi-line strings
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/237
|
||
* Improved error messages for list elements with the wrong type
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/236
|
||
* Change `lens` dependency to `lens-family-core`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/238
|
||
|
||
1.9.0
|
||
|
||
* Feature: BREAKING CHANGE TO LANGUAGE AND API: Add `constructors` keyword
|
||
* This new keyword generates constructors from a union type
|
||
* See the updated Haskell tutorial for more details
|
||
* This means that `constructors` is now a reserved keyword
|
||
* This adds a new `Constructors` constructor to the `Expr` type
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/199
|
||
* Feature: BREAKING CHANGE TO THE API: `dhall-format` preserves interpolation
|
||
* This changes the `TextLit` constructor to represent an interpolated `Text`
|
||
literal
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/220
|
||
* Feature: You can now define type synonyms using `let`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/202
|
||
* Feature: Extend valid set of quoted labels
|
||
* See: https://github.com/dhall-lang/dhall-lang/pull/65
|
||
* See: https://github.com/dhall-lang/dhall-lang/pull/77
|
||
* Performance: Improve startup time when importing files, but not URLs
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/194
|
||
* Security: `localhost`/`127.0.0.1` imports no longer count as local imports
|
||
* Specifically: they cannot import environment variables or files
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/197
|
||
* Security: Fix potential type-checking bug
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/198
|
||
* Fix: BREAKING CHANGE TO API: Improve localization of error messages
|
||
* This required fixing the type of `normalize`/`shift`/`subst` to preserve
|
||
the first type parameter of `Expr` (i.e. they no longer delete `Note`
|
||
constructors)
|
||
* A new `denote` function was added for the explicit purpose of deleting
|
||
`Note` constructors
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/218
|
||
* Expose `MissingEnvironmentVariable` exception type
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/196
|
||
* Add `genericAuto`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/195
|
||
* Add `inputWith`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/222
|
||
* Add`loadWithContext`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/215
|
||
* Add `pair`/`unit`/`string`/`list`
|
||
* See: https://github.com/dhall-lang/dhall-haskell/pull/227
|
||
|
||
1.8.2
|
||
|
||
* Add `typeWithA` for type-checking custom `Embed`ded values
|
||
* Fix `dhall{,-*}` executables to ignore ambient locale and use UTF8
|
||
* Increase upper bound on `tasty` dependency
|
||
|
||
1.8.1
|
||
|
||
* `dhall` executable can now format output using `--pretty`
|
||
* Improved Unicode suppport on Windows
|
||
|
||
1.8.0
|
||
|
||
* BREAKING CHANGE TO LANGUAGE: Add support for import integrity checks
|
||
* In practice, the likelihood of this breaking code in the wild is
|
||
astronomically low
|
||
* This would only break code of the form `sha256:aaa...aaa` (i.e. a
|
||
variabled named `sha256` with a type annotation for a type with a name
|
||
64 characters long drawn from the first 6 characters of the alphabet)
|
||
* BUG FIX: Fix parsing of single quotes in single-quoted strings
|
||
* BUG FIX: Fix superfluous parentheses introduced by `dhall-format`
|
||
* New `dhall-hash` executable
|
||
* This goes hand-in-hand with the added support for integrity checks since
|
||
the executable lets you compute the current hash of an import
|
||
|
||
1.7.0
|
||
|
||
* BREAKING CHANGE TO LANGUAGE: Update parser to match standardized grammar
|
||
* Trailing commas and bars no longer supported for union and record literals
|
||
* Paths no longer permit commas
|
||
* URL grammar is now RFC-compliant
|
||
* Environment variables can now be quoted to support full range of
|
||
POSIX-compliant names
|
||
* Text literals support full set of JSON escape sequences (such as `\u2192`)
|
||
* BREAKING CHANGE TO LANGUAGE: Single quoted strings strip leading newlines
|
||
* BUG FIX: Fixed type-checking infinite loops due to non-type-checked variables
|
||
in context
|
||
* BUG FIX: Fixed type-checking bug due to missing context when type-checking
|
||
certain expressions
|
||
* BUG FIX: Fixed type-checking bug due to off-by-one errors in name shadowing
|
||
logic
|
||
* New `dhall-format` executable to automatically format code
|
||
* Performance optimizations to `Natural/fold` and `List/fold`
|
||
* Improved parsing performance (over 3x faster)
|
||
* Union literals can now specify the set value anywhere in the literal
|
||
* i.e. `< A : Integer | B = False | C : Text >`
|
||
* New `Inject` instance for `()`
|
||
* Several tutorial fixes and improvements
|
||
|
||
1.6.0
|
||
|
||
* BREAKING CHANGE TO THE API: Drop support for GHC 7.*
|
||
* BREAKING CHANGE TO THE API: Add support for customizing Dhall import
|
||
* This is a breaking change because this changes the type of `loadWith`
|
||
* BREAKING CHANGE TO THE API: Add field to `UnboundVariable` error containing
|
||
* BUG FIX: Fix parsing single quotes in string literals
|
||
the name of the unbound variable
|
||
* Add `List/concatMap` to the Prelude
|
||
* You can now derive `Inject` and `Interpret` for types with unlabeled fields
|
||
* Add new instances for `Interpret`:
|
||
* `[]`
|
||
* `(,)`
|
||
* Add new instance for `Inject`
|
||
* `[]`, `Data.Set.Set`, `Data.Sequence.Seq`
|
||
* `(,)`
|
||
* `Int`, `Word8`, `Word16`, `Word32`, `Word64`
|
||
* Add `Eq` instance for `Src`
|
||
|
||
1.5.1
|
||
|
||
* Increase upper bound on `vector` and `optparse-generic`
|
||
|
||
1.5.0
|
||
|
||
* BREAKING CHANGE: Add list concatenation operator: `(#)`
|
||
* This is a breaking change because it adds a new constructor to the `Expr`
|
||
type which breaks exhaustive pattern matches
|
||
* BREAKING CHANGE: Add `Interpret` support for lazy `Text`
|
||
* This is a breaking change because it renames `text` to `strictText`
|
||
* Add `Interpret` instance for decoding (a limited subset of) Dhall functions
|
||
* Dhall no longer requires Template Haskell to compile
|
||
* This helps with cross-compilation
|
||
* Add `rawInput` utility for decoding a Haskell value from the `Expr` type
|
||
* Add `loadWith`/`normalizeWith` utilities for normalizing/importing modules
|
||
with a custom context
|
||
* Export `Type` constructor
|
||
|
||
1.4.2
|
||
|
||
* Fix missing `Prelude` files in package archive uploaded to Hackage
|
||
|
||
1.4.1
|
||
|
||
* Fix missing `tests/Tutorial.hs` module in package archive uploaded to Hackage
|
||
|
||
1.4.0
|
||
|
||
* BREAKING CHANGE TO THE LANGUAGE AND API: You can now supply custom headers for
|
||
URL imports with the new `using` keyword
|
||
* This is a breaking change to the language because this adds a new reserved
|
||
`using` keyword
|
||
* This is a breaking change to the API because this adds a new field to the
|
||
`URL` constructor to store optional custom headers
|
||
* BUG FIX: `:` is no longer a disallowed path character
|
||
* This was breaking URL imports with a port
|
||
* BUG FIX: If you import a home-anchored path (i.e. `~/foo`) and that imports a
|
||
relative path (like `./bar`), then the canonical path of the relative import
|
||
should be home-anchored (i.e. `~/bar`). However, there was a bug that made
|
||
lose the home anchor (i.e. `./foo/bar`), which this release fixes
|
||
likely fail due to no longer being home-anchored (i.e. `./foob
|
||
* Add support for string interpolation
|
||
* `merge` no longer requires a type annotation if you are merging at least one
|
||
alternative
|
||
* Expanded Prelude
|
||
* `./Prelude/Optional/all`
|
||
* `./Prelude/Optional/any`
|
||
* `./Prelude/Optional/filter`
|
||
* `./Prelude/Optional/length`
|
||
* `./Prelude/Optional/null`
|
||
* `./Prelude/Text/concatMap`
|
||
* `./Prelude/Text/concatMapSep`
|
||
* `./Prelude/Text/concatSep`
|
||
* Rearrange detailed error messages to put summary information at the bottom of
|
||
the message
|
||
|
||
1.3.0
|
||
|
||
* BREAKING CHANGE TO THE API: Add support for new primitives, specifically:
|
||
* `(//)` - Right-biased and shallow record merge
|
||
* `Optional/build` (now a built-in in order to support build/fold fusion)
|
||
* `Natural/show`
|
||
* `Integer/show`
|
||
* `Double/show`
|
||
* `Natural/toInteger`
|
||
* These all add new constructors to the `Expr` type, which would break
|
||
exhaustive pattern matches
|
||
* BREAKING CHANGE TO THE LANGUAGE: Imported paths and URLs no longer support
|
||
the characters: "()[]{}<>:"
|
||
* This reduces the number of cases where you have to add a space after
|
||
imports
|
||
* Note that this does not exclude the `:` in the URL scheme (i.e. `http://`)
|
||
* Increase connection timeout for imports
|
||
* Variable names now allow the `-` character for all but the first character
|
||
* You can now escape identifiers with backticks
|
||
* This lets you name identifiers so that they don't conflict with reserved
|
||
key words
|
||
* This is most useful when converting Dhall to other file formats (like
|
||
JSON) where you might need to emit a field that conflicts with one of
|
||
Dhall's reserved keywords
|
||
* New `--version` flag for the `dhall` executable
|
||
|
||
1.2.0
|
||
|
||
* BREAKING CHANGE: Add support for customizing derived `Interpret` instances
|
||
* This is a breaking change to the Dhall library API since this changes the
|
||
signature of the `Interpret` class by replacing the `auto` method with a
|
||
more general `autoWith` method. This `autoWith` now takes an
|
||
`InterpretOptions` argument that lets you customize derived field and
|
||
constuctor names
|
||
* In practice user programs that use the common path will be unaffected by
|
||
this change
|
||
* This is not a breaking change to the Dhall language
|
||
* BREAKING CHANGE: Type annotations now bind more tightly than lambda
|
||
abstraction
|
||
* This is a breaking change to the Dhall language. An expression like this:
|
||
|
||
```
|
||
λ(x : A) → y : B
|
||
```
|
||
|
||
... used to parenthesized implicitly as:
|
||
|
||
```
|
||
(λ(x : A) → y) : T
|
||
```
|
||
|
||
... but is now parenthesized implicitly as:
|
||
|
||
```
|
||
λ(x : A) → (y : T)
|
||
```
|
||
|
||
This is now consistent with Haskell's precedence and also consistent with
|
||
the precedence of `List` and `Optional` type annotations
|
||
|
||
* This change affects programs with an expression like this:
|
||
|
||
```
|
||
-- Assuming that `y : B`
|
||
λ(x : A) → y : A → B
|
||
```
|
||
|
||
The above program would type-check before this change but not type-check
|
||
after this change. You would you need to fix the above program by either
|
||
changing the type signature to annotate just the type of `y` like this:
|
||
|
||
```
|
||
λ(x : A) → y : B
|
||
```
|
||
|
||
... or by adding explicit parentheses like this:
|
||
|
||
```
|
||
(λ(x : A) → y) : A → B
|
||
```
|
||
|
||
* This is not a breaking change to the Dhall library API
|
||
* BREAKING CHANGE: Add support for importing a path's contents as raw `Text` by
|
||
adding `as Text` after the import
|
||
* This is a breaking change to the Dhall language
|
||
* This is technically a breaking change, but is extremely unlikely to affect
|
||
you program. This only changes the behavior of old programs that had an
|
||
expression of the form:
|
||
|
||
```
|
||
/some/imported/function as Text
|
||
```
|
||
|
||
... where `/some/imported/function` is an imported function being applied
|
||
to two arguments, the first of which is a bound variable named `as` and
|
||
the second of which is the type `Text`
|
||
* This is not a breaking change to the Dhall library API
|
||
* BREAKING CHANGE: Add support for importing environment variables using
|
||
`env:VAR` syntax
|
||
* This is a breaking change to the Dhall library API since it adds a new
|
||
`Path` constructor
|
||
* This also technically a breaking change to the Dhall language but
|
||
extremely unlikely to affect your program. This only changes the behavior
|
||
of old programs that had an expression of the form:
|
||
|
||
```
|
||
env:VAR
|
||
```
|
||
|
||
... where `env` was the name of a bound variable and `:VAR` was a type
|
||
annotation without spaces around the type annotation operator
|
||
|
||
After this change the program would be interpreted as an import of the
|
||
contents for the environment variable named `VAR`
|
||
* BREAKING CHANGE: Support importing paths relative to home directory using
|
||
`~/some/path` syntax
|
||
* This is a breaking change to the Dhall library API since it adds a new
|
||
field to the `File` constructor indicating whether or not the imported
|
||
path is relative to the home directory
|
||
* This is not a breaking change to the Dhall language and the new syntax
|
||
does not override any old syntax
|
||
* Permit trailing commas and bars in record/union syntax
|
||
* Improve location information for parsing errors
|
||
|
||
1.1.0
|
||
|
||
* BREAKING CHANGE: Non-empty lists no longer require a type annotation
|
||
* This is a breaking change to the Haskell library, not the Dhall language
|
||
* This change does not break existing Dhall programs
|
||
* The `Expr` type was modified in a non-backwards-compatible way
|
||
* Add new `exprA` parser
|
||
* Add new `InvalidType` exception if `input` fails on an invalid `Type`
|
||
* Improve documentation and tutorial
|
||
|
||
1.0.2
|
||
|
||
* Add support for Nix-style "double single-quote" multi-line string literals
|
||
* Add `isNormalized`
|
||
* Improve documentation and tutorial
|
||
* Build against wider range of `http-client` versions
|
||
|
||
1.0.1
|
||
|
||
* Initial release
|
||
|
||
1.0.0
|
||
|
||
* Accidental premature upload to Hackage. This release was blacklisted
|