1Zorba - The XQuery Processor
2
3version 2.7
4
5New Features:
6  * XQuery 3.0 simple map operator http://www.w3.org/TR/xquery-30/#id-map-operator
7  * Copy function added to the node module
8  * Allow prolog variables to be referenced before they are declared (XQuery 3.0 feature)
9  * Module http://www.jsoniq.org/modules/function-library with handy JSONiq functions
10  * jn:parse-json can parse multiple top-level JSON items
11  * New semantics of null for comparison and arithmetics operations
12  * xml:parse (fragment parsing) now allows for a DOCTYPE declaration at the
13    beginning of the XML document (requested in bug #1016606).
14  * Roundtripping of JSON items has been moved from the serializer to encoding functions.
15  * Added uuid to public API.
16  * Best-effort serialization of atomic values in JSON items.
17  * Positional pagination support for index probes
18  * Recognize the {http://www.zorba-xquery.com/extensions}no-copy pragma to avoid
19    copying nodes before insertion into a collection.
20  * Added createUntypedAtomic to API's ItemFactory.
21  * new xqDoc feature; reporting collections and indexes
22  * new xqDoc function parameter to enable/disable xqDoc generation of certain
23    components
24  * Adding new external module read-pdf, it converts PDF documents to text or rendered images.
25
26Optimizations:
27  * Improved memory management for compiler expressions (no more ref counting)
28  * Extended optimization rules (for variable inlining/elimination and positional
29    predicate rewrite) to general flwor expressions.
30  * Early optimization of positional predicates to subsequence expressions: now
31    done at translation time, if possible.
32  * For non-mutable global variables, assign a type based on their initializing expr.
33  * Use char* instead of zstring as the hashmap key in json objects
34  * Removed document-order sorting after the index value probe functions.
35  * Optimize positional predicates involving inequality (convert them to subsequence)
36  * Optimize positional predicate that is in CNF with other predicates.
37  * Optimized runtime group iterator based on latest group-by semantics.
38  * Removed two unnecessary steps from optimizer.
39
40Bug Fixes/Other Changes:
41  * Fixed bug #1006960 (taking construction mode into account during no-copy rule)
42  * Fixed bug #950621 (Removed two-arg version of fn:parse-xml(); use XML module
43    function xml:parse() instead)
44  * Fixed bug #867227 (Improved error message for missing commas)
45  * Fixed memory leak during runtime group-by"
46  * Fixed bug #1024033 and #1023170 (segfaults in parse-xml:parse())
47  * Fixed bug #898792 (Dynamically computed strings can now be cast to xs:QName)
48  * Fixed bug in determining the IsId property of constructed attribute nodes
49  * Fixed bug #1034990 (text serialization with jsoniq fails)
50  * Fixed bugs #899364 and 899363 (throw XQST0103 in case of non-distinct window
51    variables)
52  * Fixed bug #923686 (implicitly declare global context size and context position
53    variables in main module and provide api function to assign values to these
54    variables)
55  * Fixed bug #899366 (enforce the type declaration of a window variable)
56  * Fixed bug #1034942 (improper variable inlining inside general flwor expr)
57  * Fixed bug #1024892 (index declaration references udf declared after the index)
58  * Fixed bug #1038410 (Memory leaks in parser, trace iterator, and general index)
59  * Fixed bug #1046411 (automatic boxing of multi-item sequence appearing as the
60    value of an object pair)
61  * Fixed bug #1046410 (automatic conversion to null of empty sequence appearing
62    as the value of an object pair)
63  * Fixed bug #1039488 (inserting more than one pair at once in a JSON object)
64  * Fixed bug #1042840 (QName pool free-list corruption)
65  * Fixed bug #866984 (better error message for an eval error)
66  * Fixed bug #1047538 (SourceFinder::findLocalNodeSources missing json expressions)
67  * Fixed bug #932374 (FOTS fn:matches failing tests)
68  * Fixed #1052383 (accessing context item in eval expr)
69  * Fixed bug #1046559 (dynamic resolution between function invocation and jsoniq
70    navigation)
71  * Fixed bug #932884 (HTML and XHTML serialization of empty elements)
72  * Fixed bug #1046415 (pair name cast to string)
73  * Fixed bug #1045902 (file:last-modified returns current date time)
74  * Fixed bug #1043976 (compiler warning in serializer code)
75  * Fixed bug #866994 (a better error message when collection iterator not open)
76  * Fixed bug #1039254 (allow empty sequence as position value in positional LET
77    var iterator)
78
79
80version 2.6
81
82New Features:
83  * Include first-class support for JSON data by implementing the JSONiq spec
84  - see http://jsoniq.org/ for more information. This feature is enabled by default.
85  * Implemented the new EQName syntax (use Q{namespace}local instead of "namespace":local)
86  * New function Item::isSeekable for streamable content (xs:string and xs:base64Binary)
87  * Implemented the latest W3C specification for the group by clause (backwards incompatible)
88  * New ft:tokenize-nodes() function to full-text module
89  * New XQuery 3.0 function fn:parse-xml-fragment#1
90  * New ItemFactory function that allows creating dateTime items without timezone
91  * Added support for transient maps to the
92    http://www.zorba-xquery.com/modules/store/data-structures/unordered-map module.
93  * Added support for fragments to fn:path
94  * Positional pagination support for collections
95  * http://www.zorba-xquery.com/modules/archive module for creating,
96    reading, and updating various (compressed) archives (e.g. zip, tar.gz,
97    or tar.bz2)
98  * Incremental maintenance for general indexes
99  * New function in the http://www.zorba-xquery.com/modules/store/static/indexes/dml
100    module which returns the value of all keys contained in an index
101
102Optimizations:
103  * Optimization of comparison operations
104  * Tighter hoisting of expressions (also fixes bug #967428)
105  * Optimized hash sets used by fn:distinct-values and nodes-distinct
106  * Optimized hash function used for nodes (also fixes bug #1010051)
107  * Rewrite of plan serializer internals, resulting in big performance improvement
108  * Avoid treat expr for checking that the value of a non-external
109    global variable conforms to the type declaration of the variable
110  * Streaming execution for tumbling windows (also fixes bug #1010051)
111
112Bug Fixes/Other Changes:
113  * Fixed bug #1025622 (Incorrect JSON serialization of supplementary plane code points)
114  * Fixed bug #1016606 (DOCTYPE in the input of the parse-fragment function)
115  * Fixed bug #1002993 (bug during revalidation after update; improper condition
116    for calling TypeOps::get_atomic_type_code() from
117    SchemaValidatorImpl::isPossibleSimpleContentRevalImpl())
118  * Fixed bug #867357 (Improved parser error messages)
119  * Fixed bug #1026379 ("q" flag for fn:replace() is ignored)
120  * Fixed bug #932314 (non-comparable values must be treated as distinct by
121    fn:distinct-values)
122  * Fixed bug #1015580 (Add base64_streambuf / replace inefficient base64 code)
123  * Fixed bug #1022557 (subsequence function applied on window variable)
124  * Fixed bug #9910884 (raise XUST0001 in trycatch with mixed updating and simple clauses)
125  * Fixed bug #854506 (ugly type error messages) and partial fix for bug #867008
126  * Fixed bug #1008082 (bug in transform expr when a copy var is not used anywhere)
127  * Fixed bug #898066 (Stringstream & fn:trace)
128  * Fixed numbering of items in fn:trace starts with one
129  * Fixed bug #1003023$ (optimizer problems due to common subexpression after
130    var folding into if-then-else)
131  * Fixed bug #1006166 (disabling 2 functions with the same qname)
132  * Fixed bug #960083 (improper error handling of NaN comparisons)
133  * Fixed bug #878508 (JsonML serialization not escaping characters)
134  * The XML plan serialization format is not supported anymore
135
136
137version 2.5
138
139New Features:
140  * New XQuery 3.0 functions
141    - fn:available-environment-variables
142    - fn:environment-variables
143    - fn:uri-collection
144    - fn:unparsed-text
145    - fn:unparsed-text-available
146    - fn:has-children#0
147    - fn:nilled#0
148    - fn:path
149  * Added base64:decode#2 function which also does transcoding
150  * Extended API for Python, Java, PHP and Ruby
151  * Added JVM classpath to zorbacmd and to Zorba API
152  * Added full-text module
153  * Added support for NO_ICU (to not use ICU for unicode processing)
154  * Added XQJ support
155  * Added CollectionManager and DocumentManager support for XQJ
156  * Added new API EntityKind SOME_CONTENT
157  * Added new API StreamResource which is able to specify whether a
158    stream is seekable or not.
159  * Added new functions in the fetch module and the StaticContext to fetch
160    resources as binary
161  * Added non-core schema-tools module for getting sample XMLSchema from
162    XML instances and sample XML instances from XMLSchema.
163
164Optimizations:
165  * optimized insertion into a collection (don't copy it if the node was
166    created by an element constructor and is not used anywhere else in the query)
167  * Fixed performance problem with the findNodeSources function of the no-copy rule
168
169Bug Fixes/Other Changes:
170  * Fixed bug #867170 (Variables declared in Prolog are Overwritten inside the query)
171  * Fixed bug #1001463 (type not available during computation of function caching)
172  * Fixed bug #1002867 (resulting base64 in http-client is wrong)
173  * Fixed bugs #905028 (Allow to set base URI to undefined)
174  * Fixed bugs #931501 and #866987 (improved error messages for fn:format-number()
175  * fn:format-number raises FODF1310 instead of XTDE1310
176  * Fixed bug 955170 (Catch clause with URILiteral-based wilcard NameTest)
177  * Fixed bug #862971 (no error upon duplicate function declarations)
178  * Fixed bug 955135 (err:XQDY0044 not caught by try-catch expressions)
179  * Fixed bug #986075 (encountering flwor expr with no clauses)
180  * Fixed bug #967864 (var substitution did not update theFreeVars property)
181  * Fixed bug #891650 (context size var not always declared within path expr)
182  * Fixed bug #948879 (--uri-path doesn't work with fetch:content())
183  * Fixed bug in MarkNodeCopyProps rule (static cast to replace_expr without chaing the expr kind first)
184  * Fixed bug in window iterator (binding the end vars in the output tuple stream)
185  * Fixed bug #866547 (protect index-join rule from general flwor)
186  * Fixed bug #867253 (cdml:delete-nodes should only remove root nodes)
187  * Fixed bug #967428 (do not hoist index creation outside a try-catch)
188  * Fixed bug #872234 (prevent a rewritting to take place in case of sequential expr)
189  * Fixed bug #966706 (key uniqueness of index not enforced during incremental refresh)
190  * Fixed bug #906494 (default compile with D_FILE_OFFSET_BITS=64)
191  * Fixed bug #988412 (date:current-dateTime daylight saving)
192  * Fixed bug #912586, #912593 and #912722 (assertion failures with lax validation)
193  * Fixed bug #986377 (do not apply any updates on collection if it is to be truncated)
194  * Fixed bug #921458 (file:read-text-lines() blocking)
195  * Fixed bug #981405 (do not hoist expr containing try-catch variables out of the associated try-catch expression)
196  * Fixed bug #996084 (crash in Streamable*Item with file module)
197  * Fixed bug #947627 (throw XQST0099 if more than one declarations of context item type in same module)
198  * Fixed bug #980526 (no-copy rule bug due to global var being set in "distant" udf)
199  * Fixed bug #949910 (has-children may be invoked on all nodes)
200  * Fixed Bug #933490 (Error ItemFactoryImpl::createBase64Binary with istream)
201  * Fixed bug #867112 (Diagnostic Handler was not working on external APIs)
202  * Fixed bug #857842 (Assertion failed with simple content element with comments)
203  * Fixed bug #928626 (no setting classpath in xsl-fo module)
204
205version 2.2
206
207New Features:
208  * Add --compile-plan (-c) and --execute-plan (-e) options to zorba command line.
209  * Add XQuery 3.0 concat operator (http://www.w3.org/TR/xquery-30/#id-string-concat-expr)
210  * New URI module providing percent-decoding functions.
211  * The core parse-xml module is now able to parse input files in a streaming mode. A number of new options have also been added.
212  * LibXml2 version 2.7.0 or higher is now required in order to build Zorba.
213  * Added index management function to the C++ api's StaticCollectionManager.
214  * Added createDayTimeDuration, createYearMonthDuration, createDocumentNode, createCommentNode, createPiNode to api's ItemFactory.
215  * Fixed bug #905050 (setting and getting the context item type via the c++ api).
216  * Added split function to the string module that allows for streamable tokenization but doesn't have regular expression
217  * Add new XQuery interface for the PHP bindings.
218  * Added two API methods StaticContext::getFunctions to introspect the functions of a static context
219  * Added API method Item::getNamespaceBindings().
220  * Added a transcoding streambuffer to the API which allows transcoding arbitrary encodings
221    from and to UTF-8
222  * file:read-text is able to handle arbitrary encodings (fixes bug #867159)
223  * http:send-request is able to handle arbitrary encodings
224  * Added API method StaticContext::getNamespaceBindings() (see bug #905035)
225  * New version of the JSON converter module in the core of Zorba (no external dependencies anymore)
226  * Added truncate function to the collection modules for efficient deletion of all nodes in a collection.
227
228
229Optimization:
230  * No-copy optimization: avoids copying nodes during node-constructor expressions.
231  * Added external function annotations %ann:propagates-input-nodes and
232    %ann:must-copy-input-nodes to be used by the no-copy optimization.
233  * Caching of results for recursive functions with atomic parameter and return types.
234  * Added %ann:cache and %ann:no-cache to enable or disable caching of results of functions with atomic parameter and return types.
235  * Types-related optimizations for runtime operators (comparisons, FnBoolean, Or, And,
236    Compare, instance-of, cast, castable, treat, promote).
237  * More efficient implementation for base64Binary items
238  * Preallocate and reuse temp sequence iterator for LetVarITerator
239    and CtxVarIterator.
240  * Enhanced push-down of positional predicate into LetVarITerator
241    and CtxVarIterator.
242  * Change the implementation of the free-vars annotation and got rid
243    of the annotations map in expressions.
244
245Bug Fixes/Other Changes:
246  * Fixed bug 923015 (clone() not implemented for full-text expressions)
247  * Fixed bug 917923 (bug in copying outer var values into the eval dynamic context)
248  * Fixed bug 867509 (Can not handle largest xs:unsignedLong values)
249  * Fixed bug 924063 (sentence is incorrectly incremented when token characters end without sentence terminator)
250  * Fixed bug 909126 (bug in cloning of var_expr)
251  * Fixed bug 928631 (external builtin function were not executed in the module they
252    were declared)
253  * Fixed bug in destruction of exit_catcher_expr
254  * Fixed bug #867024 (error messages)
255  * Fixed bug #957580 (stream read failure in StringToCodepointsIteartor)
256  * Fixed bug #911585 (management of variables during eval)
257  * Fixed bug #866423 (fn:empty and fn:exists iterators must reset their input in
258    case of early-out)
259  * Fixed bug #955574 (http-client "hangs" if following a POST request)
260  * Fixed bug #945241 (StaticCollectionManager::declaredIndexes() and temporary indexes)
261  * Fixed bug #872288 (reset recursive flag during node rename)
262  * Fixed bug #905041 (allow for the default element and function namespaces to be
263    set multiple times via the c++ api).
264  * Fixed bug #907872 (segfault when returning an input ItemSequence from an external function).
265  * Fixed bug in codegen: do not create a materialize clause if one exists already
266    support.
267  * Fixed bug involving positional var and groupby
268  * Fixed bug #867266 (do not hoist updating expressions)
269  * Fixed bug #867022 (added location and params to some XPTY0004 errors)
270  * zerr is not predeclared anymore to be http://www.zorba-xquery.com/errors
271  * Fixed bug #917981 (disallow declaring same module twice).
272  * Deprecated StaticContext:getNamespaceURIByPrefix()
273  * Fixed bug #943788 (streamable string is not seekable)
274  * Fixed bug #921624 (slow queries with bogus example.com schema URIs)
275  * Fixed bug #918211 (xqueryx fulltext w3c conformance generation)
276  * Fixed bug #918157 (Add XQFTTS to validation queue)
277  * Fixed bug with unversioned modules with C++ external functions
278  * Fixed bug #912579 (validate-in-place on non-root elements)
279  * Fixed bug #891209 (validation with xsi:type returns untyped)
280  * Fixed bug #952829 (Nondeterministic annotation doesn't seem to be checked)
281  * Fixed bug #951772 (Comment node crashes serialization)
282  * Fixed bug #945241 (StaticCollectionManager::declaredIndexes() and temporary indexes)
283
284
285version 2.1
286
287New Features:
288  * New node-position module. This module allows to obtain a representation of a node position, which
289    can be used to assess structural relationships with other nodes.
290  * New node-reference module. References can be obtained for any node, and
291	different nodes cannot have the same identifier.
292  * Custom Full-text thesaurus using Zorba URI resolver mechanism.
293  * Modified C++ API to add isSequential, getExternalVariables, isBoundContextItem and
294  isBoundExternalVariable Functions
295  * Collection allows to retrieve information about the type
296  and the annotations of a static collection.
297  * Implemented the probe-index-range-value for general indexes
298  * Added ExternalFunctionParameter class to be registered in the DynamicContext
299  * New module for compiling and executing XQueries from XQuery (xqxq)
300  * External functions are allowed to be updating (i.e. return a pending update list)
301
302Optimization:
303  * Optimization for positioned sequence access (e.g. $x[$x[1]] where $x is a
304  sequence of integers)
305  * Optimization for count(collection()) expressions
306  * Optimization of the fn:substring function in the case when its $start and $length arguments
307  are integers
308
309Bug Fixes/Other Changes:
310  * Fixed bug #3403291 (build for Fedora 15)
311  * Fixed bug #3397293 (Incorrect XQueryX error message)
312  * Fixed bug #3398637 (Nested element constructors cause loss of namespace bindings)
313  * Fixed bug #3401592 (Undo of Create Collection doesn't work)
314  * Fixed bug #3404689 (assignment problem in flwor)
315  * Fix for bug #3404450 (testdriver_mt problem: caching and validation of docs)
316  * Fixed installation bug to not install the .so for test modules
317  * Fixed bug #3390410 (Adding a node to a collection causes out of bound in vector)
318  * Fixed bug #3406200 (node types were not being moved to new tree during node detach)
319  * Fixed bug #3406191 (Namespace bindings lost after update due to bug in node detach)
320  * Fixed bug #3290122 (ZDST0003 needs collection name)
321  * Fixed bug #3406272 (merging of adjacent text nodes must be done after all
322    updates have been applied).
323  * Don't raise warnings for unknown annotations.
324  * Fixed bug #3409344 (during detach, if the node being detached is the root of
325    its tree, it should be detached from the tree as well; otherwise memory
326    corruption will occur)
327  * Fixed bug # (Should not destroy the parent of a node that is being detached
328    before the detach is done).
329  * Added const qualifier to StaticContext::getAuditEvent()
330  * Fixed bug #3408181 (available-collection() returns undeclared collections)
331  * Fixed bug #859465 (Fatal error if a PUL contains two deactivate IC primitives)
332  * Fixed bug #859467 (Fatal error if a PUL contains two activate Foreign Key primitives)
333  * Fixed bug #859468 (Fatal error if a PUL contains two activate Simple IC primitives)
334  * Fixed bug #859522 (Fatal error if a PUL contains two delete document primitives)
335  * Fixed bug #859968 (Using put on an attribute produces an invalid XDM instance and may cause segmentation faults)
336  * Fixed bug #855314 (should not fold a constant expr that returns an error item)
337  * Fixed bug when parsing a document with a base-uri attribute.
338  * Fixed bug #863320 (Sentence is incorrectly incremented when token characters end without sentence terminator)
339  * Fixed bug #863730 (static delete-node* functions don't raise ZDDY0012)
340  * Implemented the probe-index-range-value for general indexes
341  * Removed ZSTR0005 and ZSTR0006 error codes
342  * Fixed bug #867662 ("nullptr" warning)
343  * Fixed bug #868258 (Assertion failure with two delete collection)
344  * Fixed bug #871623 and #871629 (assertion failures with insertions in dynamic collections)
345  * Fixed bug #867262 (allow reuse of iterator over ExtFuncArgItemSequence)
346  * Fixed bug #869024 (segmentation fault with node-reference)
347  * Fixed bug #869025 (segmentation fault with node-reference)
348  * New node-reference module. References can be obtained for any node, and
349	different nodes cannot have the same identifier.
350  * Fixed bug #872697  (segmentation fault with validation of NMTOKENS)
351  * General index cannot be declared as unique if the type of its key is
352    xs:anyAtomicType or xs:untypedAtomic.
353  * Added undo for node revalidation
354  * Optimization for count(collection()) expressions
355  * Fixed bug #872796  (validate-in-place can interfere with other update primitives)
356  * Fixed bug #872799 (validate-in-place can set incorrect types)
357  * Fixed bug #855715 (Invalid escaped characters in regex not caught)
358  * Fixed bug #868325 (fn:analyze-string fails with some recursive subgroups)
359  * Fixed bug #872697 (segmentation fault with validation of NMTOKENS)
360  * General index cannot be declared as unique if the type of its key is
361  xs:anyAtomicType or xs:untypedAtomic.
362  * Added undo for node revalidation
363  * Optimization for count(collection()) expressions
364  * Fixed bug #867133 (SWIG PHP build failure on Mac OSX)
365  * Fixed bug #872796 (validate-in-place can interfere with other update primitives)
366  * Fixed bug #872799 (validate-in-place can set incorrect types)
367  * Fixed bug #872850 (Serialization of Tumbling Window For fails)
368  * Fixed bug #855715 (Invalid escaped characters in regex not caught)
369  * Fixed bug #862089 (Split binary/xq install directories for modules) by
370  splitting "module path" into separate URI and Library paths
371  * New node-position module. This module allows to obtain a representation of a node position, which
372    can be used to assess structural relationships with other nodes.
373  * Fixed bug #872502 (validation of the JSON module xqdoc fails)
374  * Fixed bug #897619 (testdriver_mt can not run the XQueryX tests)
375  * Fixed bug #867107 (xqdoc dependency to zorba is wrong)
376  * Fixed bug #897616 (Fix the generation of the XQFTTS report results for
377  W3C)
378
379version 2.0.3
380  * Fixed bug #867662 ("nullptr" warning)
381  * documentation improvements
382
383version 2.0.2
384  * Fixed bug #3401971 (node-by-reference on dynamic collections)
385  * documentation improvements
386  * installer improvements
387  * Fixed bug #3403291 (build for Fedora 15)
388  * Don't install the .so for test modules
389  * Fix for running ctest on Windows
390
391version 2.0.1
392
393  * Custom Full-text stemming.
394  * Custom Full-text tokenization.
395  * Fixed scripting bug where apply statement was considered a sequential expr even if the source expr was non-updating and non-sequential.
396  * Fixed bug #3394400 (Element replacement, really unexpected result)
397  * Fixed bug #3394588 (Unexpected error during pul undo)
398  * Fixed bugs #3398511 and #3398552 with "make install"
399  * Fixed bug #3398521 for compiling with ZORBA_NO_XMLSCHEMA
400
401version 2.0
402  * Zorba 2.0 is a major rewrite of previous versions. It doesn't claim to
403    preserve backwards compatibility with any 1.X version.
404    Host language API changes have been made to the following components:
405    - External functions API
406    - XmlDataManager
407    - Error reporting
408    - Debugger API
409    XQuery language and API changes have been made to the following components:
410    - XQuery Scripting Extension
411    - Function APIs
412    - XQuery Data Definition Facility
413    - XQuery modules and module versioning
414    - Changes to conform with the latest XQuery 3.0
415    - Namespaces of annotations, errors, collations.
416  * In addition to host language API and XQuery language improvements,
417    plenty of bug fixes and optimizations have been made.
418
419version 1.4
420  * added a datetime library module with nondeterministic functions
421  * new nondeterministic read functions in the http-client module
422  * the http-client's send-request function accepts a non-validated request parameter
423  * fixed an issue with a wrong static context being used in eval queries (see bug item #2979317)
424  * added XQuery 1.1 Switch expressions (only available in 1.1 processing mode)
425  * added the fn:parse function from XQuery Functions and Operators 1.1
426  * improved error reporting for parser errors
427  * improved error reporting for errors regarding sequential expressions
428  * bug fixes
429    - accept relative URIs in xs:anyURI constructors (#2988209)
430    - direct element/attribute construction (#2999765)
431    - deep-equal (#2999772)
432    - schema-attribute(*) is parsed as a function call instead of a node test (#2993286)
433    - handling xml:base attributes during doc loading (#3013096)
434    - fixed build with CMake 2.6.0 on Debian Lenny
435    - try-catch error if XQuery version < 1.1 (#3005344)
436    - W3C test suite bugs CastableAs649 and CastableAs650 (#2999777)
437    - assertion in StatelessExtFunctionCallIterator (#3012651)
438    - http-client return type handling for (*+xml and text/html)
439  * optimization of fn:subsequence
440  * new xqDoc function (xqdoc-content) taking a documented module as string
441  * new xqDoc feature; reporting functions invoked from within a particular function
442  * xqDoc schema change; name element for functions got an arity attribute
443  * added a tidy library module that provides functions to tidy an HTML string
444    and returns a valid XHTML document node (http://www.zorba-xquery.com/modules/tidy)
445  * added a schema library module that provides XML schema related functions (e.g. schema-type)
446    (http://www.zorba-xquery.com/modules/schema)
447  * added a node reference library module that provides functions to retrieve the URI
448    of a node and vice versa (http://www.zorba-xquery.com/modules/reference)
449  * added a hmac module (http://www.zorba-xquery.com/modules/security/hmac)
450    that provides an sha1 function (e.g. used in OAuth)
451  * added a random module (http://www.zorba-xquery.com/modules/random)
452    that provides fuctions for generating (pseudo-)random integers and UUIDs.
453
454version 1.2
455  * more introspection functions (e.g. in-scope-element and in-scope-attribute)
456  * first prototype for higher order functions from XQuery 1.1
457  * JSON module in (com/zorba-xquery/www/modules/json)
458  * huge performance improvements
459  * added an Atom schema to the build-in schemas
460  * register a callback function in the static context that is called
461    if a collection or index declaration is processed (compiled)
462  * nondeterministic (instead of sequential) functions in the file module
463  * reference counting the store (de)initialization
464  * many bug fixes; for example
465    - compile with Xerces 3.1
466    - loading external functions (prefix problem)
467    - plan serializer fixes
468    - serialization fixes
469    - base64 decoder
470    - loading documents with general entities
471    - EXPATH http-client fixes
472    - not hoisting nondeterministic functions
473    - scripting related fixes
474    - unicode related fixes (e.g. for parameters to the doc function)
475    - StaticContext::loadProlog fix
476    - SAX serialization fix
477
478version 1.0
479  * Changes in the C++ API
480    * Removed ResultIterator class. All public API methods use simply
481      Iterator.
482    * Added a new class named ExternalModule.
483      This class must be used for registering external functions.
484      This change makes the external function API incompatible with
485      previous releases.
486    * Loading pre-compiled queries (using loadExecutionPlan) requires to pass
487      a SerializationCallback which is used for
488      retrieving registered uri resolvers or trace streams.
489      Moreover, the callback is used for retrieving ExternalModules
490      which have been used when compiling the query.
491    * Changed the append function in zorba::String to const. Now, the
492      function does not change the String itself, but returns a new
493      String. Furgthermore zorba::String::append can now handle other
494      zorba::String objects - not only const char*. Also the operators
495      + and += are defined on zorba::String.
496  * Other language bindings (Java, PHP, python, ruby) also now use
497    simply Iterator; ResultIterator removed.
498  * XQC (C language binding) brought up-to-date with latest revision
499    of that spec (https://xqc.sourceforge.net).
500  * Resolving of modules is now enhanced by the so called "Zorba
501    Module Path".  Moreover, multiple ModuleURIResolvers can be
502    registered in one StaticContext.  See the documentation for more
503    information.
504  * Added static and dynamic context introspection modules.
505  * Added the excel library to the built-in modules.
506    Implemented the most used excel functions.
507  * Added the math library to the built-in modules (the namespace has
508    changed to http://www.zorba-xquery.com/modules/math)
509  * Pass the Static- and DynamicContext as parameter to the evaluate function
510    of external functions.
511  * The XQuery class got a setTimeout option that allows the user to set a
512    maximum running time of a particular query execution.
513  * The StatelessExternalFunction is now non-pure by default. There is
514    a new subclass called PureStatelessExternalFunction which should
515    be used instead. PureStatelessExternalFunctions don't have access
516    to the Static- and DynamicContext.
517  * Renamed XQuery::serialize to XQuery::execute. The new method also
518    implements the functionality of the XQuery::applyUpdates method
519    (which was removed).
520  * Added the serialize library to the built-in modules. The function
521    util:serialize-to-string has been removed.
522  * The DynamicContext can be used to pass arbitrary name-value pairs
523    to the evaluate method of external functions.
524  * Implemented CSV to XML converters. See csv2xml.xq module.
525    You can convert back and forth between CSV files and XML
526    or formated text files and XML.
527  * Changes in the email functionnality
528    * implemented smtp:send functions as external functions
529    * added support for MIME messages (Text in character sets other
530      than ASCII, Non-text attachments, Message bodies with multiple
531      parts, Header information in non-ASCII character sets)
532  * most of the runtime iterators and functions are generated
533    (see https://sourceforge.net/apps/mediawiki/zorba/index.php?title=Creating_New_Runtime_Iterators_and_Functions)
534  * improved exception messages raised by the serializer
535  * Json is now able to parse Unicode messages
536  * improved functionality for java, php, python and ruby bindings.
537
538version 0.9.8-rev1 (2009.09.22)
539  * bug fixes
540    * fixed a crash caused by converting long integers (> 1024 digits)
541      to string
542    * the compile-only check reports the URI of the encapsulating
543      entity in it's error report (used for XQDT semantic checking)
544    * fixed 'for $x in () return $x/test' to return the empty sequence
545      instead of raising a static error
546    * fixed build using Xerces-C 3.0.1
547    * fixed build for Mac OS X 10.6 (Snow Leopard)
548    * improved error reporting in the command line utility
549    * improved detection of the installed version of Xerces-C (raise
550      an error if a wrong version is installed)
551
552version 0.9.8 (2009.08.26)
553  * More XQuery Scripting Features
554    * default initialization for external variables
555    * block local variables
556  * XQuery 1.1
557    * Support for the "validation as TypeName" feature
558    * Changed the try/catch syntax as specified in XQuery 1.1 (except
559      the try- and catch expressions are ExprSingle and not Expr).
560  * Examples for the Java API
561  * Function library
562  * creating PDFs using XSL Formatting Objects (requires Java)
563  * util:parse function
564  * converter functions to/from JSON or JsonML and XML
565  * function for sending simple text emails
566  * the util:tidy function returns a node instead of a string.
567  * XQDoc module http://www.zorba-xquery.com/zorba/xqdoc-functions
568  * Added a loadProlog function to the static context.
569  * Added support for XQueryX and XQueryX Update
570  * Added compiled query persistence to the C++ API
571    (XQuery::loadExecutionPlan() and XQuery::saveExecutionPlan())
572  * Added a printPlan function to the XQuery class of the API.
573  * Added new option in the Zorba command line utility: compile-only,
574    parse-only, lib-module, print-errors-as-xml.
575  * Added two plan printing function (printPlanAsXML and
576    printPlanAsDOT) to the SWIG generated APIs.
577  * Implemented 'declare option': options are set in the static context.
578  * fn:trace can be disabled by setting the option
579    QName("http://www.zorba-xquery.org/option", "trace") to "disable".
580  * Changed the scripting syntax of the exit expression from 'exit
581    with' to 'exit returning'.This is due to an ambiguity in the
582    grammar (see http://www.w3.org/Bugs/Public/show_bug.cgi?id=6852
583    for more information).
584  * Added accessor functions for node items to the Item class in the
585    API (i.e. getChildren, getAttributes, and getNodeName).
586  * Added a UserException to the API which is raised if the user makes
587    a call to the fn:error function.
588  * UTF8 support for the lexer
589  * bug fixes and performance improvements
590
591version 0.9.5 (2008.02.17)
592  * Unified the Tidy and Rest API's
593  * Added new sinatures to zorba-util:tidy and zorba-util:tdoc that
594    allow setting of tidy functions
595  * Added Schema imports using target namespace or location hints
596  * Added StaticContext::findFunctions and StaticContext::disableFunciton
597  * Added Functions for collections
598  * Windows packages include a zorba_simplestore.dll
599  * Improved error messages for regular expression processing
600  * Added functions to return an item instead of xs:string
601  * Added a new signature to zorba-util:random in order to be able to call
602    random within a loop and get different numbers each time.
603  * Corrected the types of some functions/operators (YM_DURATION or
604    DT_DURATION instead of DURATION).
605  * Now possible to pass empty sequence as collection URI.
606  * Now cURL is set to follow an infinite number of redirects.
607  * Added validate after update
608  * Fixed schema files without target namespace.
609  * Fixed notation cast.
610  * Added list and union item types to type manager cache
611  * Added validation tests for schema substitution groups
612  * Added message when error during update test driver.
613  * Added partial support for scripting (XQSE)
614  * Added support "default element namespace" schema imports
615  * Added support variable initializers that refer to forward variable
616    declarations.
617  * Various bug fixes and performance enhancements.
618
619version 0.9.4 (2008.10.06)
620  * added General FLWOR (GFLWOR)
621    * added Windowing functionality
622    * added ability to perform "outer" joins in the FLWOR with outer
623      for clauses
624    * output numbering added to FLWOR
625  * Added HTTP support to module import
626  * fn:parse() is implemented as per the XQuery proposal
627  * Extended api to register user-defined URI resolvers for documents,
628    collections, schemas, and modules
629  * boost dependencies removed
630  * Added xquery debugging support
631  * Added a store implementation based on Windows DOM.
632  * Added functions to make calls to REST based web services through XQuery
633  * Added PHP bindings to zorba
634  * Added tidy support to convert web pages into xhtml.
635  * Added XML Schema support for validation
636  * Added the ability to revalidate XML data with respect to a Schema
637    after applying updates
638
639version 0.9.21-4303 (2008.06.26):
640  * fixed installation problem for python and ruby language bindings
641  * fixed some valgrind reported memory problems
642  * other minor bug fixes and performance improvements
643
644version 0.9.2-4251 (2008.06.19):
645  * Module support (as in the XQuery 1.0 W3C recommendation)
646  * Removed boost shared pointers from the API
647  * Performance improvements and bug fixes
648  * C API (zorbac.h)
649  * Rudimentary SWIG interface for generating other language bindings
650    (i.e. Ruby and Python)
651  * Added support for running multiple queries in the command line utility
652  * group by (as in the evolving W3C XQuery 1.1 recommendation)
653  * try-catch (as in the evolving W3C recommendation)
654  * eval facility to dynamically evaluate a string and execute it as a query
655  * some math functions (e.g. sqrt, sin, cos, etc)
656  * Basic schema validation (without post schema validation and
657    substitution groups)
658  * Stabilized the Store API & build the simplestore as a separate library
659
660version 0.9.1 (2008.04.30):
661  * Initial release supporting
662    * XQuery 1.0 and XPath 2.0 (as in the W3C recommendation)
663      except modules and only limited support for schema validation
664    * XQuery Update Facility 1.0 (as in the evolving W3C recommendation)
665    * An In-Memory (replaceable) XML store
666      (implements the XQuery Data Model (XDM) W3C recommendation)
667  * This release 0.9 passes 97.6% of the W3C tests of XQuery 1.0 test suite
668    and 99.4% of the XQuery Update Facility test suite.
669