As St. Patrick's Day approaches and before we get too preoccupied with celebrating, we have the latest release of Lithium ready for consumption. Lithium 0.7 received 170 commits from 6 different developers and puts us one step closer to a stable release.
From day one, Lithium placed a high importance on document oriented database support. We continue to believe that rapidly building performance minded and flexible applications will benefit greatly from using the new approach to data storage. However, we still understand the value traditional relational databases bring to many applications. To this end, we have implemented a large subset of the functionality required for integrating and using relational databases in Lithium 0.7. At the moment, MySQL is the only database that passes the integration test (`SourceTest`), but the foundation is now laid for SQLite3, PostgreSQL and others to follow suit. Work is already progressing on MSSQL through the [li3_mssql plugin](http://rad-dev.org/li3_mssql/wiki), and any contributions to this or other database implementations are greatly appreciated.
In addition to SQL support, Lithium 0.7 also exposes a strategy implementation for `Adaptable` classes. Strategies provide an abstraction for modifying how data is transferred and applied to an adapter. For example, you might want to serialize your cache data when you use `Cache::write()`, and unserialize it when read from a `Cache::read()` call. This functionality is easily achieved through a `Serializer` strategy, which is included in the core. `Base64`, `Json` and `Serializer` strategies for the `Cache` adapter interface have been implemented, and additional strategies are in progress for other `Adaptable` subclasses.
If you look at the [ changelog](http://rad-dev.org/lithium/wiki/releases/0_7), you will see that g11n received some more great improvements and a highly improved test coverage percentage.
Several optimizations made it into various namespaces and the bootstrapping process has been improved to help delegation of your applications core features. Some of the changes are not backwards compatible with earlier releases:
- Dispatcher::run() now requires a `Request` object as its first parameter. See `webroot/index.php` for reference.
- Plugins are now just like any other Library. The "plugins" directory in app/libraries has been removed. Adding plugins is now the same as adding any other library, e.g. `Libraries::add('li3_docs');`.
- New Bootstrap files and removal of `switchboard.php` in favor of `bootstrap/action.php`,
- `Libraries::add('app', array('default' => true));` in bootstrap/libraries.php will denote your application as the 'default' library.
- `Connections` no longer loads connections.php. Enable it in `config/bootstrap.php`.
- `Connections::add()` only takes two params now. Refer to `config/bootstrap/connections.php`.
A 2-hour presentation on PHP 5.3 and Lithium can be read and heard here: [http://lithify.me/presents](http://lithify.me/presents)
We have been doing well with our RAD schedule and iteration-friday, and we have no intention of slowing down - We are on track for stable release by early summer 2010.
Hopefully all of this comes as exciting news for everyone who has been following the project. As always, we welcome contributions in any way, shape or form.
~ gwoo