[Web-SIG] Porcupine Web Application Server 0.6 released
t.koutsovassilis at gmail.com
Sun Jul 19 18:18:17 CEST 2009
I'm pleased to announce the new version of Porcupine Web Application
Server, a Python based framework that provides front-end and back-end
technologies for building modern data-centric Web 2.0 applications.
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 firstly introduced in Python 2.6.
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 user predefined condition is true.
The Porcupine API is partially aligned with PEP 8. The majority of the
API calls are no longer camelCase 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.
milestone of supporting all the popular browsers including Opera, Safari
4 and IE8. The structure of the QuiX API has been re-factored by
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
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
(http://pablotron.org/?cid=1557), 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
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.
What is Porcupine?
More information about the Web-SIG