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: Search & Replace: count hits, improved interaction, scroll bar integration.
  • 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: Shortcuts were updated.

Web Application

  • Updated: BaseX is now based on the Jetty EE10 environment (Servlet 6.0).
  • Updated: No database server is started anymore by default (see HTTPLOCAL).

Command-Line Options

  • Added: -L to start a database server instance in addition (HTTP server).

Commands

  • Updated: PUT, BINARY PUT: Replace or ignore new resources.

Options

  • Removed: MIXUPDATES: Use job:execute to run updating and non-updating queries side by side.
  • Added: AUTHALGORITHMS: Configure the password algorithms for which hashes are stored. The digest hash is no longer stored by default.
  • Added: CACHEMAX: Maximum number of entries stored in a cache.
  • Added: REPLACE: PUT: replace or ignore existing resources.
  • Added: FNXMLTRUSTED: Default for the trusted option of the XML parsing functions.
  • Updated: INTPARSE: Improved DTD support.
  • Updated: HTTPLOCAL: New default: true.

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 fixed and special value "##any".
  • Updated: QName literals: QName literals with prefix.
  • Updated: Function Declarations: local namespace prefix can be omitted.
  • Updated: Dynamic Function Calls: Dynamic evaluation of function sequences.
  • Updated: Methods: Annotation %method replaced 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' }.
  • Deleted: Map and array filter was removed.
  • Updated: Casting: Casting from strings follows XSD 1.1; casts to xs:anyURI never fail.

Invisible XML

  • Updated: Now using Markup Blitz 1.11.

Functions

  • Added: Geo Module re-added with GML 3 support.

Array Functions

  • Added: array:sort-by, array:sort-with.
  • Removed: array:join: $separator parameter.

Binary Functions

  • 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-marker option.
  • Updated: Options: Support for backslash-escape sequences.
  • Updated: Options: field-delimiter renamed back to separator.
  • 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 with db:create, accepts multiple inputs.
  • Updated: db:put, db:put-binary, db:put-value: replace or ignore new resources.
  • Updated: db:put-binary: $input restricted to binary items and strings (strings are interpreted as URIs).
  • Updated: db:get, db:text: $database can be addressed by a compact node.

File Functions

  • Updated: file:delete: Non-existing paths are ignored.
  • Updated: file:size: New $recursive parameter.
  • Updated: file:read-text, file:read-text-lines: New $options parameter.
  • Removed: file:read-text-lines: $offset and $length parameters removed.

Full-Text Functions

  • Updated: Database Functions: REBUILD REQUIRED
  • Updated: ft:tokens: new fuzzy and errors options for looking up index tokens with a bounded number of errors.
  • Updated: Token folding: characters that denote multiple letters are now expanded (ßss, æae, þth, …), and missing and incorrect mappings were fixed. Existing full-text indexes must be rebuilt with OPTIMIZE ALL (see Indexes).

Geo Functions

  • Added: Module re-added with GML 3 support.

HTTP Client Functions

  • Updated: http:send-request: binary response bodies of GET requests are returned as lazy items; file-based request payloads are streamed.

Job Functions

  • Added: job:next
  • Updated: job:eval, job:list-details: Cron syntax added.
  • Updated: job:eval: Support for daylight saving changes.
  • Updated: job:execute: Raise deadlock error if execution would deadlock the calling query.

Cron Syntax

  • Added: New article added.

JSON Functions

  • Added: Serialization option escape-solidus.
  • Updated: number-parser was replaced with number-format.

Map Functions

  • Updated: map:filter, map:for-each: Positional callback argument added.
  • Removed: map:keys-where, map:of-pairs, map:pairs.

Math Functions

  • Added: math:exp10.

Request Functions

  • 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-keys option added.
  • Updated: sql:execute, sql:execute-prepared: null option 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:matching-segments, fn:node-type-annotation, fn:pad-string, fn:parts-of-dateTime, fn:schema-type, fn:system-properties, fn:transform, fn:unix-dateTime, fn:xsd-validator.
  • Added: trusted option for fn:doc, fn:doc-available and fn:parse-xml.
  • Updated: fn:insert-separator
  • Updated: fn:deep-equal: The debug option outputs the items that were found to be different.
  • Removed: entity-expansion-limit and allow-external-entities options; fn:intersperse and fn:sequence-join in favor of fn:insert-separator.
  • Removed: fn:deep-equal: Options false-on-error and normalize-space.

Store Functions

  • Added: store:update, store:close
  • Updated: All opened stores are now kept in main memory.

String Functions

  • Removed: string:format in favor of fn: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:ngrams adopt the $options of ft: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: $message can be an arbitrary item; serialization $options added.
  • Removed: web:forward: server-side forwarding was dropped.
  • Updated: web:response-header: message attribute removed (deprecated Servlet API feature).
  • Updated: web:redirect: Status parameter added.

WebSocket Functions

  • Added: ws:ping
  • Updated: ws:close: optional close status and reason.

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: report and timeout options added.
  • Updated: xquery:eval: Allow decimal places for timeout value.

Updates

  • Removed: MIXUPDATES option. Use job:execute to 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

  • Updated: Java classes are cached after the first import.

XQuery Extensions

  • Added: Debugging: summary of how trace output is handled.

Serialization

  • Added: Serialization parameters escape-solidus, json-lines, indent-unit, line-ending.
  • Updated: indent-attributes is now a standard serialization parameter.
  • Updated: indents, newline and tabulator are superseded by indent-unit and line-ending.

RESTXQ

  • Added: HTTP Methods: Support for QUERY method added.
  • Updated: Paths: %rest:path can be specified more than once.
  • Updated: Scope Error Handlers: %rest:error can be combined with %rest:path.
  • Updated: Default Methods: Functions with method annotations are preferred.
  • Removed: Server-side forwarding (<rest:forward> element and web:forward function) 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:subprotocol annotation: sub-protocol negotiation.
  • Updated: %ws:close annotation: close status and reason can be bound to variables.
  • Removed: %ws:header-param annotation (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.

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

Parsers

  • Updated: If no parser is available, the HTML string will be returned as text.
  • Added: Validator.nu option fail-on-error.

User Management

  • Added: Password algorithms can be configured via AUTHALGORITHMS, including PBKDF2 encryption.
  • Updated: The unsalted digest hash is no longer stored by default.

⚡Generated with XQuery