Dhall for Java 0.10.0-M2
Pre-releaseThis release updates the Dhall language version from 20.2.0 to 21.0.0 and bumps the minor versions of several module-specific dependencies, including Jawn (from 1.1 to 1.2), SnakeYAML (1.28 to 1.29) and Cats Effect (3.1 to 3.2).
Most prominently this release introduces support for Dhall's new temporal literals:
scala> org.dhallj.parser.DhallParser.parse("2021-01-01T00:00:00+00:00")
val res0: org.dhallj.core.Expr.Parsed = {date = 2021-01-01, time = 00:00:00, timeZone = +00:00}
The implementation passes all acceptance tests for the new language features, but it is otherwise largely untested, and should be used with care in this milestone release. Future releases are likely to include additional support for the new temporal literals, including codecs for java.time
types in dhall-scala.
This release includes many small fixes and improvements, including the following:
- Improved
toString
implementation forExpr
(e.g. fewer unnecessary parentheses; #272 and #273). - Support for specifying both cache locations and a relative path for import resolution (#286).
- New check for
Double
bounds when parsing (previously we followed Java'sDouble.parseDouble
in returning infinities; #294). Bool -> 1
doesn't type-check now (#289).- No
Sort
inif
branches (#290). - Type checking for optional annotation in
let
(#291). - Type checking for
using
value (#295). - Fix for a bug in
isResolved
(#285). - Fix for minor import resolution bugs hidden by some test setup mistakes (#287).
- Changed behavior when cache creation fails (#296).
- Back to Scala 2 by default in the sbt console (#288).
- Some public API clean-up (e.g. #276).
Most of these issues were turned up when I realized we weren't actually running some of the failure acceptance tests. I don't think any of them are likely to affect users.
This release includes two known issues. One involves import resolution not consulting the cache in some situations (#298) and the other involves the parser being slightly too accepting (#299). Neither is likely to affect users.