Main Page » Changelog
Changelog
The following features have been added, updated, or removed in BaseX 13:
Startup
- Updated:
Switched to Java 21
Graphical User Interface
- Added:
Editor: Code completion, function signatures, marked occurrences, code formatting, go to declaration, Markdown highlighting; word wrapping can be disabled; files changed on disk are reloaded. - Updated:
Introduction: The Map view is disabled by default. - Added:
Project View: Search and replace in all files, with backup and undo. - Added:
FlatLaf: Support for the FlatLaf library. - Updated:
Editor: Faster rendering of the editor and text panels. - Updated:
Search and Replace: Count hits, improved interaction, scroll bar integration. - Updated:
Look and Feel: Scaling relative to the operating system. - Updated:
Startup: Single GUI instance per project directory. - Updated:
Introduction: Panel sizes and arrangement are preserved across restarts; the menu bar was restructured. - Removed:
Introduction: Fullscreen mode.
Command-Line Options
- Added:
-Lto start a database server instance in addition (HTTP server).
Commands
- Updated:
PUT, BINARY PUT: Replace or ignore new resources. - Updated:
INFO: Librariessection. - Updated:
INSPECT: Optional database name, additional checks, new output format. - Updated:
OPTIMIZE: Incrementally updated indexes are compacted, unchanged indexes are skipped.
Options
- Added:
FTMIXED: Index the string values of elements with mixed content. - Added:
THESINDEX: Index the thesaurus documents of a database. - Added:
AUTHALGORITHMS: Configure the password algorithms for which hashes are stored. - Added:
TRUSTEXTERNAL: Default for thetrust-externaloption of XQuery functions. - Added:
XSILOCATION: Retrieve schemas referenced byxsi:schemaLocationattributes. - Added:
RETAINLOCATION: Retain the source location of parsed nodes. - Added:
REPLACE: PUT: replace or ignore existing resources. - Added:
CACHEMAX: Maximum number of entries stored in a cache. - Added:
CACHETTL: Lifetime of cache entries. - Added:
OPTPLAN: Create the query plan before or after query compilation. - Updated:
UPDINDEX: New default:true. The full-text index is updatable as well. - Updated:
HTTPLOCAL: New default:true. - Updated:
PARALLEL: New default:32. - Updated:
STRIPWS: Only whitespace-only text nodes are discarded; whitespace in mixed content is preserved. - Updated:
INTPARSE: Improved DTD support. - Updated:
ADDARCHIVES: Parsing of Zstandard- and XZ-compressed files. - Updated:
LOG: SLF4J levelswarnanderrorfor HTTP client and server errors. - Removed:
MIXUPDATES: Usejob:executeto run updating and non-updating queries side by side. - Removed:
LSERROR: Useusing fuzzy N errorsor theerrorsoption of the full-text functions. - Removed:
FAIRLOCK: Non-fair locking is always used. - Removed:
SPLITSIZE: Index structures are always split based on the available main memory. - Removed:
ADDCACHE: Documents are moved to disk while they are being added if they get too large for main memory. - Removed:
TAILCALLS: Tail calls are always eliminated. - Removed:
FORCECREATE: Usedb:createto create databases. - Removed:
AUTHMETHOD:Digestvalue.
Configuration
- Updated:
The ancestors of the current user directory are checked as well.
Integrating oXygen
- Added:
Instructions for accessing database resources via WebDAV were re-added.
Integrating Eclipse
- Added:
Instructions for accessing database resources via WebDAV were re-added.
XQuery 4.0
- Added:
JNodes: XPath navigation on map and array structures. Example: json-doc(…)//city. - Added:
Destructuring: Assign components of sequences, arrays and maps to variables - Added:
Record declarations: but withoperator for updating record values. Example:$record but with { 'key': 'value' }. - Added:
Trace Clause: Emit diagnostic output per tuple. Example: for $i in 1 to 3 trace $i return $i. - Added:
Axes: additional axes that include the context node, e.g. preceding-or-self. - Added:
Node Comparisons: New operators and aliases. - Added:
Unicode Operators: ×(U+00D7) and÷(U+00F7). - Updated:
Record types: A record has a fixed set of fields. Optional fields ( field?) and the wildcard (*) were removed, field access is strict, and subtyping is width-invariant. - Updated:
Record declarations: Declared record types are nominative. Declarations with identical fields define distinct types. - Updated:
Map Constructors: Syntax generalized to allow arbitrary expressions: { $map-entry } - Updated:
Methods: Annotation %methodreplaced by=?>operator - Updated:
Dynamic Function Calls: Dynamic evaluation of function sequences. - Updated:
Function Declarations: localnamespace prefix can be omitted. - Updated:
Default Element Namespace: new keyword fixedand special value"##any". - Updated:
QName literals: QName literals with prefix. - Updated:
Casting: Casting from strings follows XSD 1.1; casts to xs:anyURInever fail. - Removed:
Map and array filter was removed.
Invisible XML
- Updated:
Now using Markup Blitz 1.13.
Functions
- Added:
Geo Module re-added with GML 3 support. - Removed:
Higher-Order Functions Module.
Standard Functions
- Added:
fn:atomic-type-annotation,fn:build-dateTime,fn:build-uri,fn:current,fn:days-in-month,fn:duration-to-seconds,fn:element-to-map-plan,fn:element-to-map,fn:graphemes,fn:index-of-substring,fn:jkey,fn:jtree,fn:jvalue,fn:location,fn:map-to-element,fn:matching-segments,fn:node-type-annotation,fn:pad-string,fn:parts-of-dateTime,fn:scan,fn:schema-type,fn:substring-after-last,fn:substring-before-last,fn:system-properties,fn:transform,fn:trim-space,fn:unix-dateTime,fn:xsd-validator. - Updated:
fn:analyze-string,fn:char,fn:codepoints-to-string,fn:decode-from-uri,fn:deep-equal,fn:doc,fn:doc-available,fn:insert-separator,fn:load-xquery-module,fn:parse-uri,fn:parse-xml,fn:parse-xml-fragment,fn:random-number-generator,fn:replace,fn:unparsed-text - Removed:
fn:function-identity,fn:intersperse,fn:sequence-join
Map Functions
- Updated:
map:filter,map:for-each: Positional callback argument added. - Removed:
map:keys-where,map:of-pairs,map:pairs.
Array Functions
- Added:
array:sort-by,array:sort-with. - Updated:
array:members,array:of-members: JNodes are used instead of value records. - Removed:
array:join:$separatorparameter.
Archive Functions
- Added:
TAR archives ( tar,tar.gz) can be created, updated and read. Zstandard and XZ compression (zstd,xz,tar.zst,tar.xz) are supported for creating and reading archives.
Binary Functions
- Added:
bin:infer-encoding: New function for inferring the encoding of binary data. - Added:
bin:rotate: New function for cyclic bit rotation. - Added:
bin:is-bit-set: New function for testing a single bit. - Added:
bin:set-bits: New function for setting or clearing bits. - Added:
bin:count-bits-set: New function for counting one-bits. - Added:
bin:to-base64url,bin:from-base64url: New functions for Base64url conversions.
Cache Functions
- Added:
New module.
Conversion Functions
- Removed:
convert:binary-to-string,convert:string-to-base64,convert:string-to-hexin favor of Binary Functions. - Removed:
convert:integer-to-dayTime,convert:dayTime-to-integerin favor offn:seconds.
Cryptographic Functions
- Added:
crypto:pbkdf2. - Updated:
crypto:encrypt,crypto:decrypt:AES-GCMandRSAadded;DESremoved; algorithm names are case-insensitive. - Updated:
crypto:generate-signature:RSA_SHA256,RSA_SHA512andDSA_SHA256added; defaults changed toSHA256andRSA_SHA256.
CSV Functions
- Added:
Options: comment-markeroption. - Updated:
Options: Support for backslash-escape sequences. strict-quotingis enabled by default.field-delimiterrenamed back toseparator. - Removed:
Options: row-delimiter(rows are always delimited by a newline),skip-empty;xqueryformat (usew3).
Database Functions
- Added:
db:counts: Count distinct values of nodes. - Added:
db:inspect: Check storage structures for inconsistencies. - Updated:
db:add: Multiple inputs are accepted; binary and value resources can be added. - Updated:
db:create: Binary and value resources can be stored as initial contents. - Updated:
db:put,db:put-value: Replace or ignore new resources. - Updated:
db:put-binary: Replace or ignore new resources;$inputrestricted to binary items and strings (strings are interpreted as URIs). - Removed:
db:create,db:add,db:put:addcacheoption; large inputs are moved to disk automatically. - Updated:
db:get,db:text:$databasecan be addressed by a compact node. - Updated:
db:system:librarieselement.
File Functions
- Updated:
file:read-text,file:read-text-lines,file:descendants: New$optionsparameter. - Updated:
file:size: New$recursiveparameter. - Updated:
file:delete: Non-existing paths are ignored. - Removed:
file:read-text-lines:$offsetand$lengthparameters removed.
Full-Text Functions
- Updated:
ft:search: Newstop-wordsoption; full-text options declared in the query prolog are inherited; elements are returned if the index contains the string values of elements. - Updated:
ft:contains: Newstop-wordsandoccursoptions; full-text options declared in the query prolog are inherited. - Updated:
ft:tokens: Newfuzzyanderrorsoptions for looking up index tokens with a bounded number of errors. - Updated:
ft:mark,ft:extract: Constructed nodes are accepted; the name of the marker element must be an NCName. - Updated:
ft:count: Constructed nodes are accepted. - Updated:
ft:thesaurus: Terms are normalized with the full-text options; the thesaurus index of a database is used; the queried term is not returned anymore. - Updated:
Tokenization: Letters that denote multiple characters are expanded ( ß→ss,æ→ae, …). - Updated:
Database Functions: Rebuild indexes of older versions to apply the standardized token normalization.
Geo Functions
- Added:
Module re-added with GML 3 support.
HTML Functions
- Added:
Validator.nu option fail-on-error. - Updated:
If no parser is available, the HTML input will be wrapped in an htmlelement.
HTTP Client Functions
- Added:
http:get,http:head,http:delete,http:options,http:post,http:put,http:patch,http:query,http:send: map-based interface with typed options and record results. - Added:
http:send-request:proxy,verifyandxmlattributes. - Updated:
http:send-request:follow-redirectaccepts a maximum number of redirects;auth-methodis case-insensitive;timeoutaccepts fractions of a second. - Updated:
Compressed responses are requested by default; redirects are no longer forwarded to another origin with credentials, and downgrades from httpstohttpare not followed. - Added:
http:send-request:cookiesattribute for collecting and resending cookies. - Added:
http:send-request:hrefandversionattributes in thehttp:responseelement; SHA-256 and SHA-512-256 digest authentication. - Updated:
http:send-request: response header names are returned in lower case. - Updated:
http:send-request: binary response bodies are returned as lazy items; file-based request payloads are streamed.
Job Functions
- Added:
job:next,job:info - Updated:
job:eval: A function item can be invoked instead of a query. Cron syntax and daylight saving changes are supported.permission,timeoutandmemoryoptions added. A service must have a uniqueid;memory,timeoutandpermissionare rejected. - Updated:
job:execute: A function item can be invoked instead of a query. Raisedeadlockerror if execution would deadlock the calling query. - Updated:
job:list-details:cron,addressandsessionattributes added.
Cron Syntax
- Added:
New article added.
JSON Functions
- Added:
W3-Mapping: New conversion format. - Added:
Options: Option mappingfor thew3-mappingformat. Serialization optionescape-solidus, parsing optionjson-lines. - Updated:
Options: number-parserwas replaced withnumber-format. - Removed:
Options: Conversion formats xqueryandbasic(usew3andw3-xml).
Process Functions
- Updated:
proc:system: New optionsbinary,normalize-newlinesandfallback; binary input; invalid characters are rejected. - Updated:
proc:execute: New optionsbinary,normalize-newlinesandfallback; binary input; invalid characters are rejected.
Profiling Functions
- Updated:
prof:track:allocatedoption added. - Updated:
prof:human: arbitrary numbers and durations accepted.
Request Functions
- Added:
request:body - Updated:
Functions can also be called in WebSocket handlers and asynchronous jobs.
Sessions Functions
- Added:
sessions:list-details
SQL Functions
- Added:
sql:execute-batch: executes a prepared statement over multiple parameter sets. - Updated:
sql:execute:generated-keysandnulloptions added. - Updated:
sql:execute-prepared: Parameters can be supplied as an array;nulloption added. - Updated:
sql:prepare:generated-keysoption added.
Store Functions
- Added:
store:info,store:close - Updated:
All opened stores are now kept in main memory.
String Functions
- Added:
string:closest,string:levenshtein-distance,string:partial-ratio,string:token-sort-ratio,string:token-set-ratio,string:ngram-similarity,string:ngrams - Updated:
The similarity functions and string:ngramsadopt the$optionsofft:tokenize(case,diacritics,stemming,language). - Updated:
string:soundex: a string without letters yields an empty string (before:0000). - Removed:
string:formatin favor offn:pad-string.
Unit Functions
- Added:
unit:timeout: abort tests that exceed a time limit. - Updated:
unit:test: multiple expected error codes can be specified.
Web Functions
- Updated:
web:error:$messagecan be an arbitrary item; serialization$optionsadded. - Updated:
web:response-header:messageattribute removed (deprecated Servlet API feature). - Updated:
web:redirect: Status parameter added. - Removed:
web:forward: server-side forwarding was dropped.
WebSocket Functions
- Added:
ws:list-details,ws:names,ws:ping - Updated:
ws:eval: A function item can be invoked instead of a query; job options and serialization parameters. - Updated:
ws:close: Optional close status and reason.
XQuery Functions
- Added:
xquery:for-each: New function for parallel iteration. - Added:
xquery:reduce: New function for parallel aggregation. - Added:
xquery:fork-any: New function returning the first available result. - Updated:
xquery:eval: A function item can be invoked instead of a query. Allow decimal places for timeout value. Thepermissionoption also applies to returned function items. - Updated:
xquery:eval-update: A function item can be invoked instead of a query. - Updated:
xquery:fork-join:reportandtimeoutoptions added. - Updated:
xquery:parse:optimizeoption added.
Full-Text
- Added:
Full-Text Index: The index is updatable with UPDINDEX. - Updated:
Mixed Content: Elements with mixed content can be indexed, and their matches are highlighted. - Updated:
Thesaurus: Terms are normalized with the full-text options. Thesauri can be stored and indexed in databases. Equivalent Terms can be grouped. The query term is not returned as thesaurus term anymore.
Updates
- Removed:
MIXUPDATESoption. Usejob:executeto combine updating and non-updating operations.
Indexes
- Added:
Full-Text Index: The index is updatable with UPDINDEX.FTMIXEDindexes the string values of elements with mixed content. - Added:
Thesaurus Index: Thesauri stored in databases can be indexed with THESINDEX. - Updated:
Full-Text Index: Faster fuzzy querying. Token normalization was standardized (rebuild indexes of older versions to apply it). - Updated:
Text Index, Attribute Index: integer comparisons (equality and ranges) on integer-typed nodes are rewritten for value-index access. - Updated:
Path Index, Name Index, Updates: insertions keep the path index, name index and statistics up to date.
XQuery Optimizations
- Added:
Loop Unswitching, Node Construction.
Repository
- Added:
Web Applications: RESTXQ applications can be packaged as archives - Updated:
Java classes are cached after the first import. - Updated:
Listing: absolute paths are returned
XQuery Extensions
- Added:
%basex:memoannotation for the Memoization of function results. - Added:
%basex:evalannotation for the Evaluation in Other Queries. - Removed:
The regular expression flags j,!and;. - Removed:
The nondeterministicprefix for dynamic function calls: calls of functions that are statically unknown are now treated as nondeterministic.
Serialization
- Added:
Standard Parameters: indent-unit,line-ending,json-lines,escape-solidus,csv-header,csv-quote-character,csv-separator. - Added:
Custom Parameters: canonicalfor Canonical XML output,expressionfor output as XQuery expression. - Updated:
Standard Parameters: The csvoutput method is part of the official specification: it is the inverse offn:parse-csvandfn:csv-to-arrays.indent-attributesis now a standard serialization parameter.html-version: Default changed from4.0to5.0.html-version,version: Control characters that the requested version does not allow now raise an error. - Updated:
Custom Parameters: indents,newlineandtabulatorare superseded byindent-unitandline-ending.
Web Application
- Added:
WebDAV has been re-added as a RESTXQ application. - Removed:
Digest authentication. - Updated:
BaseX is now based on the Jetty EE10 environment (Servlet 6.0) and can be deployed in any Jakarta EE 10 servlet container. - Updated:
Static resources are served by a servlet of BaseX; the directory is specified via the pathparameter. - Updated:
No database server is started anymore by default (see HTTPLOCAL).
RESTXQ
- Added:
Web Archives: applications can be deployed as ZIP archives. - Added:
Default HTTP Methods: Support for QUERYmethod added. - Updated:
Paths: %rest:pathcan be specified more than once. - Updated:
Default HTTP Methods: Functions with method annotations are preferred. - Updated:
Scope Error Handlers: %rest:errorcan be combined with%rest:path. - Removed:
Server-side forwarding ( <rest:forward>element andweb:forwardfunction) was dropped.
Permissions
- Updated:
Security functions are also invoked for WebSocket handshakes.
WebSockets
- Added:
Path templates in WebSocket annotations. - Added:
Permission checks for WebSocket handshakes. - Added:
%ws:subprotocolannotation: sub-protocol negotiation. - Updated:
All Request Functions can be used in WebSocket handlers. - Updated:
%ws:errorannotation: also invoked for errors of WebSocket functions and ofws:eval. Without such a function, no error message will be sent to the client. - Updated:
%ws:closeannotation: close status and reason can be bound to variables. - Removed:
%ws:header-paramannotation (use the Request Functions instead).
REST
- Added:
QUERY Method: Evaluate the request body as XQuery expression. - Added:
PUT Method: Replace or ignore new resources.
WebDAV
- Added:
WebDAV is now written in XQuery and runs as a RESTXQ application. - Updated:
Locks are kept in main memory; the ~webdavdatabase is not used anymore.
DBA
- Added:
Stores view; Caches panel of the Activity view. - Updated:
Full redesign: side-by-side panels, Workspace, Activity, CodeMirror 6, use of WebSockets.
Clients
- Updated:
Digest replaced with salted authentication. - Removed:
Support for digest and cram-md5 authentication, and the outdated clients.
Server Protocol
- Updated:
Digest replaced with salted authentication - Removed:
Digest authentication of clients of Version 8 to 12, and the client-side fallback to cram-md5 authentication
Java Examples
- Removed:
XML:DB API
User Management
- Added:
Trusted Code: Code can be untrusted. - Updated:
Permissions: Permissions are also checked for databases that have already been opened. - Added:
Password algorithms can be configured via AUTHALGORITHMS, including PBKDF2 encryption. - Removed:
The unsalted digest(MD5) algorithm.
Transaction Management
- Updated:
Updating queries acquire read locks for databases that are only read. - Removed:
FAIRLOCKoption: Non-fair locking is always used.
Logging
- Updated:
Uniform notation of client addresses; IPv6 addresses behind proxies are recognized.
Node Storage
- Updated:
Updatable Indexes: Segmented layout of the value indexes, including the full-text index. - Updated:
Compact storage of namespaces, incremental persistence of the ID-PRE mapping, parallel reading of the node table.
⚡Generated with XQuery