Apache Daffodil 2.1.0


Javadoc | Scaladoc

Get Release



The above release files should be verified using the PGP signatures and the project release KEYS. See verification instructions for a description of using the PGP and KEYS files for verification. A SHA512 checksum is also provided as an alternative verification method.

libraryDependencies += "org.apache.daffodil" %% "daffodil-sapi" % "2.1.0"
Create the file /etc/yum.repos.d/apache-daffodil.repo with the following content:
name=Apache Daffodil
Run the folllowing command:
sudo dnf install apache-daffodil

Release Notes

Daffodil 2.1.0 is the first release of Daffodil as an Apache incubator project. This release includes relicensing the source to Apache v2, changing the namespace to org.apache.daffodil, and numerous bug fixes and DFDL feature additions to support more DFDL schemas.

This release contains changes which break compatibility with past releases. Please see the deprecation / compatibility notes section for more information.

Packed Decimal

Added support for binary packed decimal data types. In addition to standard, the dfdl:binaryNumberRep property now also accepts values of bcd, packed, and ibm4690Packed to support Binary Coded Decimal, IBM 390 Packed Decimal, and IBM 4690 Packed Decimal, respectively. The dfdl:binaryDecimalVirtualPoint property applies for the appropriate types. Also implemented are dfdl:binaryPackedSignCodes and dfdl:binaryNumberCheckPolicy to configure the valid nibble values when dfdl:binaryNumberRep is packed.

Apache Incubation Support

Multiple changes were made to support the move to the Apache incubator. This includes changes to the source directory structure, relicensing files to Apache v2, changing the project package to org.apache.daffodil, updating the build infrastructure to SBT 1.x, and adding TravisCI continuous integration support.

Ambiguous Path Expressions

Previously, ambiguous path expressions (i.e. path expressions that could potentially reference multiple non-array elements of the same name) were forbidden and caused a schema definition error at schema compilation time. As of 2.1.0, such ambiguities are detected at compile time but are now only considered schema definition warnings. However, if a path expression ever evaluates to more than one non-array element at runtime, it will then be considered an error and cause a runtime schema definition error. This change allows for schemas that appear to have ambiguous path expressions, but in only ever evaluate to a single element in practice.

TDML Runner Enhancements

Changes were made to the TDML runner to support an embedded defaultConfig option and to verify expected schema definition warnings.

BitOrder/ByteOrder/Encoding Refactoring

The way bitOrder, byteOrder, and encoding consistency was checked required fairly complicated logic at schema compilation time. Not only was this logic difficult to validate, which led to bugs, it also contributed to slow schema compilation times. This complex logic was removed and replaced with an efficient mechanism for runtime validation. This reduced code complexity, fixerd some bugs, and will facilitate future performance optimizations during schema compilation.

XML Output

The XML infoset output (via the XMLTextInfosetOutputter) now writes an XML declaration <?xml version="1.0" ... ?> at the beginning of output. It also ensures output is flushed at the end of writing, which should prevent issues users reported of receiving only partial data.

Miscellaneous Bug Fixes


As of 2.1.0, the following changes have been made which affect compatibility with past releases:

Package Organization Change

Now that Daffodil is an Apache incubator project, the package organization has been changed from edu.illinois.ncsa to org.apache.daffodil. Developers using the Daffodil Java and Scala API will need to update their source code and SBT/Maven configurations to use the new organization.

Daffodil Extension daf XML Namespace Change

The Daffodil extension daf XML namespace has been modified to represent the move to Apache, changing from urn:ogf:dfdl:2013:imp:opensource.ncsa.illinois.edu:2012:ext to urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext. Backwards compatibility is maintained for schemas using the old daf namespace, though it should be considered deprecated. All future Daffodil extensions will only be supported in the new namespace, so it is recommended that one update schemas to use the new namespace.

Deprecation of built-in-formats.xsd

The built-in-formats.xsd file is a schema that defines a set defaults for a wide array of DFDL properties. This file was intended for use only during testing, but was errantly made available for use in real schemas. This was an oversight, and so use of this schema will now result in a deprecation warning. Instead, one should import/include org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd and set the dfdl:format ref value to GeneralFormat to get a reasonable set of default property values or define all necessary properties within a schema.