released: true apache: true title: 2.3.0 date: 2019-02-26 summary: > New features, changes, and bug fixes to improve IBM DFDL compatability

source-dist: - “apache-daffodil-2.3.0-incubating-src.zip”

binary-dist: - “apache-daffodil-2.3.0-incubating-bin.tgz” - “apache-daffodil-2.3.0-incubating-bin.zip” - “apache-daffodil-2.3.0-incubating-bin.msi” - “apache-daffodil-2.3.0.incubating-1.noarch.rpm”

scala-version: 2.12


TDML Runner Cross Validation

It is now possible to use the TDML runner with tests with different DFDL implementations, including the IBM DFDL implementation. DFDL implementations must create a class named TDMLDFDLProcessorFactory and implement the abstract functions. A new implementation attribute is added to the tdml:parserTestCase and tdml:unparserTestCase elements to define which tests an implementation is known to work with.

  • {% jira 723 %} Compatibility: Cross Validation test rig for DFDL and IBM implementation
  • {% jira 2032 %} Improve Eclipse setup for cross testing

New in the TDML runner is type-aware infoset comparisons. One can now provide an xsi:type attribute in infoset elements, allowing the TDML runner to determine if two elements are logically the same even if there infoset values may differ.

  • {% jira 2026 %} TDML Runner - type-sensitive comparison

Prefixed Length Kind

Support is added for dfdl:lengthKind="prefixed" and the properties dfdl:prefixIncludesPrefixLength and dfdl:prefixLengthType.

  • {% jira 114 %} LengthKind Prefixed
  • {% jira 2035 %} prefixLengthType and element lengthUnits only needs to be the same when prefixIncludePrefixLength

Deprecation/Compatibility

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

Infoset elements with type xs:dateTime and xs:time no longer contain milliseconds precision if the milliseconds value is 0.

  • {% jira 2005 %} dateTime types without milliseconds precision should not output .000000

Previous versions of Daffodil automatically coerced the result of a DFDL expression to the expected type if they differed. This is incorrect behavior according to the DFDL specification, and now results in a warning when such coercion is required. Instead, expressions must explicitly cast the result type to the expected type. This auto-coercion + warning behavior is deprecated and will change to a schema definition error in a future release.

  • {% jira 2021 %} Daffodil expressions for properties should not auto-coerce to property type. Test BC000.
  • {% jira 1044 %} DPath not finding obvious type errors involving constants at compile time
  • {% jira 2054 %} Change coerecion errors to warnings and eventually deprecate

Elements with a type of xs:hexBinary now ignore the dfdl:byteOrder property and always parse data as if it were bigEndian. The result is that hexBinary bytes where dfdl:byteOrder="littleEndian" now appear reversed when compared to previous releases.

  • {% jira 2019 %} daf extension property to turn on/off “hexBinary with bits” lengthUnits behavior

Official support for Java 7 has been removed.

  • {% jira 2025 %} Remove OracleJDK7 from TravisCI

IBM DFDL Compatibility

Other changes and bug fixes specifically made to improve IBM DFDL compatibility:

  • {% jira 20 %} obtain and integrate/run IBM test cases (even if they all break)
  • {% jira 559 %} TDML runner needs feature to tolerate left-over data for IBM test compatibilitiy
  • {% jira 565 %} tolerate attributeFormDefault on xs:schema
  • {% jira 999 %} IBM's ISO8583 format not currently compatible with Daffodil
  • {% jira 1441 %} Implement examples for DFDLSchemas
  • {% jira 1616 %} textOutputMinLength required when it shouldn't be needed
  • {% jira 1965 %} dfdl:assert and dfdl:discriminator “message” attribute does not work for DFDL Expressions
  • {% jira 1986 %} Expression comparison of date/time w/o timezone defined causes abort
  • {% jira 1988 %} textOutputMinLength - incorrect code found by inspection
  • {% jira 1989 %} lengthKind ‘explicit’ with expression should not use minLength nor textOutputMinLength
  • {% jira 2006 %} DFDLGeneralFormat missing binaryCalendarEpoch.
  • {% jira 2015 %} Accept textStandardExponentCharacter (Old property name)
  • {% jira 2017 %} Non-portable date/time test_simple_type_properties_text_calendar_13_02
  • {% jira 2031 %} Type with xs:hexBinary requires the dfdl:binaryNumberRep property
  • {% jira 2033 %} dfdl:defineVariable defaultType does not properly convert value
  • {% jira 2063 %} DPath: long div long results in double. Should be decimal.

