=========
Changelog
=========

All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog <https://keepachangelog.com>`_
and this project adheres to `Semantic Versioning <https://semver.org>`_.

0.6.1 (2025-09-10)
------------------

* New functions: :class:`~pyunlocbox.functions.proj_lineq`,
  :class:`~pyunlocbox.functions.proj_sdsp`,
  :class:`~pyunlocbox.functions.proj_positive`,
  :class:`~pyunlocbox.functions.structured_sparsity`.
* Parameter ``is_hermitian`` added to
  :class:`~pyunlocbox.functions.norm_nuclear` to benefit from the hermitian
  property of :func:`numpy.linalg.svd`.
* New solver: Linearized Douglas-Rachford (or ADMM) added to
  :class:`~pyunlocbox.solvers.douglas_rachford`.
* New solver :class:`~pyunlocbox.solvers.chambolle_pock`.
* Update to use pytest instead of unittest.
* Update to use UV instead of conda.
* New function: `proj_lineq`.
* New function: `proj_sdsp`.
* New function: `proj_positive`.
* New function: `structured_sparsity`.
* Continuous integration with Python 3.8 to 3.13.
* Merged all the extra requirements in a single dev requirement.

0.5.2 (2017-12-15)
------------------

Mostly a maintenance release. Much cleaning happened and a conda package is now
available in conda-forge. Moreover, the package can now be tried online thanks
to binder.

0.5.1 (2017-07-04)
------------------

Development status updated from Alpha to Beta.

New features:

* Acceleration module, decoupling acceleration strategies from the solvers

  * Backtracking scheme
  * FISTA acceleration
  * FISTA with backtracking
  * Regularized non-linear acceleration (RNA)

* Solvers: gradient descent algorithm

Bug fix:

* Decrease dimensionality of variables in Douglas Rachford tutorial to reduce
  test time and timeout on Travis CI.

Infrastructure:

* Continuous integration: dropped 3.3 (matplotlib dropped it), added 3.6
* We don't build PDF documentation anymore. Less burden, HTML can be downloaded
  from readthedocs.

0.4.0 (2016-08-01)
------------------

New feature:

* Monotone+Lipschitz forward-backward-forward primal-dual algorithm (MLFBF)

Bug fix:

* Plots generated when building documentation (not stored in the repository)

Infrastructure:

* Continuous integration: dropped 2.6 and 3.2, added 3.5
* Travis-ci: check style and build doc
* Removed tox config (too cumbersome to use on dev box)
* Monitor code coverage and report to coveralls.io

0.3.0 (2015-05-29)
------------------

New features:

* Generalized forward-backward splitting algorithm
* Projection-based primal-dual algorithm
* TV-norm function (eval, prox)
* Nuclear-norm function (eval, prox)
* L2-norm proximal operator supports non-tight frames
* Two new tutorials using the TV-norm with Forward-Backward and
  Douglas-Rachford for image reconstruction and denoising
* New stopping criterion XTOL allows to stop when the variable is stable

Bug fix:

* Much more memory efficient. Note that the array which contains the initial
  solution is now modified in place.

0.2.1 (2014-08-20)
------------------

Bug fix version. Still experimental.

Bug fixes:

* Avoid complex casting to real
* Do not stop iterating if the objective function stays at zero

0.2.0 (2014-08-04)
------------------

Second usable version, available on GitHub and released on PyPI.
Still experimental.

New features:

* Douglas-Rachford splitting algorithm
* Projection on the L2-ball for tight and non tight frames
* Compressed sensing tutorial using L2-ball, L2-norm and Douglas-Rachford
* Automatic solver selection

Infrastructure:

* Unit tests for all functions and solvers
* Continuous integration testing on Python 2.6, 2.7, 3.2, 3.3 and 3.4

0.1.0 (2014-06-08)
------------------

First usable version, available on GitHub and released on PyPI.
Still experimental.

Features:

* Forward-backward splitting algorithm
* L1-norm function (eval and prox)
* L2-norm function (eval, grad and prox)
* Least square problem tutorial using L2-norm and forward-backward
* Compressed sensing tutorial using L1-norm, L2-norm and forward-backward

Infrastructure:

* Sphinx generated documentation using Numpy style docstrings
* Documentation hosted on Read the Docs
* Code hosted on GitHub
* Package hosted on PyPI
* Code checked by flake8
* Docstring and tutorial examples checked by doctest (as a test suite)
* Unit tests for functions module (as a test suite)
* All test suites executed in Python 2.6, 2.7 and 3.2 virtualenvs by tox
* Distributed automatic testing on Travis CI continuous integration platform
