Tools for connecting C++ and Python (and Java)
The PicklingTools comes as a tarball of Python and C++ and Java source code. Click on one of the linksbelow AT THE BOTTOM OF THE PAGE to download the necessary version of PicklingTools.
November 13th, 2015: 1.6.1 Release
1.6.1 is the latest release; it's a minor bug fix release to 1.6.1. It fixes the FixedSizeAllocator's cross process shared memory hang problem.
October 2nd, 2015: 1.6.X Releases update
1.6.0 is quite a big release.
OC Serialization: supported by C++, and now a new Python C Extension module. Faster serialization than pickling and supports greater than 4 Gigabytes strings and arrays.
MidasTalker/Server: With OC Serialization supporting greater than 4Gig, had to make a backwards compatible change to allow larger strings to come over the socket. This affects all midas talkers and servers throughout the C++, Python and M2k baselines (M2k updates to OpalPythonDaemon for this).
C++ Val: now supports complex integers
Shared Memory updates: better support for shared memory error reporting. Added fixed size allocator and support for it with the streaming allocator.
July 31st, 2015: 1.5.X Releases update
1.5.4: Mostly minor bug fixes to have the shared memory tools work better.
1.5.3 features a bunch of bug fixes, plus better error messages if you mix DUAL SOCKET and SINGLE SOCKET code.
1.5.2. It features a bunch of small bug fixes, plus the introduction of the new Python seriallib which allows conversion back and forth between Python dictionaties and Windows INI fles and key-value lines.
1.5.1. Complete the transition to NumPy (from Numeric), fix documentaton spelling errors, move some timeout code from MidasTalker to MidasSocket (so MidasServer can access the send code with the timeout), rejiggered C++ baseline to work with -Wextra.
1.5.0. It is first release to handle Java support. Currently, there is support to write a Java client that can pickle and unpickle, but no server (coming later). There is support for textual Python dictionaries (from strings and files) as well as binary (pickled) format. Support is limited to Python 2.X series.
1.4.2 is a quick bug-fix release: it allows Jython to work with a Python MidasTalker (select bug fixed) and the Python C extension module to build with 2.6 and 2.7 versions of Python.
PicklingTools 1.4.1: Up until now, the XML to dict and dict to XML conversion tools were written either in Pure Python or pure C++. The pure Python routines were significantly slower (10x-100x) slower than their C++ counterparts. To battle this problem, we created the "cxmltools" module which wraps the C++ routines so they can be called from Python (and get the massive speedup!). We also cleaned up the arbitrary sized int interfaces: they were clumsy and needed a little more polish (see the CHANGES log for more discussion of some of the cleanup).
PicklingToolsis 1.4.0. The cross-process shared memory tools have been updated, with better documentation and testing. Currently one major application is using the shared memory pipes in a real-world production system. The XMLtools have also been updated to work with numpy.
Version 1.3.4 adds some minor M2k updates.
Version 1.3.3 adds a simple schema-like mechanism for validating dictionaries are well-formed, as well as some bug and performance fixes.
Version 1.3.2 added JSON support, NumPy support, and tools to write HTTP servers and clients.
Versions 1.3.0 and 1.3.1 concentrated on getting XML conversion tools available.
"Do souls look like pickles?" - Spongebob Squarepants
Version 0.71: Clean up
version 0.70: Dual-socket mode support
Version 0.40: ..too old...
Full CHANGE log
If you wish to see the entire CHANGES file (included in the PicklingTools distribution at the top-level), click HERE. This show all changes that up to the current release.
Changes in the first number (from release 0.96 to 1.00 for example) indicate major releases with possible incompatibilities. In general, though, the PicklingTools strives to be backwards compatible with previous releases. [Even the 1.00 release was released to some beta users to make sure it compiled and worked with their previous systems. The few incompatibilities were documented].