Weblog » Features of the forthcoming Porcupine release
The forthcoming Porcupine release includes a whole new bunch of exciting features and improvements. This is a list of the most significant:
1. Python 3 compatibility. The new version will require Python 2.6 or later but it will also be Python 3 compatible. Since the bsddb module is deprecated, an extra dependency to pybsddb is added. Porcupine will continue to support both modules with pybsddb having priority over its predecessor.
2. High availability and horizontal scalability by using single master-multiple slave database replication to n Porcupine nodes. The web connector acts as a software load balancer for the back-end nodes using round-robin.
3. New redesigned database. The main Porcupine DB is now a b-tree instead of hash. All children of a container are now stored adjacently. Locality of reference plays an important part in database performance.
4. Support for JSON-RPC 2. JSON is more compact and readable than XML. All remote methods handle this transparently based on the content type of the request.
5. Enhanced OQL query optimizer.
6. Elastic schema that allows easy schema updates without requiring database updates. The database is physically inconsistent but the API enforces consistency. Each object becomes consistent the next time it is updated. This requires code updates since the __props__ class attribute of the content classes has significantly changed.
7. The upcoming release will also include a template engine (py-normal-template) that enforces MVC.
9. QuiX now supports right-to-left layouts for the Arabic speaking countries. The whole UI mirroring is handled transparently and this is done just by adding an extra attribute to the desktop widget.
10. Although all dates are stored in UTC, they were transferred using the server's time zone. Now this is no longer true. Dates are transferred in UTC format and converted to local dates on the client based on its time zone.
If you want to test-drive these new features check out the Porcupine development version found at http://github.com/tkouts.