Porcupine v0.6 is released

Posted by tkouts on 18 July 2009 | 2 Comments

Tags: porcupine, quix

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.

QuiX has reached the major milestone of supporting all the popular browsers including Opera, Safari 4 and IE8. The structure of the QuiX API has been re-factored by introducing JavaScript namespaces (i.e. XButton has become QuiX.ui.Button, XMLRPCRequest has become QuiX.rpc.XMLRPCRequest). Of course backwards compatibility is still preserved in order not to break the existing code.
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:

Porcupine upgrade instructions,

How to migrate your applications to the latest version.

Post your comment


  • Hi tkouts,

    Looks like u put gr8 efforts.
    Keep it up.


    Posted by siva, 24/11/2009 12:12pm (9 years ago)

  • Congrats!

    Posted by George Moschovitis, 19/07/2009 11:21am (10 years ago)

RSS feed for comments on this page | RSS feed for all comments

Clicky Web Analytics