released: true apache: true title: 2.1.0 date: 2018-05-14 summary: > Apache incubation/relicensing, packed decimal support, ambiguous expression support, refactoring for future performance improvements
source-dist: - “apache-daffodil-2.1.0-incubating-src.zip”
binary-dist: - “apache-daffodil-2.1.0-incubating-bin.tgz” - “apache-daffodil-2.1.0-incubating-bin.zip” - “apache-daffodil-2.1.0.incubating-1.noarch.rpm”
scala-version: 2.11
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.
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
.
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.
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.
Changes were made to the TDML runner to support an embedded defaultConfig option and to verify expected schema definition warnings.
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.
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.
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.