Contact us | Site map

XQSharp Change Log

1.5.0

New features

  • XML version (1.0 or 1.1) can now be specified in the static context.
  • Results can now be serialized as XML 1.1.
  • Query plans can now be output as XML.

Changes

  • Mathematical functions due to be included in the next version of XPath and XQuery Functions and Operators have been moved into the math namespace.
  • Rules for determining the validity of NCNames and QNames have been updated to reflect changes introduced in the 5th edition of XML 1.0.
  • The types of external parameters can be specified via the static context.
  • Improved efficiency of variables which are only evaluated once.
  • Improved performance of user defined functions.
  • Improved performance of functions which recurse on a subsequence of one of their arguments.
  • Small for loops will be unrolled.
  • Prevented optimizer from optimizing away runtime errors in some circumstances.
  • Added handling for MIME types in the DocumentSet. This is required for correct behaviour of the XSLT document function.
  • Introduced a new optimization level (OptimizationLevel.Specialization. This enables potentially expensive function specialization. This can be selected using -O4 with the command line tool.

Bug fixes

  • In some circumstances, namespace declarations could be erroneously omitted.
  • Fixed nested XML Schema validation.
  • Fixed output of empty XHTML elements during serialization.
  • Many small fixes.

See the breaking changes in this version.

1.4.0

  • Modules of functions can now be written in .NET and used in XQuery programs and XPath expressions.
  • Intermediate (constructed) nodes are now serialized directly into XdmDocuments, rather than building temporary trees. This should lead to improved performance of queries performing further processing on constructed nodes.
  • Some more improvements to join analysis - left outer joins and group-by expressions are spotted (and hence optimized) more often.
  • Typeswitch expressions are now more efficient when the argument is a single item.
  • XPathAtomicValue.ToString() now returns the value cast to a string.
  • Many small fixes.

See the breaking changes in this version.

1.3.0

  • The XQSharp DLL can now be precompiled with ngen. Previously ngen would crash.
  • Improved unboxed evaluation, especially for aggregate functions.
  • Many small performance improvements.
  • Internal changes in preparation for compiling queries to dynamic methods

1.2.0

  • Queries can now be evaluated directly to a serializer, avoiding building an intermediate representation.
  • Push-based evaluation has been implemented for all expressions, and is used for all expressions that are determined to be strict.
  • Added the (# xqsharp:eager #) pragma to force eager evaluation.
  • import schema now ignores location hints if the namespace is already statically available.
  • Imported schemas that fail to compile are no longer added to the available schema set.
  • Fixed an exception when evaluating treat as empty-sequence() in some circumstances, and improved optimization of type constraints.
  • Corrected behaviour of MoveToId on XPathNavigator produced for constructed nodes.
  • Updated liveness analysis to fix problems when using partially evaluated lazy variables in join operations.
  • Avoided distinct-doc-order for unions like (@*|node()).
  • Minor improvements to error messages.
  • Many small performance improvements.

1.1.0

  • Completely new serialization implementation.
    • Serialization interface now much closer to System.Xml.XmlWriter. There are some breaking API changes in the XQSharp.Serialization namespace.
    • A new serialization method has been added which allows for serialization of Canonical XML 1.0.
    • XmlWriter instances can be created with the full set of serialization settings.
    • Some new serialization parameters have been added.
  • XQSharp now only requires .NET Framework 2.0, rather than 3.5.
  • Added XQSharp extension methods for .NET Framework 3.5 to give a simple way of executing XPath 2.0 expressions.
  • Added some more constructors to XdmDocument, to match XPathDocument.
  • Removed IXPathNavigable overloads for methods taking XPathItem, as this was causing calls with XPathNavigator to be ambiguous.
  • Reverse axes were previously being cached and reversed. This is now skipped if the results are not needed in document order - eg. for /ancestor::*[1]
  • Improved optimization of fn:data applied to constructed nodes.
  • Conformance to latest errata regarding in-scope schema types from modules.
  • Bug fixes:
    • XQuery parsing changed to reflect erratum regarding the leading-lone-slash constraint.
    • The order comparison of navigators over XdmDocument instances was incorrect for namespace nodes.
    • The fn:base-uri, fn:data and fn:node-name functions behaved incorrectly for namespace node arguments.
    • The parsing of URI ports was incorrect in AnyUri.
    • The UserInfo property on AnyUri was truncating the first character
    • Empty document nodes were incorrectly causing spaces to be inserted between sequences of atomic values when constructing an element's content
    • XPathNavigator instances were sometimes not being cloned when evaluating a query to a single node, leading to the returned navigator pointing to the wrong node.
    • Fixed some places where the static types of expressions were not being correctly updated during optimization, causing a NotSupportedException or ArgumentNullException at runtime.
    • In some cases function specialization was causing fn:subsequence to throw a NotSupportedException at runtime.
    • The optimized form of fn:sum($x to $y) was producing xs:decimal values instead of xs:integer values.
    • fn:distinct-values was missing an evaluator to produce XPathItem for upstream functions, leading to a NotSupportedException at runtime.
    • The in-scope namespaces of a constructed element did not include the empty prefix in some situations.
    • The fn:element-with-id function gave incorrect results for schema-defined union types including xs:ID.

1.0.2

  • Set default type checking mode to optimistic, as per documentation.
  • Fixed compatibility with XmlDocument
    • Fixed NullReferenceException when using data() caused by XmlDocument returning an IXmlSchemaInfo instance with null SchemaType.
    • Fixed infinite loop caused by XPathNodeIterators over XmlDocuments not consistantly returning false after the end of the node set.
  • Fixed the XQuery version declaration for cultures where '.' is not the decimal point.
  • Fixed normalization rules of general comparisons as per erratum XQ.E18.
  • For increased performance, the command line tool now runs in x86 mode by default.

1.0.1

First full release.