The contributors are happy to announce, that Optim.jl version 0.4.5 has now been released.
This is the last patch before the next minor version bump to v0.5.0. The next release will remove deprecations introduced in this patch, and will also include breaking changes to the API. This patch allows our users to report any problems with the recent changes to the master branch, before we remove the deprecations, and finalize the API changes, by including changes that cannot be deprecated, such as: field name changes and keyword renaming. *New API for optimization* This patch introduces our new dispatch based API for choosing between the different algorithms. This replaces the old BFGS(df, x0), Newton(df, x0), ... or optimize(df, x0, method = :bfgs), optimize(df, x0, method = :newton) functions with optimize(df, x0, BFGS()), optimize(df, x0, Newton()), and so on. The README.md has been updated accordingly. Notice that there will be further changes when moving to the v0.5.0 tag. For example, keywords will be matched with the syntax of the results retrieving methods presented below, and field names of *OptimizationResults will be changes. *New API for retrieving results* We have removed the old API for accessing the results of an optimization result (directly accessing field names), with a function based API. This means that what was accessed as res.iterations is now iterations(res), res.converged is now converged(res), and so on. This allows for better use of errors, and is much less fragile than having users access field names. To give an example, we have a field named minimum which is actually the minimizer. The new API is minimizer(res), but to avoid breaking user code, we have to wait with changing the unfortunate field name until v0.5.0. *New dependency - PositiveFactorizations* Many users have asked: "Why do I get an error saying no descent could be found with :newton?" Often the answer is: you are in a concave region of your objective. To avoid this, the Newton() method now uses the PositiveFactorizations package to compute the direction of descent. This means a new dependency, but it is pure Julia, and very lightweight. *Other changes* Minor revamp of README.md, preparation for JuliaLang v0.5 changes, remove Optim.vecdot and use the vecdot introduced in JuliaLang v0.4 instead, and several minor bug fixes. Please report any problems to the issue tracker over at https://github.com/JuliaOpt/Optim.jl/issues or here.
