Traits CHANGELOG
================

Release 4.4.0
-------------

The major new feature in this release is a new adaptation mechanism in the
``traits.adaptation`` package.  The new mechanism is intended to replace the
older traits.protocols package.  Code written against ``traits.protocols`` will
continue to work, although the ``traits.protocols`` API has been deprecated,
and a warning will be logged on first use of ``traits.protocols``.  See the
'Advanced Topics' section of the user manual for more details.

The release also includes improved support for using Cython with `HasTraits`
classes, some new helper utilities for writing unit tests for Traits events,
and a variety of bug fixes, stability enhancements, and internal code
improvements.


Change summary since 4.3.0

New features

 * The adaptation mechanism in Traits, formerly based on the 'traits.protocols'
  package, has been replaced with the more robust 'traits.adaptation'
  package. (fc1d74a)
 * Added utility function for importing symbols (name, classes, functions)
  by name: 'traits.util.api.import_symbol'.
 * Users can set a global tracer, which receives all traits change events:
  `traits.trait_notifiers.set_change_event_tracers`

Enhancements

 * Update benchmark script. (9f0a7a5)
 * traits.util.deprecated: use module logger instead of root logger. (cc8988d)
 * Provide an informative message in AdaptationError. (da1d691)
 * Allow HasTraits classes to be cythonized. (ab62482)
 * Improve tests for cythonization support. (2fb0661)
 * Extending various trait testing helpers (9d3bd38)

Refactoring

 * The Traits notification code has been reworked to remove code duplication,
   and test coverage of that code has been significantly improved. (7269ccd)

Fixes

 * PR #93: Fix Adapter object initialization.
 * Issue #95: Fix cyclic garbage arising from use of the WeakRef trait type.
 * Issue #97: `TraitSetObject.copy` now returns a plain set
   rather than an uninitialized `TraitSetObject` instance.
 * Issue #100: Fix cyclic garbage arising from dynamic trait change handlers.
 * Fix race condition when removing a traits listener. (3f318a9)
 * Fix ugly interaction between DelegatesTo change handlers, dynamic change
   handlers and two levels of dynamic intialization. (56da71a)
 * Use a NullHandler for all 'traits' loggers. (23d4708)
 * Fix race condition in TraitChangeNotifyWrapper.listener_deleted (6eea8d2)
 * Fix leaking notifiers. (9bcbd62)
 * Fix failing special instance trait events. (87d5a8f)
 * Fix hiding KeyError exception inside trait default initialize method.
   (5e7e3bc)
