August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
Kamaelia Release Notes
0.4.0
Summary
Kamaelia 0.4.0 is a consolidation, documentation and optimisation enhanced release.Whilst there are a wide variety of new components, existing functionality has been consolidated, and is now in use in a handful of (beta) production systems.
Kamaelia 0.4.0 requires the use of Axon 1.5 (released at the same time as this release).
Also, virtually all components now have highly detailed documentation inside their sourcefiles. A (large) subset of this is available here:
The examples have been duplicated onto the website, and are here:
Our tutorial for helping getting started is here:
This has now been battle tested by a good few dozen people, and we feel is a good introduction to Kamaelia's approach, and others have also stated they find it a good way of understanding generators too. (even if they're not interested in Kamaelia)
Notable New Components
New Examples
A collaborative whiteboard "sketcher" which is both a server to other
whiteboards and/or a client to other whiteboards. (Due to changes, when
not in use CPU usage for these is as close to zero as it can be for any
software) This is also a good example of usage of the backplane
component.
This application is particularly nice to use in conjunction with a
tablet PC!
An overview of the sketcher can be found on our systems page:
Examples for using the tools for timeshifting including:
Tuning into a TV channel on Freeview and recording it to disk
Dumping a DVB multiplex transport stream
Demultiplexing a prestored DVB multiplex
A system for grabbing a TV channel and it's now & next
information, such that this can allow the programmes to be captured and
transcoding as individual programmes for watching later.
This is the core of the BBC Macro system (an internal prototype) that
can be seen here:
An overview of the architecture can be found here:
Essentially, this allows you to build your own space efficient PVR.
General overview of other large scale changes
Massively improved documentation across the board (no file left untouched). This is all largely in the form of pydoc based documentation, a fair chunk of it is available at
However the documentation in those files goes further than that, including many, many more examples than are even at:
Large scale removal of cruft and change over to use pipelines and graphlines where suitable. This is most noticable inside the examples.
Code quality of a number of pieces of code has been improved:
A small number of components have been rewritten from the 3 callback form into the generator form of component to simplify their implementation.
Shutdown handling is now more consistent.
Some core components have been rewritten, test first, now that their expected usage is clearer, making the system more dependable.
Throughput handling has also generally been improved. Many
locations where the following was written:
if self.dataReady("inbox"):
d = self.recv("inbox")
e = SomeTransform(d)
self.send(e, "outbox")
We've discovered gain better throughput if you write:
while self.dataReady("inbox"):
d = self.recv("inbox")
e = SomeTransform(d)
self.send(e, "outbox")
Improved handling of child components, specific examplars are pipeline & graphline components.
Increased use of .activate() and .run() methods rather than manually using the Axon.Ipc.newComponent message of manually starting the scheduler.
Peppered through the code is some hints to improve introspection
and detection of components for both code generation and interactive
graphical pipeline builder applications. Example lines added to
files:
__kamaelia_components__ = ( Annotator, RecoverOrder, )
__kamaelia_prefab__ = ( SRM_Sender, SRM_Receiver)
These can be extracted using Kamaelia.Data.Repository
Pygame related changes
These two changes combined allow the system to become quiescent, where possible.
Detailed Overview of other changes
Initial release, largely rewritten or includes new components:
Changed to take advantage of Axon changes allowing quiescent behaviour:
Kamaelia/Internet/ConnectedSocketAdapter.py
Kamaelia/Internet/Selector.py
Kamaelia/Chassis/ConnectedServer.py
Kamaelia/Internet/TCPClient.py
Kamaelia/Internet/TCPServer.py
Kamaelia/UI/PygameDisplay.py
Kamaelia/UI/Pygame/Button.py
Kamaelia/Util/Introspector.py
New/Changed functionality to existing components:
Namespace cleanup:
Michael, June 2006