========================
Changes in version 1.6.0
========================

UFL 1.6.0 was released on 2015-07-28.

- Change approach to attaching ``__hash__`` implementation to accomodate
  Python 3
- Implement new non-recursive traversal based hash computation
- Allow ``derivative(M, ListTensor(<scalars>), ...)`` just like list/tuple
  works
- Add traits ``is_in_reference_frame``, ``is_restriction``, ``is_evaluation``,
  ``is_differential``
- Add missing linear operators to ``ArgumentDependencyExtractor``
- Add ``_ufl_is_literal_`` type trait
- Add ``_ufl_is_terminal_modifier_ type`` trait and
  ``Expr._ufl_terminal_modifiers_`` list
- Add new types ``ReferenceDiv`` and ``ReferenceCurl``
- Outer product element support in degree estimation
- Add ``TraceElement``, ``InteriorElement``, ``FacetElement``,
  ``BrokenElement``
- Add ``OuterProductCell`` to valid ``Real`` elements
- Add ``_cache`` member to form for use by external frameworks
- Add Sobolev space ``HEin``
- Add measures ``dI``, ``dO``, ``dC`` for interface, overlap, cutcell
- Remove ``Measure`` constants
- Remove ``cell2D`` and ``cell3D``
- Implement ``reference_value`` in ``apply_restrictions``
- Rename point integral to vertex integral and kept ``*dP`` syntax
- Replace lambda functions in ``ufl_type`` with named functions for
  nicer stack traces
- Minor bugfixes, removal of unused code and cleanups
