We are happy to announce the release of eXist-db v3.1.1. This is a bug fix release, which addresses a number of issues and closes two memory leaks. The most important changes are:
fixed command line parameters for backup/restore and the Java admin client (partially broken in 3.1.0)
closed memory leak in XQuery map constructor
closed memory leak preventing memory used for accessing binary resources in XQuery being freed
added missing dependencies for YAJSW when installing as a System-V service
corrected fn:doc-available() to return false(), not FODC0005, when the remote resource does not return a document node
prevented an NPE when an account or a group can't be found by id due to storage corruption or a missing account or group
In addition to eXist-db itself, this release includes updated versions of a number of the bundled applications: Documentation (v0.4.8), Monitoring and Profiling AKA "Monex" (v0.9.7), Shared Resources (v0.4.2). Other applications updated since the last release of eXist-db include Demo Apps (v0.4.0), Public Application Repository (v0.6.0), and XQuery Versioning Module (v1.1.2). The updated versions and their release notes are all available via Dashboard > Package Manager or from the Public Application Repository.
### Backwards Compatibility
eXist-db v3.1.1 is binary-compatible with v3.0 and v3.1.0, but not with previous versions (v2.x). Users upgrading from pre-3.0 versions should perform a full backup and restore to migrate their data.
eXist-db v3.1.1 requires Java 8.
### Downloading This Version
eXist-db v3.1.1 is available for download from the eXist-db Releases page on GitHub. (The old download page on Sourceforge is no longer updated.) Maven artifacts for eXist-db v3.1.1 are available from our mvn-repo repository. For macOS users of the Homebrew package manager, eXist-db v3.1.1 is already available.
We are very pleased to announce the release of eXist-db v3.1.0.
We encourage everyone to upgrade to this latest release. It is the culmination of changes since the release of v3.0 26 days ago, on February 9, 2017, and brings new features and numerous improvements, detailed below. Most notably of these: eXist-db releases now follow the "semantic versioning" (semver) convention; it adds support for XQuery 3.1 features and improves those already supported; and shutdown and package management were made more robust.
### New Features
Implemented the Arrow Operator (=>) from XQuery 3.1
Implemented String Constructors from XQuery 3.1
Implemented fn:has-children, fn:innermost, and fn:outermost functions from XQuery 3.1
Extended the Range Index conditions feature
### Performance Improvements
FLWOR where clauses are no longer evaluated for empty sequences, resulting in significant speed increase
### Critical Bug Fixes
Fixed the shutdown timer
Improved EXPath Package repository stability in cases of failures or corruption
Replaced some additional read locks with write locks where required
AuditTrailSessionListener now releases locks correctly
Variable names without namespace prefix are now correctly in no namespace
### Clean Up and Refactoring
Refactored many tests
Simplified the sql:execute function and corrected the encoding of its results
Function definitions are no longer shared between deferred function calls
All FLWOR clauses except where clauses are now pre-evaluated
Added tests for range index conditions
IntelliJ, NetBeans, and Eclipse configuration files cleaned up
Map and Array constructors are now inlined in grammar
Improved the Lookup Operator (?) for postfix expressions with Maps from XQuery v3.0
Continued clean up of eXist-db's Test Suite
Added integration tests to ensure EXPath Package functionality and further support the trimming of the core
Extended use of SystemExitCodes instead of explicit integers
Improved the service wrapper (yajsw) introduced in v3.0
Made the ft:query-field only depend on context sequence
Removed support for Launch4j exe creation
Fixed short form of shutdown arguments
Upgraded 3rd party libraries:
log4j2
Switched to use Jargo instead of defunct Excalibur (and Guava)
... and many more
### Backwards Compatibility
eXist-db v3.1.0 is binary-compatible with v3.0 but not with previous versions. Users upgrading from previous versions should perform a full backup and restore to migrate their data.
eXist-db v3.1.0 and v3.0 require Java 8.
Due to the legacy Full Text Index being removed, the text XQuery module (http://exist-db.org/xquery/text) has also been removed. Users should now rely on the fn:analyze-string function, e.g.:
Instead of using text:groups(), use analyze-string()//fn:group,
Instead of text:filter("apparat", "([pr])"), use analyze-string("apparat", "([pr])")//fn:match/string()
There have been changes to some internal APIs, e.g., XQueryService has been moved from DBBroker to BrokerPool.
EXPath Packages that incorporate Java libraries may no longer work with eXist-db v3.1.0 and may need to be recompiled for our API changes; packages should now explicitly specify the eXist-db versions that they are compatible with.
### Downloading This Version
eXist-db v3.1.0 is available for download from GitHub. (The older Sourceforge download page is no longer updated.) Maven artifacts for eXist-db v3.1.0 are available from our mvn-repo. Mac users of the Homebrew package repository will be able to install and upgrade shortly; an announcement will be made on the exist-open mailing list.
It is our great pleasure to announce the official release of the TEI Publisher, an open source app for eXist-db offering single-source publishing without writing any code. Currently TEI Publisher works out of the box with TEI documents (hence its name) but it can be customized to accommodate any XML schema.
Publishing any TEI content requires only few simple steps:
Upload the content into eXist
Customize the appearance via TEI ODD file
Generate a robust standalone application
Apps generated with TEI Publisher work well across devices and include features like page by page browsing, search and cross-media export or side-by-side text and image display. This approach has been applied to a range of commercial and academic projects, and has proven very successful in terms of development time, maintenance cost, performance and scalability, an outstanding example being the Foreign Relations of the United States series at the US Department of State.
TEI Publisher builds upon an efficient implementation of the TEI Processing Model, which has become a standard part of TEI Consortium’s recommendations, so customising the appearance of the text is done in TEI XML. No media specific stylesheets are required since rendition choices are transparently translated into different media types like HTML, XSL-FO, LaTeX, or ePUB.
TEI Publisher empowers the editors, offering rapid publishing across media while assuring full control over editorial decisions. For developers, TEI Publisher heavily reduces the amount of custom code required by typical digital edition. Transformations can be customized just by tweaking a single processing specification expressed in TEI ODD and changes are consistently carried through into all output formats. Highly formulaic and easily readable TEI ODD processing models save thousands of lines of handwritten transformations. Typically less than a few hundred lines of ODD instructions are sufficient to cover the needs even for projects of broad scope and volume, sustaining substantial everyday traffic. This means roughly ten-fold decrease in code size alone, not mentioning drastic improvements in maintenance.
Sebastian Rahtz sketching Wolfgang Meier's proposal for Processing Model extension
TEI Publisher is a result of serendipitous chain of events started with the TEI Processing Model developed by TEI Simple project. TEI Simple, funded by a generous grant from the Andrew W. Mellon Foundation, with substantial contributions from the Northwestern University, University of Nebraska-Lincoln, the University of Oxford, and the TEI Consortium was the work of the late Sebastian Rahtz and Martin Mueller with substantial contributions from James Cummings, Brian Pytlik Zillig, and Magdalena Turska. The integration of the Processing Model into the TEI infrastructure has been possible due to the efforts of the TEI Council with notable input of Lou Burnard. Implementation of the TEI Processing Model in XQuery has been the work of Wolfgang Meier and so was later the development of the TEI Publisher (initially under the name of TEI Processing Model Toolbox), made possible by strong support from eXist Solutions.
Having its roots in the TEI community, TEI Publisher is obviously well-suited to publishing TEI documents, but by no means are its applications limited to documents encoded in TEI (or TEI Simple) schema. Thanks to the universality of the Processing Model, the TEI Publisher can be made to work with any XML vocabulary as long as default processing models are defined for it. Moreover the processing model library can be used independently of the TEI Publisher app.
TEI Publisher is a free software released under GPLv3 licence. It requires eXist-db v3.0 and can be installed from the Dashboard via Package Manager.
We welcome and strongly encourage other contributions, both via community engagement and pull requests as well as financial support and other forms of cooperation. Ideas for future developments include:
preconfigured app templates to cover specific TEI use cases like EpiDoc, epistolary corpora or manuscripts, as well as support for different layouts (e.g. facsimile display). We are looking for your suggestions and contributions in this area,
more output options: we would welcome some TeX specialists to improve the current LaTeX output mode. There are also concrete plans concerning an interface to indesign,
a visual ODD editor to facilitate creation of processing model instructions,
extension for the TEI processing model library to transform other XML languages.
We hope you will find this project interesting and useful and encourage you to visit the project website and try it out together with new eXist-db release.
This has been around for a while, but it was recently brought to my attention that many users don't know it exists: the eXistdb package for the Atom editor was just released in version 0.4.1. Atom is a highly configurable, cross-platform text editor, which can be extended with thousands of user contributed packages.
The eXistdb package for Atom adds most of the functionality you know from eXide, including XQuery linting (via xqlint), function and variable autocompletion, code navigation, a database browser, variable refactoring, code templates, and more. Unlike eXide it supports two different workflows for developing eXist apps:
all files stored within the database
work on a file system directory and have all changes synchronized into eXist automatically
## Try it
The package is considered stable and easy to install:
install Atom for your platform
open the Preferences page
select "Install", search for the "existdb" package and install it
## v3.0 - February 9, 2017
It is our great pleasure to announce the public stable release of eXist-db v3.0.
We encourage everyone to upgrade to this new stable release. eXist-db v3.0 is the culmination of almost 1,500 changes made in the last two years bringing numerous new features and improvements. During this time eXist-db went through extensive stress testing demonstrating substantial performance gains confirmed in production settings.
### New Features
- Support for XQuery v3.1, including the array and map data types,
serialisation and JSON parsing
- Support for Braced URI Literals from XQuery v3.0
- Facility to boost attributes in the Lucene full text index
- eXist-db version detection for EXPath packages. Packages should explicitly specify which versions of
eXist-db they are compatible with; eXist-db v2.2 is assumed by default.
- Prototype support for Portable EXPath XQuery Extension Functions written in Haxe
- New service wrapper, Yet another java service wrapper (yajsw)
- New Jetty version (HTTP/2 etcetera)
### Improved Performance
Sequence type checking on recursive function parameters has been
drastically sped up
Lucene full-text and range indexes have been
switched to "near realtime" behaviour. This improves query
performance on frequently updated documents.
Performance boost for new range index.
Improved optimisation of wildcard steps in path expressions, e.g. prefix:and:name
Better performance for util:eval Optimisation of fn:fold-left and fn:fold-right
### Mission Critical Bug Fixes
There have been numerous bug fixes and enhancements since eXist-db 2.2, the most critical are:
Solved a potential deadlock which
manifested when storing XQuery files into the database under
certain conditions
Fixed a memory leak when storing query
results into the HTTP session; Web applications making use of
the HTTP session should now consume less memory and scale further
Fixed an occasional deadlock when shutting down the
database
Fixes to match highlighting with the Lucene full text index
Lucene range index now correctly handles != comparisons
Substantial improvements in whitespace handling in mixed content
Windows compatibility in service wrapper
Fixes in RESTXQ
Security fixes for privilege escalation
### Clean up and Refactoring
Rewritten HTML5 Serializer
Rewritten XML:DB and XML-RPC APIs
Updated to the latest version of RESTXQ
Improved Java Admin Client document viewing and editing
Clean up of eXist-db's Test suite
Extensive internal refactoring to exploit new Java 8 features
lambda expressions where possible
use of Optional
Java 7 auto closables
NIO.2
Upgrades of 3rd party libraries:
Saxon HE 9.6.0-7
Jetty 9.3.9.v2016051
Lucene 4.10.4
Quartz 2.2.3
Log4j 2.7
FOP 2.1
Tika 1.12 (Content Extraction module)
betterForm 5.1-SNAPSHOT-20160615
and many more
Removed legacy code:
SOAP API and SOAP Server
XACML Security feature
eXist's own Full-Text Index (replaced by eXist Lucene Full-Text Index)
Removed the Versioning extension; Now available as a separate EXPath Package
### Backwards Compatibility issues
eXist-db v3.0 is not binary compatible with previous versions of
eXist-db; the on-disk database file format has been updated,
users should perform a full backup and restore to migrate their data.
eXist.db v3.0 and subsequent versions now require Java 8;
Users must update to Java 8!
Due to the legacy Full Text Index being removed,
the text (http://exist-db.org/xquery/text) XQuery
module has also been removed. Users should now look toward
fn:analyze-string, e.g.
instead of using text:groups() use analyze-string()//fn:group,
instead of text:filter("apparat", "([pr])") use analyze-string("apparat", "([pr])")//fn:match/string())
There have been changes to some of the internal APIs. e.g. XQueryService has
been moved from DBBroker to BrokerPool.
EXPath packages that incorporate Java libraries may no longer work with eXist-db v3.0
and may need to be recompiled for our API changes; packages
should now explicitly specify the eXist-db versions that they
are compatible with.
eXist-db v3.0 is available for download from GitHub. The older Sourceforge download page is no longer updated. Maven artifacts for eXist-db v3.0 are available from our Maven Repository.