Weblog » Porcupine v0.6 is released
At last the new version of Porcupine is released. During the past months, I have put a lot of effort for making this release finally available. It includes a new whole bunch of new features and improvements, mainly aimed towards scalability.
The server now supports multiple processes by using the "multiprocessing" module introduced in Python 2.6. Unfortunately, due to a multiprocessing issue - which I hope will be resolved in later Python releases - the win32 executable doesn't support this new feature yet. Moreover, the new win32 setup executable comes with Microsoft's C++ 2008 redistributable libraries in order for the server to install correctly.
The Porcupine database now supports indexes declared at a server-wide scope inside the Porcupine configuration file (porcupine.conf). Currently, the indexes are used for common database usage patterns such as getting the children of a container, but not yet fully leveraged by OQL. For the time being, simple queries like
select something from 'container_id' where indexed_attribute=value
will leverage the index structure.
The Etag HTTP header is now fully supported for static files. For dynamic requests a new pre-processing filter is included that allows conditional Etags, meaning that an Etag header will be generated only if a predefined condition is true.
The Porcupine API is partially aligned with Python's PEP 8. The majority of the API calls are no longer camel case and such calls are considered deprecated (i.e. the Container's getChildren method is now get_children). Check the server's log thoroughly for deprecation warnings and make the appropriate changes.
The redraws have been accelerated by using some sort of internal cache mechanism that prevents the core from calculating the same widget parameter twice.
Another great feature combined with the server side Etag support is the ability to persist data sets on the browser side. For accomplishing this kind of functionality QuiX includes PersistJS, a lightweight persistence library, that uses the appropriate persistence mechanism for different browsers including Google Gears, globalStorage, localStorage, openDatabase etc.
Auto-sized widgets are now finally supported. Their size is automatically adjusted based on their contents. Widgets supporting this kind of feature include labels, icons, buttons and boxes. Auto sized boxes require all their children to have fixed sizes or being auto-sized themselves.
Another important improvement is a universal base Widget implementation that now allows integration with non-Porcupine web applications more easily.
Other notable new features and improvements include themes support for QuiX, new optimized transactions, a lightweight rich text editor, new cookie based and database session managers (required for multi-processing setups) and a new Shortcut content class.
This version requires Python 2.5 or later but not supporting Python 3.0 yet. Finally, in order to upgrade your installation to the newest version you will also need to upgrade your web connector to the latest version.
The new connectors are available in the Web Connectors downloads page.
The following wiki pages contain useful information for upgrading to the latest version: