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.
Numerous changes were made to improve streaming and reduce memory usage during parse and unparse operations.
The most visible change is the addition of a new SAX API for both parsing and
unparsing. A new
DaffodilParseXMLReader can be used to parse data and provide
infoset events to a SAX
ContentHandler. And a new
can be used to unparse SAX events from a SAX
XMLReader. See the Javadoc and
Scaladoc for examples of creating and using the new SAX Daffodil objects.
For both the new SAX API or original Daffodil API, infoset events are now created during parsing, rather than waiting for a parse to complete. As infoset events are streamed out while parsing, or read in during unparsing, Daffodil now removes them from the internal infoset representation, reducing overall memory usage in many cases.
Lastly, while unparsing, Daffodil must sometimes buffer data due to circumstances such as alignment, length calculations, and forward looking expressions. Previous versions of Daffodil would not attempt to resolve these issues until the end of an unparse. Daffodil now makes attempts to resolve these issues during the unparse process, allowing for the buffered data to be written to the unparse output stream, ultimately reducing memory usage.
Multiple changes were also made to support files larger than 4GB behave as expected, including those with blobs.
A new experimental API is added to allow traversing the Daffodil internal DFDL Schema Object Model, enabling API users the ability to build an alternative schema object model, sometimes needed to allow native infoset integrate with external tools.
withExternalVariables function is added to the Java API that accepts a Java
AbstractMap. Previously, the only available function used a Scala
is difficult to use from a Java application.
Multiple changes were made to improve ambiguous error messages, or to provide new error checks or warnings for behavior that may be unintuitive to users.
|[DAFFODIL-2122] default=”0||1” causes exception for xs:boolean types|
Daffodil no longer provides support for Scala 2.11.x. Scala API users must upgrade to Scala 2.12.
dfdl:fillByte property is now always required in DFDL Schemas, even if it may
not be needed. This change does not affect any schemas that use
for providing default arguments, since this provides the property. Schemas that do
not specify the
fillByte property now result in a Schema Definition Error.
withExternalVariables function in the Java API that accepts a Scala
has been deprecated. When using the Java API, the same function name that accepts a
AbstractMap should be used instead.