Releases: travisbrown/dhallj
Dhall for Java 0.3.1
Dhall for Java 0.3.0
This release updates the supported Dhall language version from 15.0.0 to 16.0.0. All modules are guaranteed by MiMa to be binary compatible with their 0.2.0 versions.
Status
The status of this release is the same as for 0.2.0: we believe that it's 100% standard-compliant, and all of the Dhall acceptance tests are passing. There are several known issues:
- The parser cannot parse records or other nested structures more than around a thousand layers deep.
- The type checker is also not stack-safe for deeply nested records.
- There could be cases where printing expressions doesn't produce valid Dhall code.
- Fully standard-compliant import resolution requires a Scala dependency (dhall-imports).
This is still a very new project, and there are likely to be many bugs that we don't know about. Please use with care.
Bug fixes
This release includes a fix for the normalization of partially-saturated built-ins. Previously we followed dhall-haskell in reducing Natural/fold
, List/fold
, and Optional/fold
when possible, even if they were not fully saturated. We now follow the language specification in only reducing fully-saturated built-ins.
This release also includes a fix (#57) by @amesgen for a bug (#56) in the escaping of quotation marks in the YAML exporter.
JavaScript support
Since 0.2.0 we've also introduced support for building JavaScript artifacts via Google's J2CL transpiler, providing a minimal JavaScript API for Dhall parsing, normalization, and type checking in 240K of (minimized) code. We aren't currently distributing these artifacts in any way, but we're hoping to change that in the near future. Please see #58 and #64 for details.
Dhall for Java 0.2.0
This is the first release of the second release series of the Dhall for Java project.
Like the 0.1.x releases, this release supports version 15.0.0 of the Dhall language and (where relevant) the Dhall Prelude, with one exception: we don't support quoted URL paths, which were deprecated in 15.0.0 and will be removed in 17.0.0.
Status
We believe that this release is 100% standard-compliant; all of the Dhall acceptance tests are now passing.
There are several known issues:
- The parser cannot parse records or other nested structures more than around a thousand layers deep.
- The type checker is also not stack-safe for deeply nested records.
- There could be cases where printing expressions doesn't produce valid Dhall code.
- Fully standard-compliant import resolution requires a Scala dependency (dhall-imports).
Please note that we follow the current 1.31.1 release of dhall-haskell in reducing partially saturated built-ins, although this is not the behavior indicated in the language specification. We'll publish a new release with the specified behavior as soon as there's a dhall-haskell release with the fix.
This is still a very new project, and there are likely to be many bugs that we don't know about. Please use with care.
Bug fixes
This release fixes several bugs in 0.1.x:
- The parser now accepts expressions like
[]: List Natural: Type
(see #36 for details). - Newlines are now escaped properly in YAML output (see #38 and the report by @amesgen in #27).
- Local imports now support quoted paths (thanks to @TimWSpence in #35).
- The dhall-imports module no longer depends on a specific http4s client (thanks to @amesgen in #30).
- All Java modules are built with
-target 1.7
(previously only dhall-core had been; see #15 and #28).
New features
This release introduces an extension to the language specification to support local imports from the JVM classpath (see this thread and @TimWSpence's work in #32 and #33 for details).
Compatibility
This release is not guaranteed to be binary-compatible with 0.1.x, although most modules have few or no breaking changes and should be mostly source-compatible. The dhall-imports module is the only exception: its API has changed significantly (see e.g. #32, #45, #49, and #50). This release is also not guaranteed to be binary-compatible with 0.3.x or other future release series, but after the dhall-imports reworking here we don't anticipate any major API changes.
Dhall for Java 0.1.1
This is the second release of the Dhall for Java project. Please see the 0.1.0 release notes for more detailed information about the 0.1.x release series.
This release supports version 15.0.0 of the Dhall language and (where relevant) the Dhall Prelude, with one exception: we don't support quoted URL paths, which were deprecated in 15.0.0 and will be removed in 17.0.0.
Binary compatibility
All modules in this patch release are verified by MiMa to be binary-compatible with their 0.1.0 counterparts (note that this doesn't apply to dhall-cats, which is new in this release). We follow semantic versioning in not making any guarantees about binary compatibility between pre-1.0 minor versions, but we do guarantee backward binary compatibility between patch versions in each individual 0.x series.
Bug fixes
This release fixes two bugs that were introduced in 0.1.0:
- The parser accepts
#
in double-quoted text literals (thanks to @amesgen for reporting this in #21). - The JSON exporter now correctly escapes
\"
(such as you'd get fromText/show
).
Note that this second bug affected all JSON and YAML export (i.e. in dhall-core, dhall-circe, dhall-jawn, and dhall-yaml).
New features
This release also introduces one new feature and a new module:
- Duplicate imports within a single import resolution run are now cached in dhall-imports (see #18 by @TimWSpence).
- There's a new dhall-cats module (which currently only abstracts some generic stuff out of dhall-imports; see #25).
The support for duplicate import caching means we're also able to run a few more of the acceptance tests.
Dhall for Java 0.1.0
This is the first release of the Dhall for Java project.
Status
Please note that this release is not 100% standard-compliant, and has several known issues:
- The parser does not support at least one known corner case.
- The parser cannot parse records or other nested structures more than several thousand layers deep.
- The type checker is also not stack-safe for deeply nested records.
- There could be cases where printing expressions doesn't produce valid Dhall code.
- Import resolution is not provided in the core modules, and is a work in progress.
We're working on fixing these issues, but we believe that they're unlikely to affect normal usage, and we're publishing this release as a preview.
Modules
This release includes the following pure Java modules:
- dhall-core is a Java library with no dependencies that provides β- and α-normalization, type-checking, printing, CBOR encoding and decoding, and (basic) JSON export.
- dhall-parser is a Java library that depends only on dhall-core and that supports parsing strings and input streams as Dhall expressions.
- dhall-yaml is a Java library that depends only on dhall-core and SnakeYAML and that supports exporting Dhall expressions to YAML.
- dhall-imports-mini is a Java library that depends on dhall-core and dhall-parser and supports basic import resolution (no remote imports and no caching).
- dhall-prelude is a Java library that depends only on dhall-core and provides a "pre-compiled" version of the Dhall Prelude.
There are also several Scala modules that are cross-published for Scala 2.12 and 2.13:
- dhall-scala is a Scala wrapper for dhall-core, dhall-parser, and dhall-imports-mini.
- dhall-scala-codec provides type classes for converting Dhall expressions to and from Scala types.
- dhall-imports is a Scala library that depends on http4s and that provides a more complete implementation of import resolution than dhall-imports-mini.
- dhall-testing provides ScalaCheck type class instances for dhall-core's
Expr
for use in property-based tests. - dhall-circe provides conversions between Dhall expressions and Circe's JSON representation.
- dhall-jawn provides support for converting Dhall expressions to the JSON representation of any other Scala JSON library that has a Jawn facade.
- dhall-javagen takes the dhall-core representation of a Dhall expression and generates Java code that will build the dhall-core representation of that expression (used to create dhall-prelude).
Please see the general project description for more information about these modules.