Improved Windows Support

Tests are updated to be compatible with Windows. A new MSI installer is now made available for releases.

  • {% jira 2047 %} Create Windows MSI Installer
  • {% jira 2051 %} Many tests are OS-dependent and fail on Windows platform
  • {% jira 2058 %} Some CLI tests do not work cleanly on the Windows platform.
  • {% jira 2066 %} Support building MSI installer in release script

Miscellaneous Changes and Bug Fixes

  • {% jira 711 %} Hefty Abort Message when using an expression (and previous elements) to set formatting properties
  • {% jira 809 %} assert with testKind pattern on simple element not executed sometimes.
  • {% jira 947 %} Warn when space separated fields start or end with a space
  • {% jira 1221 %} Abort: Invariant Broken when XPath expression moves past root
  • {% jira 1287 %} Vague “assertion failed” error when expression with whitespace used as separator
  • {% jira 1324 %} Unparse: Sequences need way to skip over optional branches
  • {% jira 1427 %} Use scala 2.11 options to clean up dead-code, unused imports, unused methods, unused local vals, etc.
  • {% jira 1440 %} JAPI/SAPI DataProcessor should be serializable
  • {% jira 1476 %} Line numbers in error messages off by size of comments above
  • {% jira 1840 %} dfdl:initiator=“%” does not cause a error or warning
  • {% jira 1946 %} Dates with out of range years will overflow to a valid value
  • {% jira 1953 %} CLI treats OutOfMemoryError as a bug
  • {% jira 1954 %} Java version greater than 1.8 cause failure
  • {% jira 1996 %} LICENSE has typo in “Open Grid Format”
  • {% jira 2002 %} javadoc for java api fails on JDK10+
  • {% jira 2010 %} binarySeconds/milliSeconds missing length check, leaking exception and mark
  • {% jira 2011 %} CLI should always use UTF-8 encoding when outputting the infoset
  • {% jira 2012 %} “charaters” typo in entity replacer error message
  • {% jira 2020 %} Infinite loop if the dfdl:hiddenGroupRef reference does not exist
  • {% jira 2022 %} infinite loops when using dfdl:property extra-long form for property values
  • {% jira 2034 %} Pool leaks if encodingErrorPolicy=“error” globally
  • {% jira 2036 %} poor diagnostic - choice with sequences as branches with all optional content.
  • {% jira 2038 %} computed elements inside choices - alignment-related abort
  • {% jira 2043 %} fn:round-half-to-even returns decimal string
  • {% jira 2044 %} Unexpected error on malformed config file
  • {% jira 2045 %} Performance degredation with hexBinary
  • {% jira 2046 %} Poor handling of missing source attribute on <xs:appinfo> element
  • {% jira 2050 %} Line numbers missing in schema definition errors
  • {% jira 2056 %} Implicit expression conversion from xs:string to xs:hexBinary causes exception
  • {% jira 2059 %} Computing the diff of large XML results in a stack overflow
  • {% jira 2060 %} Update Copyright to 2019
  • {% jira 2061 %} Prepare for 2.3.0 release
  • {% jira 2062 %} NadaParser not optimized out
  • {% jira 2065 %} Incorrectly attempting to cast signed to unsigned type
  • {% jira 2067 %} Compile dependency on JUnit4

Infrastructure and Website

  • {% jira 1997 %} SHA1 hashes are no longer desired for releases
  • {% jira 1998 %} Document the need for more memory when running tests via sbt
  • {% jira 2008 %} Create DOAP file for Daffodil
  • {% jira 2009 %} Release script should create shasums with the binary flag
  • {% jira 2016 %} Remove Java 10 from the travis CI builds, causing failed builds
  • {% jira 2039 %} update unsupported features and errata page - too many green checkmarks
  • {% jira 2053 %} No link to https://daffodil.apache.org/infoset/ on any doc pages
  • {% jira 2055 %} TDML Page - typographical error