Release Notes for XWiki 9.0

Last modified by Thomas Mortagne on 2017/03/24

This is the release notes for XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise. They share the same release notes as they are released together and have the same version.

This release marks the start of the 9.x cycle and features mostly developer and admin feature improvements. The most notable ones are the improved handling of big attachments and filesystem Recycle Bin.

The following regressions were found after this version was released. We recommend using the 9.1 release (when it'll be available).

New and Noteworthy (since XWiki 8.4.4)

Full list of issues fixed and Dashboard for 9.0.

For Users

No changes!

For Admins

  • New filesystem recycle bin: To work around database limitation when deleting documents with a lot of attachments a new file recycle bin component has been introduced.

    You can enable in xwiki.cfg configuration file with the following:

    xwiki.store.recyclebin.content.hint=file
  • Added support for attachments bigger than 2GB: Attachment sized used to be limited by the size of a Java integer (2,147,483,647), the size is now a long (9,223,372,036,854,775).

  • The Active Installs pings are now sent over HTTP using a User Agent of XWikiActiveInstalls. This is important since some servers (such as CloudFlare) consider requests that don't have a User Agent set as being "spammy" request and blocks them. This makes the Active Installs ping module a better citizen.

  • Features of extensions are now sent by active install. These are the various extension ids under which a given extension is known. Usually used to relocate extensions under a new extension id.

For Developers

Better handling of webjar extensions

 
A new webjars Maven extension is now available to package webjar extensions the "standard" way. It automate a bit of plumbing when producing webjar artifact with Maven and more importantly it explicitly indicate that those are webjar so that Extension Manager apply special handling for them (which usually means not requiring programming right to install them).

See WebJAR Maven Handler for more informations about the Maven plugin.

If you can't depend on 9.0 yet you can also use <xwiki.extension.jar.type>webjar</xwiki.extension.jar.type> Maven property which have pretty much the same effect from Extension Manager point of view (for someone installing your extension on 9.0+ of course).

XAR export/import changes

 

  • The XML produced in XAR files is now following the XML 1.1 specification (instead of 1.0). Since it's mostly about supporting thing that were simply not working before there should not be any retro compatibility issues.
  • All from/toXML methods located in classes like XWikiDocument, BaseObject, BaseClass, etc. are now based on Filter modules which became the only way to produce XAR XML format. The only difference remaining when using xwiki.action.export.xar.usefilter and xwiki.action.import.xar.usefilter properties in xwiki.cfg configuration file is the handling of the XAR packaging.

Filesystem templates now have programming right by default

 
It was decided to give filesystem template programming right by default. The used to be executed with the right of the current document.

Mandatory documents improvements

 

  • AbstractMandatoryDocumentInitializer have been made public (and improved a bit). It's very useful to initialize documents/classes required by an extension and there is no reason to forbid contrib extensions to use it.
  • An AbstractMandatoryClassInitializer base class have also been added to help class related mandatory initializers to concentrate on how they want the class to look like and not deal with how to migrate it anymore. Just need to implement createClass.

Option to use custom temporary file name for download

 
The temp action supports a new parameter (force-filename) to indicate the file to pass to the browser when force-download is enabled. See Standard URL Format for more.

Solr search without programming right

 
It's now possible to do Solr request without programming right. In such a case the result will be filtered based on current script author right.

Miscellaneous

  • Localization Script service allow passing the Locale to search for (instead of current Locale).

  • New Namespace class: A new org.xwiki.component.namespace.Namespace has been introduced to help manipulate namespace in components and extensions world. It's mostly a helper for now but will probably be used more and more in APIs.

  • DefaultReaderInputSource and DefaultWriterOutputTarget now support closing the wrapped Reader/Writer.

Moved Modules

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise):

Translations

The following translations have been updated: 

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

BrowserTest Result
Chrome30.pngGoogle ChromeNot Tested
Firefox30.pngMozilla Firefox 51Jira Tickets Marked as Fixed in the Release Notes
IE30.pngInternet Explorer 10Not Tested
IE30.pngInternet Explorer 11Not Tested

Here is the list of databases we support and how they have been tested for this release:

DatabaseTest Result
hypersql.pngHyperSQLNot Tested
mysql.pngMySQLNot Tested
oracle.pngOracleNot Tested
postgresql.pngPostgreSQL 9.6Jira Tickets Marked as Fixed in the Release Notes

Performances tests compared to 8.4.4

Summary

There hasn't been much work on performance in 9.0 so it's very similar to 8.4.4. The speed up in the Jetty startup is because Let's Encryp extension has been removed in 9.0.

"similar": difference is lower than 10%
"slightly": difference is lower than 20%

Note that most of the speed related values are an average of very moving results, a lot of things is happening during a HTTP request and it's far from stable duration (that's why 10% may sounds a lot for something called "similar" but the variable can go up and down around 5% sometimes so 10% average is really not that much of a clear win). Dumbbench based tests are executed several times and the lowest result is selected. 

Speed

ActionsDifference
Jetty startup-23%
First accessnot existing page without UIsimilar
not existing page with UIsimilar
Reloadnot existing page without UIsimilar
not existing page with UIsimilar
empty page without UIsimilar
empty page with UIsimilar
Main.WebHome without UIsimilar
Main.WebHome with UIsimilar
SOLRFull SOLR reindexsimilar
SOLR sync when index is emptysimilar
SOLR sync when there is nothing to doslightly slower
Result of search finding lots of resultssimilar
Result of search finding one resultsimilar
RenderingPage with 1000 macros without UIsimilar
Page with 1000 html macros without UIsimilar

Memory

ActionsDifference
Heap Memory after jetty startup-10MB
Heap Memory after full SOLR index+6MB

More details on performance comparison on single wiki between 9.0 and 8.4.4.

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your 

Issues specific to XWiki 9.0

  • Confluence syntax parser is not embedded anymore. If you have documents using the syntax confluence/1.0 you can install Confluence syntax 1.0 extension. Note that the current version of the Confluence syntax parser is 1.1.

API Breakages

The following APIs were modified since XWiki 8.4.4:

Failed to execute the [groovy] macro. Cause: [startup failed: Script1799.groovy: 9: unable to resolve class XmlSlurper  @ line 9, column 12.      result = new XmlSlurper().parseText(xml)                ^  1 error ]. Click on this message for details.

Credits

The following people have contributed code to this release (sorted alphabetically):

Alex Henrie
Ecaterina Moraru (Valica)
Eduard Moraru
Guillaume Delhumeau
Marius Dumitru Florea
Pascal Bastien
Sergiu Dumitriu
Thomas Mortagne
Veronika Koltunova
Vincent Massol

Get Connected