Skip to content

Releases: travisbrown/dhallj

Dhall for Java 0.10.0-M2

28 Jul 18:45
v0.10.0-M2
ed147f2
Compare
Choose a tag to compare
Pre-release

This 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 for Expr (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's Double.parseDouble in returning infinities; #294).
  • Bool -> 1 doesn't type-check now (#289).
  • No Sort in if 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.

Dhall for Java 0.10.0-M1

28 Jul 14:56
v0.10.0-M1
ff46c62
Compare
Choose a tag to compare
Pre-release

This release contains a bug involving the CBOR decoding of seconds in temporal literals. Please use 0.10.0-M2 instead.

Dhall for Java 0.9.0-M2

03 Jun 14:20
v0.9.0-M2
4a29770
Compare
Choose a tag to compare
Pre-release

Like 0.9.0-M1, this release updates the Dhall language version (to 20.2.0 from 0.8.x's 20.0.0) and bumps several module-specific dependencies, including Circe (to 0.14.x) and SnakeYAML (to 1.28).

This milestone additionally updates the dhall-import module's Cats Effect dependency from 2.5.x to 3.1.1, and its http4s to 0.23.0-RC1. For all other modules this release is identical to 0.9.0-M1. This release introduces support for Scala 3 in all of the Scala modules (note that the core modules are implemented in Java and don't depend on Scala in any way).

This release includes one known issue involving caching that was also known to be present in earlier releases (see the 0.5.0-M1 release notes for details), and one related issue turned up by a new acceptance test (DontCacheIfHash). These issues only affect the dhall-imports Scala module, and should not affect most usage.

Dhall for Java 0.9.0-M1

03 Jun 13:54
v0.9.0-M1
8cd9b70
Compare
Choose a tag to compare
Pre-release

This release updates the Dhall language version from 20.0.0 to 20.2.0. Several module-specific dependencies have been updated, including Circe (from 0.13.x to 0.14.x) and SnakeYAML (from 1.27 to 1.28).

This release includes one known issue involving caching that was also known to be present in earlier releases (see the 0.5.0-M1 release notes for details), and one related issue turned up by a new acceptance test (DontCacheIfHash). These issues only affect the dhall-imports Scala module, and should not affect most usage.

Dhall for Java 0.8.0-M1

10 Dec 15:30
v0.8.0-M1
13b8c44
Compare
Choose a tag to compare
Pre-release

This release updates the Dhall language version from 19.0.0 to 20.0.0.

This release also fixes a bug in the behavior of Text/replace on single-quoted text literals containing tabs. For example, while e.g. compared these correctly in previous releases…

scala> import org.dhallj.syntax._
import org.dhallj.syntax._

scala> "assert: \"\\t\\n\" ≡ ''\n\t\n''".parseExpr.flatMap(_.typeCheck)
val res0: scala.util.Either[org.dhallj.core.DhallException,org.dhallj.core.Expr] = Right("\t\n""\u0009\n")

Text/replace did not:

scala> "assert: \"foo\\n\" ≡ Text/replace \"\\t\" \"foo\" ''\n\t\n''".parseExpr.flatMap(_.typeCheck)
val res1: scala.util.Either[org.dhallj.core.DhallException,org.dhallj.core.Expr] = Left(org.dhallj.core.typechecking.TypeCheckFailure: Not an equivalence)

This is now fixed:

scala> import org.dhallj.syntax._
import org.dhallj.syntax._

scala> "assert: \"\\t\\n\" ≡ ''\n\t\n''".parseExpr.flatMap(_.typeCheck)
val res0: scala.util.Either[org.dhallj.core.DhallException,org.dhallj.core.Expr] = Right("\t\n""\t\n")

scala> "assert: \"foo\\n\" ≡ Text/replace \"\\t\" \"foo\" ''\n\t\n''".parseExpr.flatMap(_.typeCheck)
val res1: scala.util.Either[org.dhallj.core.DhallException,org.dhallj.core.Expr] = Right("foo\n""foo\n")

This bug had been around for a while, but the acceptance tests didn't catch it until this recent dhall-lang change.

Since the last release we've also bumped several dependency versions (#170), migrated from Travis CI to GitHub Actions (#169), and fixed a typo in the published metadata (#171).

This release is verified by MiMa to be backward-binary-compatible with 0.7.0-M1.

There is one known issue in this release, which was also a known issue in 0.5.0-M1, 0.6.0-M1, and 0.7.0-M1 (see the 0.5.0-M1 release notes for details), but it only affects the dhall-imports Scala module, and should not affect most usage.

Dhall for Java 0.7.0-M1

28 Oct 15:03
v0.7.0-M1
50f7b03
Compare
Choose a tag to compare
Pre-release

This release updates the Dhall language version from 18.0.0 to 19.0.0. It is compliant with the 19.0.0 release of the standard with one exception: Text/replace requires the source text to be non-abstract. This matches a change to the standard since 19.0.0 that has not been released yet.

This release also updates the SnakeYAML version for dhall-yaml from 1.26 to 1.27 and fixes a minor bug that affected the comparison of classpath imports in getFirstDiff.

There is one known issue in this release, which was also a known issue in 0.5.0-M1 and 0.6.0-M1 (see the 0.5.0-M1 release notes for details), but it only affects the dhall-imports Scala module, and should not affect most usage.

Dhall for Java 0.6.0-M1

03 Sep 11:55
v0.6.0-M1
ef562e4
Compare
Choose a tag to compare
Pre-release

This release updates the Dhall language version from 17.1.0 to 18.0.0.

As part of this update, we've added a With constructor to the abstract syntax tree for Dhall expressions, which allows us to implement the optimization discussed here. For example, the following expression previously took several seconds to parse in previous releases (and had a desugared string representation that was millions of characters long):

{a = {=}}
  with a.b = {=}
  with a.b.c = {=}
  with a.b.c.d = {=}
  with a.b.c.d.e = {=}
  with a.b.c.d.e.f = {=}
  with a.b.c.d.e.f.g = {=}
  with a.b.c.d.e.f.g.h = {=}
  with a.b.c.d.e.f.g.h.i = {=}
  with a.b.c.d.e.f.g.h.i.j = {=}

It now parses, normalizes, etc. instantaneously.

There is one known issue in this release, which was also a known issue in 0.5.0-M1 (see the release notes for details), but it only affects the dhall-imports Scala module, and should not affect most usage.

Dhall for Java 0.5.0-M1

29 Jul 14:46
v0.5.0-M1
5969b26
Compare
Choose a tag to compare
Pre-release

This release updates the Dhall language version from 17.0.0 to 17.1.0, which introduces trailing delimiters (for list literals, record literals, record types, and union types). There are no other changes, and this release is verified to be binary compatible with both the 0.3.x and 0.4.x release series.

There is one known issue in this release: one normalization acceptance test and a few tests that verify that our hashing matches dhall-haskell are failing, apparently because of a bug in the caching mechanism in dhall-imports. This bug is not new in this release, and seems to have been turned up by a rearrangement in Prelude that happened since 17.0.0. It does not affect any code that only uses dhall-core, dhall-parser, dhall-imports-mini, etc.—only the dhall-imports module is affected. It also seems unlikely to affect most normal usage. We are investigating now and will publish an 0.5.0 release once the issue is resolved.

Dhall for Java 0.4.0

15 Jun 13:40
v0.4.0
f0679ff
Compare
Choose a tag to compare

This release updates the Dhall version to 17.0.0, which supports empty quoted labels (#89) and removes Optional/build and Optional/fold (#91). It also fixes an issue with escaping for quotation marks in Text values in dhall-circe (see #41 and #93).

All artifacts in this release are verified to be binary compatible with 0.3.x (but please note that some programs may normalize or type check differently than they did with 0.3.x because of the Optional removals).

Dhall for Java 0.3.2

20 May 12:18
v0.3.2
5d805db
Compare
Choose a tag to compare

This release fixes some minor Text parsing issues involving bracketed Unicode escapes (e.g. "\u{0020}") and indentation removal in multiline strings (trailing whitespace wasn't being properly taken into account). Please see the changes in #86 for details.

This release also moves the org.dhallj.ast package from dhall-scala into its own module (dhall-ast). The dhall-scala module depends on dhall-ast, so this move won't affect dhall-scala users. It does mean that dhall-testing no longer requires a dhall-scala dependency (only dhall-ast), so users of dhall-testing may need to add an explicit dhall-scala dependency. Because there are no binary-incompatible changes and only users of a testing dependency (may) need to change their build, I decided it would be reasonable to make this change in a patch release.