* Bugfix: Clear KeyError in CStruct getattr before trying GetAttr, otherwise the KeyError may "leak out". Also, only clear the error and attempt GetAttr if the original error was a KeyError.
2.3.0
~~~~~~~~~~~~~~~~~~
* Add mixin class `Frozen` to make read-only versions of a dict-derived class (typically a Struct or a subclass there of.)
* Use the `Frozen` mixin to implement `FrozenStruct`
2.2.0
~~~~~~~~~~~~~~~~~~
* Add keyword arguments to `merged` function.
2.1.2
~~~~~~~~~~~~~~~~~~
* Redo the C implementation to be a "heaptype", and remove the hack of setting `__dict__` = `self`. Instead, `object` will control the type storage, letting us "insert" attributes into the object without polluting the `dict`.
2.0
~~~~~~~~~~~~~~~~
* slim down interface to again match dict * add tri.struct.merged function to join structs * add optional C implementation to speed up instantiation
1.0
~~~~~~~~~~~~~~~~
* Struct with attribute & dict interface * __add__ and __or__ to combine structs