Apache Daffodil 2.4.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.4.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

Explicit Length Choices

Support is added for the property dfdl:choiceLengthKind="explicit" and dfdl:choiceLength. Previously, Daffodil ignored the choiceLengthKind property, always acting as if it had the value of implicit. The property is now required to be defined in scope for all choices.

Extension Namespace

A new dfdlx namespace (http://www.ogf.org/dfdl/dfdl-1.0/extensions) was created to support Daffodil extensions to the DFDL specification. The existing daf namespace is deprecated and all uses should be switched to dfdlx. Some properties, such as the layering extension properties are also moved to this namespace with backwards compatibility supported for now. Extensions should be considered experimental–support may change or be removed in a future release.

Extension: Empty Element Parse Policy [Proposal]

A new DFDL property named dfdlx:emptyElementParsePolicy is added to control the behavior of empty string and hexBinary elements. This property allows one to switch between different behaviors for empty elements which correspond to currently described behavior in the DFDL v1.0 specification document, and an alternate behavior planned for future inclusion in the DFDL v1.0 specification which also increase compatibility with IBM DFDL.

Extension: Enumeration Values [Proposal]

New DFDL properties and functions are added to support translation of enumeration values.

Extension: Ranged Direct Dispatch [Proposal]

A new property named dfdlx:choiceBranchKeyRanges is added to support direct dispatch based on a range of numeric values.

Extension: Lookahead Expression Function [Proposal]

A new DFDL expression function named dfdlx:lookAhead() is added to support a simple way to consider data that occurs at a future point in the bitstream.

Improved DFDL Schema Validation

Daffodil now does a better job at validating attribute-, short-, and element-form DFDL properties, which will now result in an error if unknown properties are used, mostly commonly caused by typos. Additionally, if DFDL properties are ignored (e.g. dfdl:textPattern is provided when dfdl:lengthKind is not "pattern"), Daffodil will now provide a warning.


The following changes have been made which affect compatibility with past releases:

DFDL Schema Compatibility

Many changes and bug fixes specifically made to improve compatibility with more DFDL schemas. With these fixes and features, the schemas HL7-v2.7, IBM4690-TLOG, and EDIFACT now work with Daffodil.

Infrastructure and Website

Miscellaneous Changes and Bug Fixes