Version 0.0.7:
  - Overhaul the (internal) ScalarType API:
    . the overloads of convert_copy have been removed in favour of the variant that takes two ScalarPointers;
    . the single versions of add(_inplace) and friends have been replaced with more flexible add_into;
      batch compute methods and friends;
    . replaced single value uminus with uminus into with similar signature to to add_into and friends;
    . removed single value copy method;
  - Added constructor for ScalarPointer from type_id and pointer.
  - Implementations of ScalarType methods that are essentially the same for all types are implemented
    in a common implementation layer.
  - Added threading support in platform
  - add_into and friends have threading support if available and enabled.
  - Added default implementation of type_id_of so that non-specialized types
  look for a ScalarType object.
  - Greatly simplified the design of ScalarMatrix - it now only supports full,
  dense matrices.
  - Redesigned the interface between the Scalar linear algebra and
  MKL/BLAS+LAPACK.
  - Added function to query ring characteristics of a ScalarType - currently
  unused.
  - Added KeyScalarStream for constructing streams from array-like data more easily.
  - Implemented the `from_type_details` function for scalar types. This fixes a bug when constructing objects using the dlpack protocol.
  - Overhaul constructor for `LieIncrementStream`s from increment data to reduce
   number of copies (if possible) and to handle non-contiguous or oddly shaped
   data correctly.
  - Change implementation of `LieIncrementStream` to allow adding the parameter
  channel during construction.
  - Change implementation of `TickStream` to allow adding parameter channel
  during construction.




Version 0.0.6:
  - Externally sourced streams (sound-file streams) now support setting channel
  types/schema in factory function.
  - Added option for customising file name macro in exception throws.
  - Made some improvements to the internal interface of ScalarType to allow more
   efficient implementations of vectorised operations.
  - Added fast "is_zero" method to Python algebra objects.

Version 0.0.5:
  - Added free functions for performing free-tensor, shuffle, half-shuffle
  multiplication between pairs of tensors (of either kind).
  - Added free function for applying the adjoint of left free tensor
  multiplication to arbitrary tensors.
  - Improved exception usage, messages now include filename, lineno, and
  function name to help locate c++ exceptions passed through to Python.
  - Basis objects in Python are now iterable.
  - Added `split_n` and `to_index` methods to Tensor key.

Version 0.0.4:
  - Overhauled the RPY_CHECK macro so it now gives much better contextual
  information.
  - Readme updated to reflect PyPI installation with wheels.
  - Antipode is now implemented in libalgebra_lite, and exposed to Python for
  Free tensors.
  - Streams now carry a support interval, outside of which the signature will be
   return trivial.
  - Build requirements fixed for non x86 platforms.
  - Expanded coverage of pytype stub file.

Version 0.0.3:
  - Added datetime interval support.
  - Integrated schema reparametrisation into stream signature methods.
  - Fixed bug in names of scalar types, names now display correctly.
  - Fixed bfloat16 given wrong scalar type code.
  - Added half precision float and bfloat16 to py module
  - Added real partition class and Python interface.
  - Implemented simplify method on Streams.
  - Added polynomial coefficients
  - started an examples folder

Version 0.0.2-alpha:
  - Added datetime and timedelta object support to tick data parsing.
  - Expanded build system to include more versions of Python.
  - Stabilised compilation on all three platforms.
  - Fixed numerous bugs in the build system.

Version 0.0.1-alpha:
  - First alpha release.
