The forthcoming Porcupine release includes a whole new bunch of exciting features and improvements. This is a list of the most significant:
Before releasing Porcupine v0.6 I have conducted a series of stress tests using Pylot. The aim of one of these stress tests was to benchmark Porcupine under extreme race conditions.
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 Porcupine Subversion repository will no longer be maintained. I have recently moved the repository to github. There you can find all the new exciting features for the upcoming release (hopefully to be released this month) including:
- Multiprocessing support for Python 2.6
- Database indexes
- QuiX namespaces with backwards compatibility i.e. "Label" is now "QuiX.ui.Label"
- Support for QuiX themes
- A lightweight rich text editor
- Support for Opera 9, Safari 4 and IE 8
- Conditional Etag support
- Persistent data sets on the client side using PersistJS combined with the 304 (Not Modified) response code for POST requests (remote method calls).
- Redesigned transactions
- Database and cookie based session managers
- New optimized web connectors (including out of the box support for mod_wsgi)
- and many more...
The new repositories can be found at http://www.github.com/tkouts.
Porcupine v0.5.2 is finally here. This release includes the brand new version of QuiX supporting the latest releases of Firefox, Safari and Chrome browsers but also introduces a couple of new exciting enhancements. A popular request for QuiX has always been an effects module. This release has a new small effects module that initially supports fade, wipe and slide effects. Furthermore, the newest version includes an enhanced list view widget implementation with no more wobbling headers and great support for large datasets by using asynchronous rendering. Finally, the base widget class has a new "query" method for performing advanced queries on the widgets hierarchy and a new auto complete widget contribution.
The last days I have been wondering what it takes to have multiple Porcupine processes running on SMP systems, as the first step towards scalability. Since almost all of the modern CPUs are multi-core and due to the Python's Global Interpreter Lock, in order to take full advantage of a CPU's horsepower is to have multiple Porcupine processes (sub-processes to be precise) all accessing the same database.
The latest official release is not compatible with Firefox 3. This is because Firefox 3 has added the "charset" directive in the Content-Type HTTP header. As a result Porcupine cannot detect an XML-RPC request initiated by Firefox 3. Here is a quick fix.
This small patch fixes the size of list views contained in windows opened while exploring containers on the Porcupine desktop. This is mostly noticeable while the list views have their scroll bars displayed. Download the following file and copy it inside the "org/innoscript/desktop" folder.
This release is a major breakthrough for Porcupine. The two main new concepts introduced on the server side are the services and the web methods. Porcupine's architecture is now based on configurable services running over a common object database. Currently, the supported service types include an asynchronous network server and a scheduler used for executing Python code at predefined fixed intervals. In the upcoming releases there are plans for new service types to be added including persistent queues, loggers etc.
Web methods have replaced servlets completely and they are actually smart Python decorators which allow you to add methods to content classes dynamically (a technique also known as 'monkey-patching'). These methods become directly accessible over HTTP and they are mainly used for serving all kinds of UIs and RPC requests. Consequently, this release does dot include servlets of any type meaning that you have to migrate your applications manually.