Release Notes for XWiki 9.0
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.
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=fileAdded 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
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.
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.
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
- Confluence related modules now have their own life. See Confluence project page.
Upgrades
The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering, XWiki Platform and XWiki Enterprise):
- Tika 1.14
- Bootstrap Select 1.12.0
- Jest 2.0.3
- JGroups 3.6.12
- Quartz Scheduler 2.2.3
- Joda-Time 2.9.6
- Solr 6.3.0
- httpcore 4.4.6
- Guava 20.0
- Jackson 2.8.6
- Infinispan 8.2.5
- Gson 2.8.0
- Logback 1.1.9
- Plexus component annotations 1.7.1
- slf4j 1.7.22
- Bouncy Castle 1.56
- commons-compress 1.13
- ASM 5.2
- cssparser 0.9.21
- httpclient 4.5.3
Translations
The following translations have been updated:
- Catalan
- Czech
- Danish
- German
- Spanish
- French
- Hindi
- Italian
- Latvian
- Dutch
- Norwegian
- Polish
- Portuguese (Brazil)
- Russian
- Slovak
- Swedish
- Turkish
- Vietnamese
Tested Browsers & Databases
Here is the list of browsers we support and how they have been tested for this release:
Browser | Test Result | |
---|---|---|
Google Chrome | Not Tested | |
Mozilla Firefox 51 | Jira Tickets Marked as Fixed in the Release Notes | |
Internet Explorer 10 | Not Tested | |
Internet Explorer 11 | Not Tested |
Here is the list of databases we support and how they have been tested for this release:
Database | Test Result | |
---|---|---|
HyperSQL | Not Tested | |
MySQL | Not Tested | |
Oracle | Not Tested | |
PostgreSQL 9.6 | Jira 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%
Speed
Actions | Difference | |
---|---|---|
Jetty startup | -23% | |
First access | not existing page without UI | similar |
not existing page with UI | similar | |
Reload | not existing page without UI | similar |
not existing page with UI | similar | |
empty page without UI | similar | |
empty page with UI | similar | |
Main.WebHome without UI | similar | |
Main.WebHome with UI | similar | |
SOLR | Full SOLR reindex | similar |
SOLR sync when index is empty | similar | |
SOLR sync when there is nothing to do | slightly slower | |
Result of search finding lots of results | similar | |
Result of search finding one result | similar | |
Rendering | Page with 1000 macros without UI | similar |
Page with 1000 html macros without UI | similar |
Memory
Actions | Difference |
---|---|
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:
- Wiki Model is actually internal from XWiki point of view
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.rendering.wikimodel.confluence.ConfluenceExtendedWikiParser
- Violation type:
- Wiki Model is actually internal from XWiki point of view
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.rendering.wikimodel.confluence.ConfluenceImageWikiReferenceParser
- Violation type:
- Wiki Model is actually internal from XWiki point of view
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.rendering.wikimodel.confluence.ConfluenceInternalWikiScannerContext
- Violation type:
- Wiki Model is actually internal from XWiki point of view
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.rendering.wikimodel.confluence.ConfluenceWikiParser
- Violation type:
- Wiki Model is actually internal from XWiki point of view
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.rendering.wikimodel.confluence.ConfluenceWikiReferenceParser
- Violation type:
- Wiki Model is actually internal from XWiki point of view
- Violation type:java.class.removed
- Code:## Old:
class org.xwiki.rendering.wikimodel.confluence.ConfluenceWikiScannerContext
- Violation type:
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