During the development process of PyAMF, three things were (and still are!) highly valued - compatibility (primarily) with the Flash Player, stability and features. We now have a pretty substantial test suite that ensures that we don't break anything (and if we do, the buildbots will let us know) from commit to commit.
One thing that was not given a whole lot of thought during all this was performance. Everyone knows the danger of premature optimisation so with the release of PyAMF 0.6 (still currently in beta) I wanted to show the performance improvements that have been made since the release of 0.4.
PyAMF provides pure python AMF codecs as well as an optional C extension. The pure python version allows PyAMF to run on App Engine, Jython and PyPy but runs 100% within the interpreter. This means all byte packing (AMF is a binary format), reference checking (AMF supports object references), type checking is done relatively inefficiently (when compared to C). If you are using CPython then you be able to take advantage of CPyAMF which is a Cython package developed specifically to relieve the interpreter of these responsibilities.
CPyAMF was initially introduced in 0.4 and ...
I am pleased to announce the release of PyAMF 0.6b2.
PyAMF implements Adobe's ActionScript Message Format such that Python applications can natively talk to Flash and Air applications.
Highlights of this release:
- A huge performance boost, especially for the c-extensions. Current benchmarks put this around an order of magnitude faster than 0.5.1 (pure python version is around 30% faster)
- Dropped support for Python 2.3, a start to a march to Python 3 compatibility
- Provide support for Django >= 1.2 and SQLAlchemy >= 0.6
- Switched the client from httplib to urllib2 and provided support for session cookies, gzip encoded responses and more!
- Provided support for AppEngine's BlobReferenceProperty
- Property synonyms are now supported
- Default AMF version has been switched from AMF0 to AMF3
For a detailed list of changes, see the change log.