# Changelog
All notable changes to the PDFO project will be documented in this file.

## [0.9] - 2020-04-19

Public beta release of PDFO.

## [1.0] - 2020-06-01

### Added
- Add the 'honour_x0' option when the solver is BOBYQA to indicate whether
  the user-provided x0 can be changed.
- Include rosenbrock_example to illustrate the usage.
- Python version: Bounds, LinearConstraint and NonlinearConstraint more
  flexible with None and [].
- Python version: the constr_value output when there are constraints
  other than bounds.
- MATLAB version: add 'uninstall' and 'clean' options to setup.m.

### Changed
- Licence modified from GNU GPLv3+ to GNU LGPLv3+.
- The Fortran source code is refactored to remove the obsolete non-block
  DO loops and comparison operators.
- All constraint violations are computed absolutely (instead of relatively)
- Modify the scaling behavior. Scaling is performed only if all variables
  have both upper and lower bounds. 
- Change the default rhobeg to 0.5 when the problem is scaled. 
- Change the default rhobeg to min(ub-lb)/4 when the solver is BOBYQA.
- Previously, if rhobeg is revised to be different from the default value, 
  then rhoend is set to min(rhobeg*rhoend_default/rhobeg_default, rhoend),
  where rhobeg_default = 1 and rhoend_default = 1e-6; now it is set to
  min(0.1*rhobeg, rhoend).
- Revise x0 or rhobeg for BOBYQA to make sure that the distance between x0
  and inactive bounds is at least rhobeg.
- Python version: make PDFO available on PyPI.
- Python version: test files for PDFO have been added as a subpackage of pdfo.
- MATLAB version: improve the interfaces of prepdfo and postpdfo.

### Removed
- Warning about scaling.
- The fhist output when PDFO receives a feasibility problem.
- Python version: numpy.set_printoptions statement in __init__.py.
- MATLAB version: interactions when modifying the user's startup script.

### Fixed
- In last version, the linear constraints passed to the Fortran backend can
  have zero gradients due to reduction when some variables are fixed by the
  bound constraints. Constraint validation and reduction are merged in order to
  avoid such a situation.
- In last version, the user-specified npt, rhobeg, and rhoend are ignored if
  the solver selection function is invoked. They are taken into account now.
- Python version: previously, the nonlinear constraints defined as a dictionary 
  cannot include NumPy functions of type <ufunc>. It is fixed now.
