New Features as of version 1.06 Feb. 23, 2010 This is a true Bug Fix release. It's kind of a big bug, so we recommend updating or patching an earlier release. A true bug in the C++ code for Python Pickling Protocol 0. This affects all the C++ implementations: the M2k, the X-Midas option tree and of course just the raw C++: If you serialize a table with lots of repeated strings from Python using Python Pickling Protocol 0, it is possible that a reader using C++ to deserialize the table will seg fault. The problem is intermittent, but a one-file fix will fix the problem: m2pythonpickler.h Note that going from C++->Python or Python->Python or C++->C++ shouldn't have any problems. It's ONLY when Python serializes using Python Pickling 0 and C++ tries to deserialize it. Full Discussion: When Python pickles tables, it tries to to "reuse" values it has already put in the serialization string. In particular, the strings that get memoized are cached on the stack for speed. The memo "cache" is implemented as an Array which can *occasionally* resize: if the resize happens, all the memos go bad. To fix it, we note when the resize is about to happen and adjust all the memos appropriately. It happens very infrequently, so it's not an expensive fix. Added a new Midas 2k component: OpalPythonServer. The original OpalPythonDaemon uses file descriptors to manage connections, and can occasionally go wonky if an old client disconnects and a new client immediately reconnects, getting the same file descriptor. The OpalPythonServer fixes this bug. It should be a plug in replacement, but does not require BlockingConduits: if your old code use BlockingConduits when connecting to the OpalPythonServer, simply comment them out (you'll get a warning) and everything should work fine.