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
- Updated:
Menu bar: restructured. - Added:
Editor: word wrap can be disabled. - Added:
Project View: search and replace in all files, with backup and undo. - Added:
Editor: code completion, code formatting, go to declaration. - Updated:
Search & Replace: count hits, improved interaction, scroll bar integration. - Updated:
Single GUI instance per project directory. - Updated:
Preferences: scaling relative to the operating system. - Updated:
Panel sizes and arrangement are preserved across restarts. - Updated:
Faster rendering of the editor and text panels. - Added:
Support for the FlatLaf library. - Removed:
Fullscreen mode.
Shortcuts
- Updated:
Menu shortcuts were adapted to the restructured menu bar.
Web Application
- Added:
WebDAV has been re-added as a RESTXQ application. - 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).
DBA
- Added:
Stores view; Caches panel of the Activity view. - Updated:
Full redesign: side-by-side panels, Files, Activity, CodeMirror 6, use of WebSockets.
Command-Line Options
- Added:
-Lto start a database server instance in addition (HTTP server).
Commands
- Updated:
PUT, BINARY PUT: Replace or ignore new resources.
Options
- Removed:
MIXUPDATES: Usejob:executeto run updating and non-updating queries side by side. - Added:
AUTHALGORITHMS: Configure the password algorithms for which hashes are stored. Thedigesthash is no longer stored by default. - Added:
CACHEMAX: Maximum number of entries stored in a cache. - Added:
CACHETTL: Lifetime of cache entries. - Added:
CREATEONLY: Close a database after its creation. - Added:
OPTPLAN: Create the query plan before or after query compilation. - Added:
XSILOCATION: Retrieve schemas referenced byxsi:schemaLocationattributes. - Added:
REPLACE: PUT: replace or ignore existing resources. - Added:
FNXMLTRUSTED: Default for thetrustedoption of the XML parsing functions. - Added:
RETAINLOCATION: Retain the source location of parsed nodes. - Updated:
STRIPWS: Only whitespace-only text nodes are discarded; whitespace in mixed content is preserved. - Updated:
INTPARSE: Improved DTD support. - Updated:
HTTPLOCAL: New default:true.
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:
Trace Clause: Emit diagnostic output per tuple. Example: for $i in 1 to 3 trace $i return $i. - Added:
JNodes: XPath navigation on map and array structures. Example: json-doc(…)//city. - Added:
Unicode Operators: ×(U+00D7) and÷(U+00F7). - Added:
Axes: additional axes that include the context node, e.g. preceding-or-self. - Added:
Destructuring: Assign components of sequences, arrays and maps to variables - Added:
Node Comparisons: New operators and aliases. - Updated:
Default Element Namespace: new keyword fixedand special value"##any". - Updated:
QName literals: QName literals with prefix. - Updated:
Function Declarations: localnamespace prefix can be omitted. - Updated:
Dynamic Function Calls: Dynamic evaluation of function sequences. - Updated:
Methods: Annotation %methodreplaced by=?>operator - Updated:
Map Constructors: Syntax generalized to allow arbitrary expressions: { $map-entry } - 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. - Added:
Record declarations: +:=operator for updating record values. Example:$record +:= { 'key': 'value' }. - Removed:
Map and array filter was removed. - Updated:
Casting: Casting from strings follows XSD 1.1; casts to xs:anyURInever fail.
Invisible XML
- Updated:
Now using Markup Blitz 1.12.
Functions
- Added:
Geo Module re-added with GML 3 support.
Array Functions
- Added:
array:sort-by,array:sort-with. - Removed:
array:join:$separatorparameter.
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.
Cache Functions
- Added:
New module.
CSV Functions
- Added:
Options: comment-markeroption. - Updated:
Options: Support for backslash-escape sequences. - Updated:
Options: field-delimiterrenamed back toseparator. - Removed:
Options: row-delimiter(rows are always delimited by a newline).
Database Functions
- Updated:
db:create,db:add: support added for storing binary and value resources. - Updated:
db:add: aligned withdb:create, accepts multiple inputs. - Updated:
db:put,db:put-binary,db:put-value: replace or ignore new resources. - Updated:
db:put-binary:$inputrestricted to binary items and strings (strings are interpreted as URIs). - Updated:
db:get,db:text:$databasecan be addressed by a compact node.
File Functions
- Updated:
file:delete: Non-existing paths are ignored. - Updated:
file:size: New$recursiveparameter. - Updated:
file:read-text,file:read-text-lines: New$optionsparameter. - Updated:
file:descendants: New$optionsparameter. - Removed:
file:read-text-lines:$offsetand$lengthparameters removed.
Full-Text Functions
- Updated:
Database Functions: REBUILD REQUIRED - Updated:
ft:search,ft:contains: newstop-wordsoption;ft:contains: newoccursoption. - Updated:
ft:searchandft:containsinherit the full-text options that are declared in the query prolog. - Updated:
ft:mark,ft:extract: the name of the marker element must be an NCName. - Updated:
ft:mark,ft:extractandft:countalso accept constructed nodes. - Updated:
ft:tokens: newfuzzyanderrorsoptions for looking up index tokens with a bounded number of errors. - Updated:
Expand letters to multiple character ( ß→ss,æ→ae, …).
Geo Functions
- Added:
Module re-added with GML 3 support.
Higher-Order Functions
- Removed:
hof:scan-left(replaced withfn:scan)
HTML Functions
- Updated:
If no parser is available, the HTML input will be wrapped in an htmlelement. - Added:
Validator.nu option fail-on-error.
HTTP Client Functions
- Updated:
http:send-request: binary response bodies of GET requests are returned as lazy items; file-based request payloads are streamed. - Added:
http:send-request:cookiesattribute for collecting and resending cookies.
Job Functions
- Added:
job:next - Updated:
job:eval: a service must have a uniqueid;memory,timeoutandpermissionare rejected. - Updated:
job:eval,job:list-details: Cron syntax added. - Updated:
job:eval:permission,timeoutandmemoryoptions added. - Updated:
job:eval: Support for daylight saving changes. - Updated:
job:execute: Raisedeadlockerror if execution would deadlock the calling query. - Updated:
job:eval,job:execute: a function item can be invoked instead of a query.
Cron Syntax
- Added:
New article added.
JSON Functions
- Added:
Serialization option escape-solidus. - Updated:
number-parserwas replaced withnumber-format.
Map Functions
- Updated:
map:filter,map:for-each: Positional callback argument added. - Removed:
map:keys-where,map:of-pairs,map:pairs.
Profiling Functions
- Updated:
prof:track:allocatedoption added.
Request Functions
- Added:
request:body - Updated:
Functions can also be called in WebSocket handlers and asynchronous jobs.
SQL Functions
- Added:
sql:execute-batch: executes a prepared statement over multiple parameter sets. - Updated:
sql:execute,sql:prepare:generated-keysoption added. - Updated:
sql:execute,sql:execute-prepared:nulloption added. - Updated:
sql:execute-prepared: parameters can be supplied as an array.
Standard Functions
- Added:
fn:atomic-type-annotation,fn:build-dateTime,fn:build-uri,fn:element-to-map-plan,fn:element-to-map,fn:graphemes,fn:jkey,fn:jposition,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:system-properties,fn:transform,fn:unix-dateTime,fn:xsd-validator. - Added:
trustedoption forfn:doc,fn:doc-availableandfn:parse-xml. - Added:
retain-locationoption forfn:doc,fn:parse-xmlandfn:parse-xml-fragment. - Updated:
fn:insert-separator - Updated:
fn:deep-equal: Thedebugoption outputs the items that were found to be different. - Updated:
fn:replace: named capturing groups can be referenced in replacement strings and patterns; replacement functions receive the captured groups as a map. - Updated:
fn:analyze-string: a named capturing group carries anameattribute. - Updated:
fn:decode-from-uri,fn:parse-uri: plus signs are only decoded as spaces in query parameters. - Removed:
entity-expansion-limitandallow-external-entitiesoptions;fn:intersperseandfn:sequence-joinin favor offn:insert-separator. - Removed:
fn:deep-equal: Optionsfalse-on-errorandnormalize-space.
Store Functions
- Added:
store:info,store:close - Updated:
All opened stores are now kept in main memory.
String Functions
- Removed:
string:formatin favor offn:pad-string. - 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).
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. - Removed:
web:forward: server-side forwarding was dropped. - Updated:
web:response-header:messageattribute removed (deprecated Servlet API feature). - Updated:
web:redirect: Status parameter added.
WebSocket Functions
- Added:
ws:ping - Updated:
ws:close: optional close status and reason. - Updated:
ws:eval: job options and serialization parameters. - Updated:
ws:eval: a function item can be invoked instead of a query.
XQuery Functions
- Added:
xquery:for-each: New function for parallel iteration. - Added:
xquery:fork-any: New function returning the first available result. - Added:
xquery:reduce: New function for parallel aggregation. - Updated:
xquery:fork-join:reportandtimeoutoptions added. - Updated:
xquery:eval: Allow decimal places for timeout value. - Updated:
xquery:eval,xquery:eval-update: a function item can be invoked instead of a query.
Updates
- Removed:
MIXUPDATESoption. Usejob:executeto combine updating and non-updating operations.
Indexes
- Updated:
Full-Text Index: Faster fuzzy querying. - Updated:
Full-Text Index: REBUILD REQUIRED. Token normalization was standardized. - Updated:
Text Index, Attribute Index: integer comparisons (equality and ranges) on integer-typed nodes are rewritten for value-index access.
Repository
- Added:
Web Applications: RESTXQ applications can be packaged as archives - Updated:
Listing: absolute paths are returned - Updated:
Java classes are cached after the first import.
XQuery Extensions
- Removed:
The nondeterministicprefix for dynamic function calls: calls of functions that are statically unknown are now treated as nondeterministic.
Serialization
- Added:
Serialization parameters escape-solidus,json-lines,indent-unit,line-ending. - Added:
Serialization parameter canonicalfor Canonical XML output. - Added:
Serialization parameters csv-header,csv-quote-character,csv-separator. - Updated:
The csvoutput method is part of the official specification: it is the inverse offn:parse-csvandfn:csv-to-arrays. - Added:
Serialization parameter expression. - Updated:
html-version: Default changed from4.0to5.0. - Updated:
indent-attributesis now a standard serialization parameter. - Updated:
indents,newlineandtabulatorare superseded byindent-unitandline-ending.
Developer Section
- Added:
WebDAV was re-added as a RESTXQ application.
RESTXQ
- Added:
Web Archives: applications can be deployed as ZIP archives. - Added:
HTTP Methods: Support for QUERYmethod added. - Updated:
Paths: %rest:pathcan be specified more than once. - Updated:
Scope Error Handlers: %rest:errorcan be combined with%rest:path. - Updated:
Default Methods: Functions with method annotations are preferred. - Removed:
Server-side forwarding ( <rest:forward>element andweb:forwardfunction) was dropped.
Permissions
- Updated:
Security functions are also invoked for WebSocket handshakes.
WebSockets
- Added:
Permission checks for WebSocket handshakes. - Added:
Path templates in WebSocket annotations. - Added:
%ws:subprotocolannotation: sub-protocol negotiation. - Updated:
%ws:closeannotation: close status and reason can be bound to variables. - 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. - Removed:
%ws:header-paramannotation (use the Request Functions instead). - Updated:
All Request Functions can be used in WebSocket handlers.
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.
Clients
- Updated:
Digest replaced with salted authentication. - Removed:
Support for cram-md5 authentication, and the outdated clients.
Server Protocol
- Updated:
Digest replaced with salted authentication - Removed:
Client-side fallback to cram-md5 authentication
User Management
- Added:
Password algorithms can be configured via AUTHALGORITHMS, including PBKDF2 encryption. - Updated:
The unsalted digesthash is no longer stored by default.
Transaction Management
- Updated:
Updating queries acquire read locks for databases that are only read.
⚡Generated with XQuery