What's New in version 9.5.1:

  • Performance tweaks, minor bug fixes.

What's New in version 9.5:


  • the client IP address behind a proxy is added to the logs
  • stack traces in the error message can now be suppressed
  • the default error code has been changed from 400 to 500
  • error messages are more user-friendly now (#1708)
  • content negotiation was improved (#1991)
  • inline arguments of called function (#1982)


  • Utility: new functions for sequences, arrays and maps
  • Higher-Order Functions: hof:drop-while
  • Jobs: More options for job intervals


  • revised scoring propagation (all items will take less memory)
  • default function inlining limit reduced from 100 to 50
  • axis path rewritings, better typing (#1910, #1976, #1979)
  • better typing (#1906, #1908, #1909, #1944, #1945)
  • faster data()/string() checks (#1975)
  • rewrite map:merge to map:put (#1969)
  • rewrite order by to fn:sort (#1966)
  • rewrite group by to fn:distinct-values (#1932)
  • rewrite quantifiers to FLWOR expressions (#1961)
  • optimizations of arithmetic expressions (#1938, #1972)
  • optimizations of lookup operator (#1929, #1984)
  • optimizations of counts (#1965, #1973, #1974)
  • optimizations of regular lists (#1919, #1924)
  • optimizations of switch expression (#1920)
  • optimizations of instance of (#1939)
  • distinct values (#1930, #1967)
  • positional checks (#1937)
  • existence checks (#1971)

What's New in version 9.4.6:

  • Performance tweaks, minor bug fixes

What's New in version 9.4.5:

  • Minor bug fixes.

What's New in version 9.4.3:

  • New compile-time optimizations and performance tweaks

What's New in version 9.3.3:

  • Minor bug fixes, performance tweaks, new query optimizations

What's New in version 9.3.2:

  • Minor bug fixes, numerous performance tweaks

What's New in version 9.3.1:

  • Minor bug fixes and performance tweaks

What's New in version 9.3:


  • seamless streaming of custom responses to the client
  • Request Module: bind attributes to current request
  • better support for the OPTIONS and HEAD methods
  • enforce premature HTTP response with web:error
  • optional GZIP compression of HTTP responses
  • trace output is now stored in database logs
  • server-side forwarding with web:forward


  • GUI: project view: skip directories with .ignore file
  • GUI: project view: do now follow symbolic links
  • DBA: user panel updated to show user info
  • DBA: faster processing of log entries


  • Hot fix for replacing single documents with namespaces
  • Improved XQuery processing of binary resources
  • ADDCACHE: faster caching of single documents
  • WITHDB: less locking when using fn:doc


  • User:info/user:update-info: process user-specific data
  • Db:open-id, db:open-pre: support for multiple ids
  • File:descendants: return descendant file paths
  • Inspect:type: return type of a value as string
  • Db:alter-backup: rename database backups
  • Xsl:transform: support for catalog files


  • Merge of adjacent/redundant steps in paths and predicates
  • Removal of redundant switch, typeswitch and catch clauses
  • Interruption of side-effecting code (Files Modul etc.)
  • Fn:count: pre-evaluation of zero-or-one arguments
  • Faster processing of alternative steps: a/(b,c)
  • Rewriting of paths to simple map expressions
  • Inlining of values in simple map expressions
  • Flattening of nested simple map expressions
  • Rewriting of lists to union expressions
  • Removal of superfluous predicates

What's New in version 9.2.4:

  • Minor bug fixes
  • Preview implementations of new 9.3 features

What's New in version 9.2.3:

  • Numerous query optimization tweaks (paths, simple maps, try/catch)
  • Minor bug fixes

What's New in version 9.2.1:

  • GUI: faster and smarter parsing of project files
  • RESTXQ: custom reponses are now sent as streams
  • Performance tweaks (static typing: typeswitch, instance of)
  • Minor bug fixes

What's New in version 9.2:

XQuery performance:

  • Comparisons will more often be rewritten to hash joins
  • Optimized access to subsequences and single sequence items
  • Consistent propagation of static types to evaluation results
  • Improved static typing of function items (maps, arrays)
  • More aggressive pre-evaluation at compile time

Storage performance:

  • Large databases will be opened faster
  • Regular storage offset will be computed at runtime

General XQuery features:

  • No need to import basex-api modules anymore!
  • Archive Module: archive:create-from, new options
  • Database Module: directory-based access via db:dir
  • Profiling Module: new functions (prof:gc, prof:runtime)
  • Validation Module: assign XSD validation features
  • WebSocket Module: query scheduling via ws:eval
  • Utility Module: various new helper functions
  • XSLT Module: support for XML Catalogs (thank you Liam)

New options:

  • RESTXQERRORS: Suppress parsing errors at runtime
  • FULLPLAN: comprehensive query plan information

Fulltext feautres:

  • Stemmer for Arabic texts added

User interfaces:

  • GUI: better support for latest JDK versions (incl. OpenJDK)
  • DBA: revised search features in log panel

What's New in version 9.1.1:


  • Comprehensive rewritings of positional predicates and functions
  • Higher-order functions: Improved type inference
  • Improved rewriting of context-based and/or nested predicates

Java Bindings:

  • Faster access to and evaluation of Java functions and variables
  • Improved pre-selection of function candidates at compile time
  • Better error messages (incl. function arity and similar names)


  • Settings: user-defined pattern for ignoring log entries
  • Login: pass on URL query strings

Minor improvements:

  • Import: detect epub files as ZIP archives
  • Digest Authentication: No delay after first request
  • GUI, Preferences: user-defined choice of XML suffixes

What's New in version 9.0.2:

Critical bug fixes:

  • XQuery: Node ordering of mixed database/fragment instances
  • XQuery: Index rewritings of paths with nested positional predicates


  • WebDAV: Much faster locking of database resources
  • XQuery: Enable ENFORCEINDEX for variable predicate arguments
  • GUI: Larger interaction components, unified font sizes

Minor Bug fixes:

  • DBA: Suppress menu on login page
  • Commands: Nested evaluation with variable bindings
  • XQuery: Static typing of lookup expressions

What's New in version 9.0.1:

Critical bug fixes:

  • Storage: Short strings with extended Unicode characters fixed
  • XQuery: Nested path optimizations reenabled (e.g. in functions)
  • XQuery: map:merge, size computation fixed
  • XQuery: node ordering across multiple database instances fixed


  • GUI: Better Java 9 support (DPI scaling, font rendering)
  • XQuery, collections: faster document root tests
  • New R client. Thanks Ben Engbers!

Minor Bug fixes:

  • XQuery: Allow interruption of tail-call function calls
  • XQuery, HTTP parsing of content-type parameters
  • XQuery, restrict rewriting of filter to path expression
  • GUI: progress feedback when creating databases via double-click

What's New in version 9.0:


  • Comprehensive extensions in the internal XQuery optimizer framework
  • Dynamic hash joins rewritings of general comparisons
  • Register query jobs as persistent services
  • Process very large CSV files via the new CSV 'xquery' format
  • Update Module: higher-order functions for performing updates
  • Unified static typing, including maps, arrays and function items
  • COPYNODE: Lightweight copying of XML fragments
  • ENFORCEINDEX: Enforce rewriting for index access


  • Improved database compression (short strings, whitespaces)


  • Permissions layer: Unified definition of RESTXQ access patterns
  • RESTXQ: Full support for client- and server-side quality factors
  • REST: Run BaseX command scripts
  • Web server upgrade to Jetty 9


  • Combined packaging mechanism (XQuery and Java)
  • Java Packaging: Bundling of additional libraries


  • Revised detection and configuration of BaseX home directory
  • Windows executable: better detection of Java libraries
  • Improved editing and evaluation of XQuery modules
  • Revised file, session and job management


  • NEW: convert:binary-to-integers: return binary data as octets
  • NEW: db:option: return value of system option
  • NEW: fetch:xml-binary: retrieve XML from binary data
  • NEW: jobs:invoke: schedule job based on input file
  • NEW: out:cr: return carriage return
  • NEW: proc:fork: execute command in separate thread
  • NEW: prof:track: measure runtime and memory
  • NEW: util:replicate: return results multiple times
  • NEW: IGNOREHOSTNAME (certificates verification)
  • UPDATE: convert:integers-to-(base64|hex) renamed
  • UPDATE: file:read-text-lines: new $offset/$length arguments
  • UPDATE: fn:put: specify serialization parameters
  • UPDATE: http:send-request: support for compressed responses
  • UPDATE: proc:system, new input option: pass on stdin
  • UPDATE: prof:time, prof:memory: signatures updated
  • UPDATE: sql:execute(-prepared) returns update count
  • UPDATE: update:output(-cache) renamed; before: db:output(-cache)
  • UPDATE: web:response-header: status/message attributes
  • UPDATE: xquery:eval: new pass option (pass on error info)
  • UPDATE: xquery:eval-update renamed; before: xquery:update
  • UPDATE: xquery:parse(-uri): base-uri option added
  • UPDATE: xslt:transform(-text): cache XSLT transformer
  • UPDATE: JSON Module, 'xquery' format renamed; before: 'map'
  • UPDATE: Lazy Module renamed; before: Streaming Module
  • UPDATE: GUI: serialization parameters for result output
  • UPDATE: XQuery: numeric errors replaced with descriptive names
  • UPDATE: BaseXServer option -c accepts URLs and file references

What's New in version 8.0.2:


  • Better support for concurrent read and write operations


  • Speed up wildcard queries without wildcards
  • XQUnit: compare error codes as QNames
  • Fix: process each single flwor clause when removing variables
  • Fix: consider xml:space='preserve' during serialization


  • Fix: consider case when pinning databases


  • Fix: digest authentication, correct quoting

What's New in version 8.0.1:


  • Faster execution of single, index-based results
  • Iterative evaluation of steps with multiple predicates

Minor bug fixes:

  • WebDAV locking
  • Archive Module
  • Adaptive serialization of arrays and maps
  • Digest Authentication
  • Save command-line history

What's New in version 7.9:


  • Unit testing has been improved a lot. All test functions will now be evaluated separately; this way, updates can be performed within test.
  • with the new TEST command, all test modules in a specified directory can be evaluated.
  • tests can be invoked from within the GUI editor and project view.
  • on command-line, the -t flag can be used for the same purpose.


  • Custom HTTP methods can be defined via 'rest:method
  • Error handling has been improved and aligned with try/catch


  • Database Module: parsing options for db:create/db:add


  • The 'run' operation allows execution of server-side command scripts

What's New in version 7.8.1:


  • Editor, Ctrl-H: filter by opened file type and selected text
  • XML Parsing: support for TAR & TGZ


  • XQuery errors: function not found -> suggest similar one
  • Commands: improved parsing (allow more whitespaces)
  • French translation


  • XQuery Update: nested transform expressions
  • XQuery: always return boolean when calling doc-available()
  • XQuery: disallow impossible casts before removing variables
  • Binary Module: iterative evaluation of bin:octets()
  • Commands, REPO INSTALL: install packages in same directory
  • CSV/JSON: serialization of underscores