title: 3.6.0 release: final apache: true date: 2023-11-03 summary: > Miscellanous bug fixes

source-dist: - “apache-daffodil-3.6.0-src.zip”

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

scala-version: 2.12

This release focused primarily on bug fixes. A number of changes resulted in deprecation or backwards incompatible changes. See the Deprecation/Compatibility section for more details.

Miscellaneous Bug Fixes

  • {% jira 541 %} TDML Runner needs to restrict text used for error comparison
  • {% jira 1200 %} Really long path names in diagnostic messages make them hard to read
  • {% jira 1264 %} Interactive debugger support for unparsing
  • {% jira 2072 %} Poor reporting of schema errors when used as library
  • {% jira 2211 %} Poor handling when dfdlx:repType is a built-in xsd type
  • {% jira 2402 %} TDML language should support xsi:type annotation of infoset for double and float, perhaps more.
  • {% jira 2599 %} Integration tests fail with non en_US LANG
  • {% jira 2612 %} Integration tests fail with non UTF-8 LANG
  • {% jira 2694 %} CLI -t trace option doesn't work for daffodil test commands in TDML
  • {% jira 2707 %} Integration tests fail when DAFFODIL_HOME path includes spaces
  • {% jira 2727 %} KEYS file contains deprecated digest algorithm, RPM key import failures
  • {% jira 2728 %} Missing layer plugin causes abort “this is a bug”
  • {% jira 2732 %} trace output has namespace prefix binding clutter
  • {% jira 2738 %} Support indirect setting of dfdlx:repType/repValues
  • {% jira 2757 %} Java 19 incompatibility floating point - 3 tests fail
  • {% jira 2809 %} dfdlx:repType on an immediate simpleType is ignored
  • {% jira 2828 %} Allow relative paths across schemas as schemaLocation for include/import
  • {% jira 2829 %} Prepare for 3.6.0 development
  • {% jira 2833 %} CLI Trace not visible to expectit functions
  • {% jira 2834 %} Fix NumberformatException message in hexCharToValue
  • {% jira 2837 %} Full/Custom validation removes the ability to change blob attributes
  • {% jira 2839 %} Cast from xs:double/xs:float to xs:unsignedLong fails with ClassCastException error
  • {% jira 2852 %} VariableMap copies during suspensions cause performance degradation
  • {% jira 2853 %} Add schema validation code to C generator
  • {% jira 2854 %} Release Daffodil 3.6.0
  • {% jira 2857 %} Different prefixes for same namespace fails to compile with dfdlx:repType
  • {% jira 2858 %} Whitepace not allowed around DFDL List of String Literal

Deprecation/Compatibility

  • dfdlx:repType can no longer reference primitive types (e.g. xs:int). Instead, a global simple type definition should be created which has a base of the primitive type.

    {% jira 2211 %}

  • The dfdlx:repType property now must reference a type with an underlying primitive type derived from xs:integer, and elements that define dfdlx:repType must have an underlying primitive type of xs:string

    {% jira 2738 %} {% jira 2809 %}

  • dfdlx:repType, dfdlx:repValues, and dfdlx:repValueRanges are now ignored if referenced on xs:simpleTypes that are referenced from xs:unions. Instead, unions should be combined into a single simple type with the combined representation type and values properties.

    {% jira 2211 %}

  • The dfdlx:inputTypeCalc and dfdlx:outputTypeCalc properties and functions have been removed. Instead, one should use dfdlx:repType with dfdlx:repValues and dfdlx:repValueRanges.

    {% jira 2211 %}

  • Resolving relative import/include schemaLocation paths absolutely is now deprecated and will output a warning, and support may eventually be removed. For example, a common import is:

    <import schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd" />
    

    Although this path is relative, previous versions of Daffodil allowed this to be found on the classpath absolutely, as if it started with a slash. This behavior is deprecated. If a schemaLocation is expected to be found on the classpath and not relative to the importing file, then it should start with a slash, for example:

    <import schemaLocation="/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd" />
    

    Daffodil still supports the old behavior and will look up relative schemaLocation paths absolutely, but will output a schema definition warning. Future versions of Daffodil may change this to an error.

    {% jira 2828 %}

  • Support for importing edu/illinois/ncsa/daffodil/xsd/built-in-formats.xsd has been removed. Schemas should instead import /org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd and change dfdl:format to reference GeneralFormat

    {% jira 2828 %}

  • Assert.usage() now throws a UsageException instead of an Abort on usage errors. Compiler.forLanguage(), DataProcessor.parse(), DataProcessor.unparse() and ProcessorFactor.onPath(), when isError is true, throws a UsageError, which wraps an IllegalStateException, unlike before where it threw an Abort.

    {% jira 2072 %}

Dependency Changes

The following dependencies have been added or updated:

Core

  • Apache Commons IO 2.14.0 (update)
  • FasterXML Jackson Core 2.15.3 (update)
  • Scala XML 2.2.0 (update)

CLI

  • Exificient 1.0.7 (update)
  • Jansi 2.4.1 (update)
  • Scallop 5.0.0 (update)

Schematron Validator

  • Saxon-HE 12.3 (update)

Logging

  • SLF4J API 2.0.9 (update)

Changes to Transitive Dependencies

  • JAXB API 2.2.11 (removed, no longer required by Exificient)
  • JAXB Core Implementation 2.2.11 (removed, no longer required by Exificient)
  • JAXB Runtime 2.2.11 (removed, no longer required by Exificient)
  • XML Resolver & Data 5.2.0 (update, used by Saxon-HE)