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.