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)

Axon Release Notes

1.5

Summary

Axon 1.5 is a major performance related release for Kamaelia's core component system. There have been a number of core changes, some highlights:

Zero copy delivery of data from producers to consumers

The system scheduler is now reactive to threaded components, meaning the system can truly sleep when there is nothing to do.

This means self.pause() REALLY pauses the microprocess, and may result in the component not receiving data. (If you call self.pause, you should really mean it). Generally this is only used at an optimisation stage.

Threaded components are now fully supported with the following caveats:

Aside from these caveats, creating and using a threaded component is the same as a normal generator based one, except you simply don't have yield statements. You obviously use a different base class.

The use of the "ipc" message Axon.Ipc.newComponent for child component startup has been deprecated in favour of the simpler API:

Despite all these changes, components written for earlier versions of Axon will continue to work as before.

Documentation has also generally improved,and is included in the the code files for access via pydoc/help.

Changelog

Major subsystem changes aimed at performance enhancements

Message Passing and Delivery Optimisation Changes

Flow Control Inversion

Threading Support

Other

Axon.Component.Component

Axon.Microprocess.Microprocess

Axon.Scheduler.Scheduler

Axon.Ipc

Synchronous Links & Link Tracing API

As part of the changes to box optimisations, there has been a change to the API for synchronous links. This is currently our best guess as to what we think makes sense, but should be considered experimental until Axon 2.0 (We'll endevour to keep the current API however for as long as it makes sense).

When a synchronous link reaches maximum capacity, attempting to send data to the synchronous link results in an exception being thrown. This includes the current size of the pipe, and it's maximum capacity. The exception thrown is as follows:

Detailed Changes to files

Changes to Component class:

Misc:

Adaptive inboxes changed into a mixin class:

New Axon/Ipc.py Messages:

Changes to allow scheduling to be reactive to threaded components:

Largely Rewritten or initial release:

Improved documentation:

Test suite moved out into separate tree. (being inside the installation area doesn't seem to make sense)

Obsolete, due to box optimisations:

Changed due to removal of the Postman:

Michael, June 2006