# Release Notes
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.
### 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 offn:fold-left
andfn: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 towardfn:analyze-string
, e.g.- instead of using
text:groups()
useanalyze-string()//fn:group
, - instead of
text:filter("apparat", "([pr])")
useanalyze-string("apparat", "([pr])")//fn:match/string()
)
- instead of using
- There have been changes to some of the internal APIs. e.g.
XQueryService
has been moved fromDBBroker
toBrokerPool
. - 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.
## Development
For all details see our commits