We are very happy to announce the first pre-release of Unity 2: 2.0.0-RC1!
The primary goal of this pre-release is to ask you, Unity users, to give it a test drive, especially focusing on:
- import of data from the 1.9.x version
- check if the update instructions are clear and complete
- verify if the – often very complex – integration scenarios that you use work without any regressions.
Thank you in advance for your cooperation!
The biggest (by far!) change mostly won’t be noticeable for you: we have fully rewritten the storage layer of Unity, which was not designed and implemented in a clean way from the very beginning. Now it is carefully designed and covered by well over 600 tests (and counting), run for all supported storage mechanisms. We have also introduced many improvements in the software architecture and project organization. It is still not perfect (we strongly believe that code can be always improved!) but we eliminated hopefully all system-wide problems. Further cleanups and refactorings can be made little by little in isolation. That change provides a great gain for all of us: we will be able to develop new features more quickly and effectively.
There are also practical implications of the aforementioned refactorings and couple of other notable changes:
- As storage layer is properly separated… it can be changed. If you are interested in development of a storage backend using say Cassandra of MongoDB – feel free to contact us to get some initial support. But we also created a new, alternative storage mechanizm on our own and ship it already now. It is based on the in-memory grid technology powered by an excellent Hazelcast stack, which gave name to this storage backend. Hazelcast storage is currently still experimental (and will be so for the next one or two updates of Unity) but you are welcome to give it a test right now. It provides built-in support for HA, clustering and is significantly faster then the traditional RDBMS (MySQL or PostgreSQL) backend. And you can switch between them two!
- The stable, traditional RDBMS engine is now significantly faster – this is an effect of our optimizations and cleaner design.
- We have changed logging subsystem to log4j v2. The very dated log4j v1 had its limitations, the v2 is super-charged with tons of features and is probably the fastest of the mature Java logging implementations around. Speed is always disputable, but finally we shouldn’t have limits in logging output control, rolling, filtering etc.
- We have added support for customized handling of system events in Unity. This is a super-powerful mechanism, allowing you to enhance Unity behavior to a degree which was not possible before. So far the feature allows for binding Groovy scripts which are invoked in effect of server startup events (replacing the old Java content initializers). You can relatively simply prepare a script that populates Unity database in any way you prefer, including even the most advanced settings. What is more you can add Groovy scripts to be triggered after any operation of Unity platform – to implement custom notifications auditing or custom side-effects inside Unity: you have full access to platform API from script as well as to the original operation invocation context.
- Local password credential storage was replaced with a more secure one. The one used in Unity 1.9 was configurable and allowed to have even very insecure settings. We have noticed that some sites were using such not so secure settings. Now even weakest allowed settings are quite secure, and what is more we are prepared for changing key derivation functions in future. Note that by default upgrade won’t force your users to change the password stored using legacy mechanism, and so changing it to be stored using new mechanism. Still we strongly suggest to force the users to do so: there is a new checkbox controlling this behavior in password credential settings.
- RPM installation integrates now with systemd, the old “init.d” startup scripts were removed.
- E-mail identities are now NOT treated as case sensitive before @ – as they are in the Unity 1.x.
There is a separate update HOWTO providing detailed instruction on upgrade.
Here you see the updated documentation for 2.0.0-RC1.
The status of 2.0.0-RC1 is as follows:
- we have finished all developments planned for 2.0.0
- we will only add fixes for bugs found in the RC1 and port all changes that are developed in parallel for the currently stable 1.9.x branch
- we still test 2.0.0 on our end, however it should be already relatively stable
Looking forward for your feedback!