Just over a week and a half after we made our beta 0.8.0 release available to the public, we are very pleased to announce the release of our latest 0.9.0 beta release. This is one of our biggest updates ever, and it contains lots of goodies! Read on to find out about what this release contains, and how the changes could potentially impact you!
One of the biggest new additions for this release, and something we have wanted to implement for a while, is our new Dependency Injection Container. This replaces the simple Registry system we used in our prior versions. This allows us easily access all the elements of Grav easily, but more importantly, it allows us to easily override or replace parts of Grav dynamically. An example of this might be that we can easily add support to store data in an alternative data-store if we wished. It also allows us to set up relationships between all our Grav objects, making Grav that much more powerful.
Another key feature is the implementation of a proper Event Dispatcher for interaction with plugins. This allows our plugins to register themselves with the Event Dispatcher for increased flexibility and performance. Also we have renamed all our events to align better with the preferred syntax for the dispatcher.
The addition of File Stream Wrappers allow us to provide more flexible overrides of locations, and help Grav become more extensible. We now have a new
streams.yaml configuration that can be customized to easily extend the stream capabilities.
Some other requested, and very useful, additions for this release include the ability to turn on Markdown Extra support either globally or per-page. Markdown Extra provides some great enhancements to Markdown such as inline HTML, Markdown inside HTML blocks, assigning of CSS attributes such as class and ID to markdown elements, definition lists, and footnotes. We have also added media syntax directly in the markdown tags. This lets you take advantage of Grav's powerful media handling with simple markup, for example:
We have also added a new
random sort order for collections, as well as the ability to set the Tracy Debugger to auto-detect your environment. This way you can easily have the debugger enabled in your local development setup, but disabled in production. Another new feature is the Browser object which is available in code and Twig templates to identify specific browser properties such as platform and version.
Important Changes from 0.8.0
Because this is such a big release, there is a potential for some issues if you have built a site on version 0.8.0:
Changes to Themes
As you can see this is much cleaner now, and much more flexible.
Changes to Plugins
Plugins have changed quite a bit in this release. With the new DI container, the asset manager, updated event names etc, the process of writing a plugin is similar but quite a few things are different. We strongly advise you to check out the Plugin Tutorial, along with the documentation on the new Event Hooks to get a better idea on how the changes may impact you if you have written a custom plugin.