Version 0.3.0
  - Added wheel-installed `roughpy_compute` headers and Python `get_include()` helpers so downstream projects can locate RoughPy's packaged headers.
  - Added a README notice that this release is likely to be one of the last minor releases before a larger interface overhaul.
  - Corrected the lead-lag transform for `TickStream` (@feelingsonice PR #299)
  - Added VSCode `.devcontainer` settings for containerised developer environment for debugging tests. See `.devcontainer/README.md` for instructions (@alexallmont #148)

Version 0.1.2
  - Documentation is now in sync with the main branch (@philipparubin PR #85)
  - Fixed a fault when constructing with larger than expected array (Issue #70, @inakleinbottle PR #72)
  - Updated README to remove old information, users should now read roughpy.org (Issue #74, @inakleinbottle PR #71, #78)
  - Fixed degree argument on basis size function (Issue #75, @inakleinbottle PR #79)
  - Fixed unknown keyword arguments not flagged (Issue #77, @inakleinbottle PR #81)
  - Fixed partition intermediates unchecked by Python constructor (Issue #80, @inakleinbottle PR #82)
  - Fixed path constructors now accept Lies (Issue #83, @inakleinbottle PR #87)

Version 0.1.1:
  - Fixed type promotions in scalar arithmetic - left hand types are now promoted when appropriate.
  - Added "tensor_functions" module for implementing additional functions on tensors. Currently only Log is implemented.
  - Fixed a few bugs in the build system

Version 0.1.0:
  - Added framework for integrating device support and redesigned scalars module to accommodate the changes.
  - Made changes to type deduction in constructors to avoid exceptions when providing lists of python ints/floats.
  - Changed the implementation of __array__ for algebra types. A copy is always made, and the size of the array is always
    equal to the dimension of the chosen width/depth composition.
  - Changed the behaviour when no resolution is given. RoughPy now uses a heuristic to compute a suitable resolution for computing signatures if none is given.


Version 0.0.8:
  - Disabled linking to BLAS/LAPACK to reduce compile times whilst under development.
  - Greatly expanded the serialization support internally.
  - Many classes can now be pickled/unpickled for transport across process boundaries.
    (Note that this is not yet a safe means of storing and transmitting stream data.)
  - Overlay triplets are now forced for all builds. This should improve reproducibility.
  - Restructured the algebra module to improve build times.
  - Added CMake detection of headers to help builds with non-compliant compilers.
  - Fixed an error in the construction of `PyLieKey` in `PyLieKeyIterator`. [#40](https://github.com/datasig-ac-uk/RoughPy/issues/40)


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.
