eXist-db 5.3.0 Released
June 26, 2021
Submitted by Juri Leino.
We are very happy to announce that eXist-db 5.3.0 has been released.
It's been quite a while since the last release. A lot has been happening behind the scenes, and we are happy to share the outcome with you. 5.3.0 is a minor release, and should be 100% API compatible with 5.0.0 as such.
- tl;dr https://github.com/eXist-db/exist/releases/tag/eXist-5.3.0
Highlights
XQuery 3.1 compatibility
- Improved handling of the XQuery type system - [#3363](https://github.com/exist-db/exist/pull/3363), [#3266](https://github.com/exist-db/exist/pull/3266), [#3728](https://github.com/exist-db/exist/pull/3728), [#3791](https://github.com/exist-db/exist/pull/3791)
- Function types are now allowed as values in context item expressions
- Duplicate functions will reliably throw a useful error
- Root context is shielded from user defined functions
- Several fixes for positional predicates
- When errors are thrown in XQuery most of them will now have useful location information
- Fixed parser issues to allow empty function body, and allow
||
in attribute and element content - Allow other seed types in fn:random-number-generator (like dates) - [#3072](https://github.com/eXist-db/exist/pull/3072)
- Fixed the cardinality of fn:random-number-generator#1 - [#3249](https://github.com/eXist-db/exist/pull/3249)
- Improved
fn:format-number
- [#3348](https://github.com/eXist-db/exist/pull/3348) - Made
fn:collection
spec compliant - [#3349](https://github.com/eXist-db/exist/pull/3349) - Allow sequences for batch deletions in
map:remove
andarray:remove
- [#3328](https://github.com/eXist-db/exist/pull/3228), [#3692](https://github.com/eXist-db/exist/pull/3692)
New functions added
array:sort
- [#3596](https://github.com/eXist-db/exist/pull/3596)fn:document-uri#0
- [#3644](https://github.com/eXist-db/exist/pull/3644)fn:trace#1
- [#3597](https://github.com/eXist-db/exist/pull/3597)fn:xml-to-json
- [#3141](https://github.com/eXist-db/exist/pull/3141)
Other important additions
- Module handling and caching was improved significantly
- Both
controller.xq
andcontroller.xql
are now recognized in apps that use eXist's URL Rewriting facility, to conform with the community convention of.xq
for main modules and.xqm
for library modules. - The implementation of maps was changed to gain performance
- Allow Bearer tokens and other schemes than "Basic" in Authentication header
- Allow HTTP verb PATCH
- Custom base64 handling code was replaced with apache.commons code and a new function
util:base64-encode-url-safe
was added - Enhanced
util:eval
to preserve the original error information - In Lucene, you can now use different analyzers for indexing and querying
Bundled apps
All bundled applications have their frontend dependencies updated.
- The index view in monex now lists new fields and facets - [#124](https://github.com/eXist-db/monex/pull/124).
- The shared resources and markdown packages are no longer bundled with eXist-db. If your application depends on those you can still declare dependencies on them in your package metadata and download them from the package repository.
IMPORTANT NOTE
The default eXist-db configuration settings are not production ready. Make sure to consult our article on best practices before making your eXist-db instance publicly available.
The new existdb-config project implements these "best practices" and can easily be used to harden your eXist-db(s) from version 5.1.1 till 5.3.0.
Licensing
A lot of effort was poured into getting eXist-db's source code licensed properly. It is now consistently LGPL 2.1, with exceptions where code from other projects is used with their permission.
See the change log entry for the full list of features and changes