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.
Daffodil 2.2.0 is the second release of Daffodil as an Apache incubator project. This release includes numerous bug fixes and DFDL feature additions to support more DFDL schemas.
A experimental DFDL language feature known as layering has been added to Daffodil. This feature has been discussed for future inclusion in the DFDL standard by the DFDL working group. The syntax of the properties is subject to some change in the future. The layering feature is described at Data Layering.
Daffodil’s parser API has been enhanced to allow parsing of unbounded streams of messages, symmetric with the Daffodil unparser. The API enables calling the
parse method repeatedly on the same data stream so as to parse one data element (typically a message, but could be any DFDL-described element) at a time from the stream. In prior releases, Daffodil had only a parse API that expected data for the parse to consume the entire data stream.
The Command Line Interface (CLI) now has options (
--stream) for driving the parser in streaming mode.
Daffodil now supports both Scala 2.11 and Scala 2.12. Most testing is now done on Scala 2.12 with only occasional regression checking done on Scala 2.11. Support for Scala 2.11 will eventually be elminated in a future release.
In addition, Daffodil depends on a number of other libraries. These have been updated to using the latest available versions of those libraries.
Support for the
zoned has been added along with the related DFDL properties that specify zoned-number format.
Also, for the
dfdl:binaryCalendarRep property, in addition to
standard, values of
ibm4690Packed to support Binary Coded Decimal, IBM 390
Packed Decimal, and IBM 4690 Packed Decimal, respectively are supported.
As of 2.2.0, the following changes have been made which affect compatibility with past releases:
This DFDL schema is used as a starting point by many schemas. Some changes to it can lead to incompatibilities.
dfdl:calendarTimeZone - was
"" (empty string, meaning unknown time zone). This change often results in Infoset data that does not have the UTC time zone suffix
+00:00 appended to it unless a time-zone was specified in the parsed data. In prior releases this suffix would have generally been appended, which was surprising, and deemed incorrect by users.
dfdl:occursCountKind - was
implicit the number of element occurrences that will be parsed ends when
maxOccurs is reached. This is generally desirable, especially for optional elements (
maxOccurs="1) where users found it unintuitive that such an element could end up as an array of more than one occurrance. In prior releases the
parsed, which instructs Daffodil to continue parsing as many instances as it can find, and to stop accumulating them only when it is unable to successfully parse another.
dfdl:textNumberRoundingMode - was
roundHalfEven. This change should be compatible, and was necessary due to an update of the underlying ICU libraries used by Daffodil. The behavior of that library with respect to rounding modes was fixed, allowing us to change the rounding mode to the more reasonable
Prior Daffodil releases had a very small limit on the number of repeating occurrences an element could have, 1024, which was not being checked in some cases. It is now checked in all cases; however, with this checking it was discovered that many schemas break on this small limit. The limit was changed to Int.MaxValue (maximum positive value of a 32-bit integer), and must be tuned downward by users who wish to catch situations where there are an excessive number of repeats much larger than is reasonable for the data described by their DFDL schema. In addition, rather than a Parse Error, which causes backtracking, exceeding this tuned value will result in a runtime Schema Definition Error - which halts processing. If desired, in a DFDL Schema, a Parse Error can still be obtained by way of a
dfdl:assert statement on the recurring element which tests that the
dfdl:occursIndex() is less than the desired maximum bound.
Some schemas produce large number of schema definition warnings, and it is desirable to tolerate, and suppress these. The name of the tunable is now
suppressSchemaDefinitionWarnings. Prior releases used
suppressWarnings which was inconsistent with the API-level access names/symbols for the same concept.
The TDML Runner was enhanced to eliminate some false-positive test situations. Specifically it now requires
controlled selections on round-trip testing. The TDML
roundTrip attributes can now take on the values
threePass. The values
true are also accepted for compatibility and correspond to
This change reduces the number of false-positive tests which should be failing, but which pass because multiple-passes were used automatically.
Please see the Test Data Markup Language (TDML) page.