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.

QuiX, the server's integrated JavaScript toolkit, 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 (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 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.

Helpful links
============

What is Porcupine?
http://www.innoscript.org/what-is-porcupine-web-application-server/

Online demo:
http://www.innoscript.org/porcupine-online-demo/

Downloads:
http://www.innoscript.org/porcupine-downloads/

Documentation:
http://www.innoscript.org/documentation/
_______________________________________________
Web-SIG mailing list
Web-SIG@python.org
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: 
http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com

Reply via email to