Daffodil 1.0.0 - detailed changelog
Core
- schemas inside jars on the classpath can now be linked via include/import statements
- updates to DFDL expression parser to fix numerous bugs and add features
- add date, time, constructors
- add timeZoneFromDateTime, Time, and Date functions
- add comparison operators for booleans
- improve error messages
- support empty strings in long-form properties
- throw SDE when testPattern is empty but testKind="pattern"
- throw SDE when inputValueCalc is used on optional or non-scalar elements
- improve numerous diagnostic error messages
- improve performance when writing hexBinary to the infoset
- support %ES; in delimiters to make a delimiter optional
- fix non-thread-safe code related to text numbers
- fix numerous typos and grammatical errors
- fix delimiter scanning with %WSP*;
- add tests to validate Java 8 support
- check for disallows regular expression constructs
- add ability to specify a temporary directory, currently only useful as part of TDML tests
- improve performance when processing errors are heavily used for backtracking
CLI
- allow the --schema option to use schemas inside jar files on the classpath
- only allow the --schema option to be provided once; all other schemas must come from import/include statements
- prevent the eval command from aborting if a DFDL expression failed to compile
- re-enable support for breakpoints
- add validation and auto-completion to debugger display command
API
- add new API functions to compile schema's in either File or URI form
- only allow a single schema to be provided to the API; all other schemas must come from import/include statements
- add scala API and scaladoc
TDML
- improve handling of whitespace and line/column information in TDML files
Daffodil 0.15.0 - detailed changelog
Infrastructure
- license information for dependencies is not distributed in the released files
- remove test dependencies from released files
- use a plugin to create release files rather than our own custom packager
Core
- replace Saxon with custom written DFDL Expression compiler/evaluator. This causes large performance improvements when parsing files that rely on DFDL expressions.
- temporarily remove support for unordered sequences
- remove support for query-style paths in DFDL expressions
- add dfdl namespace XPath constructor functions
- add support for the ability to serialize and deserialize parsers
CLI
- support the -P/--parser option to use a saved parser in the parse and performance subcommands
- support the save-parser subcommand
API
- changes to properly support the saving and reloading of parsers
Daffodil 0.14.0 - detailed changelog
Core
- support for bitOrder property
- support for encodingErrorPolicy="replace"
- fix bug where schemas using import/include were not properly validated, causing various error messages
- fix bug where lengthKind="explicit" in some cases incorrectly included initiators and terminators in the content length
- various performance improvements, with some parses having increased speed of ~30%
- improve error messages when invalid regular expressions are used in properties like testPattern and lengthPattern
- fix error with when runtime byteOrder expressions fail
- fix potential thread safety bugs in delimiter scanning
CLI
- decrease the amount of memory needed for performance suboption, allowing for many more input files to be used
- removed the --namespace option and modified --root option to optionally include the namespace, for example, --namespace ns --root r is now --root {ns}r
Daffodil 0.13.0 - detailed changelog
Dependencies
- upgrade to scala-2.10.4
- upgrade to sbt-0.13.2
Core
- fix non-thread-safe code in date/time/dateTime types, text numbers, delimiters, occursCountKind='expression', and expression evaluation
- use correct namespace for external variables
- improve performance for data containing only ASCII encoding
- remove broken support for lengthUnits=bytes with specified lengthKind and variable-width encodings
- replace much of the parser combinator code with DFAs specifically tailored towards DFDL requirements, giving a performance increase on delimited data
CLI
- add new 'performance' command used to execute performance tests and gather statistics
Daffodil 0.12.0 - detailed changelog
Dependencies
- upgrade to Saxon-HE-9.5.1-1
- upgrade to jdom2-2.0.5
- upgrade to scallop-0.9.4
Core
- check for unescaped curly braces in DFDL literals
- ignore dfdl:representation when type is xs:hexBinary or xs:string. Representation is assumed to be binary with xs:hexBinary, and text with xs:string
- remove defaulting of dfdl:sequenceKind to ordered. The property must now be specified
- fix bug causing the use of the wrong root element when not provided via the API or CLI
- report schema definition error when no terminator is supplied, but lengthKind='delimited' and tralingSkip > 0
- add check for alignment ambiguity
- require xs:string and xs:hexBinary to defined minOccurs/maxOccurs when lengthKind='implicit'
- when a delimiter is not found, display what was found in the error message
- check for distinctness of delimiters
- disallow whitespace in some properties. Instead the DFDL character entites such as
%SP;
must be used instead - add support for DFDL expressions in escapeCharacter and escapeEscapeCharacter
- fix incorrect parse failures when escapeEscapeCharacter was set to the empty string
API
- add new function to the Compiler
setValidateDFDLSchemas
to enable/disable DFDL schema validation, such as unique particle attribute and various facet related checks
CLI
- modify --validation-mode option to have the form
--validate [mode]
. Ifmode
is not provided, it defaults to "on". If --validate is not provided, validation defaults to "off".
Daffodil 0.11.0 - detailed changelog
Core
- add support for runtime expressions in
byteOrder
- add support for
sequenceKind="unordered"
- add support for infoset validation, three modes
- "on": check constraints and Xerces validation
- "limited": check constraints, no Xerces validation
- "off"" no validation performed
- add support for external variables
- add support for advanced text number properties:
textStandardDecimalSeparator
(static & dynamic)textStandardGroupingDeparator
(static & dynamic)textStandardExponentRep
(static & dynamic) (renamed fromtextStandardExponentCharacter
)textStandardInfinityRep
textStandardNaNRep
textStandardZeroRep
textNumberPattern
textNumberCheckPolicy
textNumberRounding
textNumberRoundingMode
textNumberRoundingIncrement
- add new DFDL expression compiler to better detect invalid expressions, primarily those related to unordered sequences
- add min/maxOccurs validation check
- require appinfo source attribute to be
"http://www.ogf.org/dfdl/"
- add support for binary and text
xs:decimal
type - improve diagnostics when a variable is used but not set
- fix bug with dynamic separators using variables
- fix SDE detection on last required element when
maxOccurs="unbounded"
and {{ occursCountKind="implicit"}} - fix
lengthKind='pattern'
to not error when a match is not found, but instead to return a length of zero - fix bug where
nonNegativeInteger
range was not checked correctly - fix bug iso-8859-1 support
Java API
- fix bug in JAPI default log writer causing logs to fail to write
CLI
- new options to enable external variables
-D, --variables
to define one or more external variables-c, --config
to define an XML file containing external variables
- new option for validation
--validation-mode=<mode>
, where mode can be "on", "off", or "limited"
- new option for the
test
subcommand-i, --info
to display more information about what a test failed. May be supplied multiple times to increase the amount of information
TDML
- ability to enable validation via a new attribute,
validation="<mode>"
, placed on a parserTestCase
API
- new function added to the DataProcessor to modify validation mode:
setValidationMode(mode)
- new
compile
methods added to to supply external variables, one method takes aMap
and one takes aFile
- new methods added to the DataProcessor to the DataProcessor to supply external variables,
setExternalVariables()
, which can accept wither aFile
,Map
, or list ofBinding
Daffodil 0.10.1 - detailed changelog
Core/ Java API
- fix bug causing duplicate elements to be added to the infoset
- fix bug where delimiters containing DFDL character entities but not starting with a DFDL character entity caused a schema definition error
Debugger
- fix bug where the debugger/tracer attempted to access a non-existent element after a parse failure, causing an abort
- limit
info parser
output to 2 lines of text - modify the tracer defaults to only output the parent node and its children, instead of the entire infoset
Daffodil 0.10.0 - detailed changelog
Core
- xs:include and xs:import now work with relative file schemaLocations
- respect minOccurs when occursCountKind="implicit"
- diagnostics improvements
- fix 7-bit USASCII with implicit alignment
- add schema definition warning if xs:appinfo source is incorrect
- fix unsignedXXX values
- improve schema definition error detection
- eliminate duplicate errors
- require that a complexType must have exactly one child, which must be a sequence, choice, or group reference
- allow spaces in pathnames to input files and schemas
- calculated values (e.g. inputValueCalc) maintain their precision in error messages
- check for invalid DFDL entities
- support for escaping percent sign
Java API
- fix character entity infoset output when using the Java API
- add support for controlling the debugger, including a trace debugger
- fix issue where multiple retrievals of the parser result caused error
TDML Runner
- can now use CDATA tags in dfdl:infoset for cases where characters like < and > are in the expected output
- replaceDFDLEntities attribute for documentPart element now defaults to false
CLI
- new --trace option to display verbose output of Daffodil parsing
- the --debug option can now take a file containing a list of debugger commands (e.g. --debug=cmds.txt)
- add check for not yet implemented features
- fix bug where order of multiple --schema options was not maintained
Debugger
- add 'history' command to display the list of past commands
- replace 'undisplay' command with 'delete display'
- 'delete' command requires 'breakpoint' or 'display'
- 'break' command does not require the 'element.' prefix anymore