Update version history. Update the version history in preparation for 1.13.0RC1 and also reformat older parts of the version history file. Change-Id: I133e5966629e8277631ec5d407165ad188efa1e1
diff --git a/docs/source/conf.py b/docs/source/conf.py index 59a418e..17de116 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py
@@ -48,9 +48,9 @@ # built documents. # # The short X.Y version. -version = '1.12' +version = '1.13' # The full version, including alpha/beta/rc tags. -release = '1.12.0' +release = '1.13.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages.
diff --git a/docs/source/version_history.rst b/docs/source/version_history.rst index 82aed8b..30316ee 100644 --- a/docs/source/version_history.rst +++ b/docs/source/version_history.rst
@@ -4,6 +4,96 @@ Version History =============== +1.13.0 +====== + +New Features +------------ +#. ``LineSearchMinimizer`` and ``GradientProblemSolver`` are up to 2x + faster due to fewer function evaluations. (Sameer Agarwal) +#. ``SPARSE_NORMAL_CHOLESKY`` is significantly faster because Ceres + now computes the normal equations exploiting the static block + sparsity structure. (Cheng Wang & Sameer Agarwal) +#. Add compound with scalar operators for Jets. (Alex Stewart) +#. Enable support for AVX instructions for Jets. (Alex Stewart) + +Backward Incompatible API Changes +--------------------------------- +The enum ``CovarianceAlgorithmType`` which controls the linear algebra +algorithm used to compute the covariance used to combine the choice of +the algorithm and the choice of the sparse linear algebra library into +the enum name. So we had ``SUITE_SPARSE_QR`` and +``EIGEN_SPARSE_QR``. ``Covariance::Options`` now has a separate member +allowing the user to choose the sparse linear algebra library, just +like the solver and ``CovarianceAlgorithmType`` now takes values +``DENSE_SVD`` and ``SPARSE_QR``. This is a forward looking change that +will allow us to develop more flexible covariance estimation +algorithms with multiple linear algebra backends. + +Bug Fixes & Minor Changes +------------------------- +#. Fix cmake error from CeresConfig.cmake when Ceres not found (Taylor + Braun-Jones) +#. Completely refactored ``SparseNormalCholeskySolver``. (Sameer + Agarwal) +#. Fixed time reporting in ``Summary::FullReport`` when + ``LineSearchMinimizer`` is used. (Sameer Agarwal) +#. Remove unused file: collections_port.cc. (Sameer Agarwal) +#. ``SPARSE_SCHUR`` + ``CX_SPARSE`` = Faster (Sameer Agarwal) +#. Refactored a number of linear solver tests to be more thorough and + informative. (Sameer Agarwal) +#. Pass user-specified search hints as HINTS not PATHS. (Alex Stewart) +#. Prefer Eigen installs over exported build directories. (Alex + Stewart) +#. Add OpenMP flags when compiling for C if enabled. (Alex Stewart) +#. Add a missing ``CERES_EXPORT`` to GradientChecker (Sameer Agarwal) +#. Use target_compile_features() to specify C++11 requirement if + available. (Alex Stewart) +#. Update docs: .netrc --> .gitcookies (Keir Mierle) +#. Fix implicit precission loss warning on 64-bit archs (Ricardo + Sanchez-Saez) +#. Optionally use exported Eigen CMake configuration if + available. (Alex Stewart) +#. Use ``Ceres_[SOURCE/BINARY]_DIR`` not ``CMAKE_XXX_DIR`` to support + nesting. (Alex Stewart) +#. Update ``Problem::EvaluateOptions`` documentation. (Sameer Agarwal) +#. Add public headers to CMake target for IDEs. (Devin Lane) +#. Add an article on interfacing with automatic + differentiation. (Sameer Agarwal) +#. Add default Fedora/Debian locations for CXSparse to search + paths. (Alex Stewart) +#. Add a test for ``LineSearchMinimizer`` (Sameer Agarwal) +#. Flatten the table of contents. (Sameer Agarwal) +#. Fix when ``LineSearchMinimizer`` adds the ``IterationSummary``` to + ``Solver::Summary`` (Sameer Agarwal) +#. Fix search path for miniglog headers when Ceres is exported. (Alex + Stewart) +#. Fix ambiguous reference to ``WARNING`` when using miniglog. (Alex + Stewart) +#. Fix Jet/Eigen compatibility for Eigen > 3.3 (Julien Pilet) +#. Add max severity option when ``MINIGLOG`` is enabled (Taylor + Braun-Jones) +#. Improvements to Schur template specializations (Sameer Agarwal) +#. Added an article on derivatives (Sameer Agarwal) +#. Require Eigen >= 3.3 to define ScalarBinaryOpTraits in Jet. (Alex + Stewart) +#. A hacky fix for the Eigen::FullPivLU changes. (Sameer Agarwal) +#. Specify ``ScalarBinaryOpTraits`` for Jet types. (Chris Sweeney) +#. Remove spurious conversion from doubles to Jets. (Sameer Agarwal) +#. Fix an error in the tutorial code for ``NumericDiffCostFunction`` + (Sameer Agarwal) +#. ``CERES_EXPORT`` fix to compile Ceres as DLL (Je Hyeong Hong) +#. Fix detection of deprecated Bessel function names on MSVC. (Alex + Stewart) +#. Ensure that partial evaluation of residuals triggers an error + (Sameer Agarwal) +#. Fix detection of CMake-built glog on Windows. (Alex Stewart) +#. Add additional search paths for glog & Eigen on Windows. (Alex + Stewart) +#. Various minor grammar and bug fixes to the documetation (Sameer + Agarwal, Alex Stewart, William Rucklidge) + + 1.12.0 ====== @@ -30,15 +120,16 @@ Bug Fixes & Minor Changes ------------------------- -#. Clear XXX_FOUND in Find<XXX>.cmake prior to searching. (Alex Stewart) +#. Clear XXX_FOUND in Find<XXX>.cmake prior to searching. (Alex + Stewart) #. Fix versioning in the documentation (Sameer Agarwal) #. Fix missing gflags imported target definition in CeresConfig.cmake. (Alex Stewart) #. Make gflags a public dependency of Ceres if it and glog are found. (Alex Stewart) #. Add support for glog exported CMake target. (Alex Stewart) -#. Use ``google::GLOG_WARNING`` instead of ``WARNING`` in tests to support - MSVC. (Alex Stewart) +#. Use ``google::GLOG_WARNING`` instead of ``WARNING`` in tests to + support MSVC. (Alex Stewart) #. Update gtest and gmock to ``a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47`` (Sameer Agarwal) #. Add MSVC-specific ``#define`` to expose math constants in @@ -78,7 +169,8 @@ IterationCallback. (Sameer Agarwal) #. Use ProductParameterization in bundle_adjuster.cc (Sameer Agarwal) #. Enable support for OpenMP in Clang if detected. (Alex Stewart) -#. Remove duplicate entry for the NIST example in the docs. (Michael Vitus) +#. Remove duplicate entry for the NIST example in the docs. (Michael + Vitus) #. Add additional logging for analyzing orderings (Sameer Agarwal) #. Add readme for the sampled_function example. (Michael Vitus) #. Use _j[0,1,n]() Bessel functions on MSVC to avoid deprecation @@ -93,15 +185,14 @@ #. Report Ceres compile options as components in find_package(). (Alex Stewart) #. Fix a spelling error in nnls_modeling.rst (Timer) -#. Only use collapse() directive with OpenMP 3.0 or higher. (Keir Mierle) +#. Only use collapse() directive with OpenMP 3.0 or higher. (Keir + Mierle) #. Fix install path for CeresConfig.cmake to be architecture-aware. -#. Fix double conversion to degrees in rotation_test (Keir - Mierle) +#. Fix double conversion to degrees in rotation_test (Keir Mierle) #. Make Jet string output more readable (Keir Mierle) -#. Fix rotation_test IsClose() and related tests (Keir - Mierle) -#. Loosen an exact equality in local_parameterization_test - (Sameer Agarwal) +#. Fix rotation_test IsClose() and related tests (Keir Mierle) +#. Loosen an exact equality in local_parameterization_test (Sameer + Agarwal) #. make_docs: Pass the file encoding to open() (Niels Ole Salscheider) #. Fix error message returned when using SUITE_SPARSE_QR in covariance estimation on a ceres built without SuiteSparse support. (Simon @@ -110,7 +201,8 @@ MSVC. (Alex Stewart) #. Fix missing early return() in xxx_not_found() dependency macros. (Alex Stewart) -#. Initialize ``inner_iterations_were_useful_`` correctly. (Sameer Agarwal) +#. Initialize ``inner_iterations_were_useful_`` correctly. (Sameer + Agarwal) #. Add an implementation for GradientProblemSolver::Options::IsValid (Sameer Agarwal) #. Fix use of va_copy() if compiling with explicit C++ version < @@ -144,7 +236,8 @@ New Features ------------ -#. Adaptive numeric differentiation using Ridders' method. (Tal Ben-Nun) +#. Adaptive numeric differentiation using Ridders' method. (Tal + Ben-Nun) #. Add ``CubicInterpolator`` and ``BiCubicInterpolator`` to allow smooth interpolation of sampled functions and integration with automatic differentiation. @@ -166,7 +259,8 @@ portability issues with gtest / type_info::operator== & Eigen with Clang on OS X vs GCC 4.9+ on Linux requiring contradictory 'fixes'. #. Use link-time optimisation (LTO) only when compiling Ceres itself, - not tests or examples, to bypass gtest / type_info::operator== issue. + not tests or examples, to bypass gtest / type_info::operator== + issue. #. Use old minimum iOS version flags on Xcode < 7.0. #. Add gtest-specific flags when building/using as a shared library. #. Clean up iOS.cmake to use xcrun/xcodebuild & libtool. @@ -189,7 +283,8 @@ #. Add the option to use numeric differentiation to ``nist`` and ``more_garbow_hillstrom``. #. Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI. -#. Fix SparseNormalCholeskySolver with dynamic sparsity (Richie Stebbing). +#. Fix SparseNormalCholeskySolver with dynamic sparsity (Richie + Stebbing). #. Remove legacy dependency detection macros. #. Fix failed if() condition expansion if gflags is not found. #. Update all CMake to lowercase function name style. @@ -198,8 +293,10 @@ #. Remove the spec file needed for generating RPMs. #. Fix a typo in small_blas.h (Werber Trobin). #. Cleanup FindGflags & use installed gflags CMake config if present. -#. Add default glog install location on Windows to search paths (bvanevery). -#. Add default Eigen install location on Windows to search paths (bvanevery). +#. Add default glog install location on Windows to search paths + (bvanevery). +#. Add default Eigen install location on Windows to search paths + (bvanevery). #. Fix explanation of config.h generation in bare config.h. #. Fix unused parameter compiler warnings in numeric_diff.h. #. Increase tolerance for a test in polynomial_test (Taylor Braun @@ -234,7 +331,8 @@ #. Fix bug where pow(JetA,JetB) returned wrong result for JetA==0 (Russell Smith). #. Remove duplicate step norm computation (Johannes Schonberger). -#. Enhance usability when encountering Eigen version mismatches (Andrew Hundt). +#. Enhance usability when encountering Eigen version mismatches + (Andrew Hundt). #. Add PLY file logger before and after BA in order to ease visual comparison (Pierre Moulon). #. Fix CMake config file docs to include 2.8.x & 3.x styles. @@ -246,19 +344,23 @@ #. Add versions of dependencies used to FullReport(). #. Ensure local config.h is used if Ceres is already installed. #. Small messaging and comment updates in CMake -#. Handle possible presence of library prefixes in MSVC (Sylvain Duchêne). -#. Use -O2 not -O3 on MinGW to workaround issue with Eigen (s1m3mu3@gmail.com). -#. Increase tolerance in small_blas test for Cygwin (s1m3mu3@gmail.com). +#. Handle possible presence of library prefixes in MSVC (Sylvain + Duchêne). +#. Use -O2 not -O3 on MinGW to workaround issue with Eigen + (s1m3mu3@gmail.com). +#. Increase tolerance in small_blas test for Cygwin + (s1m3mu3@gmail.com). #. Fix iOS cmake file for cmake 3.0 (Jack Feng) #. Fix missing gflags shlwapi dependency on MinGW (s1m3mu3@gmail.com). -#. Add thread dependency & fix namespace detection on Windows for gflags - (arrigo.benedetti@gmail.com). +#. Add thread dependency & fix namespace detection on Windows for + gflags (arrigo.benedetti@gmail.com). #. Rename macros in the public API to have a ``CERES_`` prefix. #. Fix ``OrderedGroup::Reverse()`` when it is empty (Chris Sweeney). #. Update the code to point to ceres-solver.org. #. Update documentation to point to the GitHub issue tracker. #. Disable ``LAPACK`` for iOS builds. (Greg Coombe) -#. Force use of single-thread in ``Problem::Evaluate()`` without OpenMP. +#. Force use of single-thread in ``Problem::Evaluate()`` without + OpenMP. #. Less strict check for multithreading. (Chris Sweeney) #. Update tolerances in small_blas_test.cc (Philipp Hubner) #. Documentation corrections (Steve Hsu) @@ -305,7 +407,8 @@ #. ``Eigen`` can now be as a sparse linear algebra backend. This can be done by setting ``Solver::Options::sparse_linear_algebra_library_type`` to - ``EIGEN_SPARSE``. Performance should be comparable to ``CX_SPARSE``. + ``EIGEN_SPARSE``. Performance should be comparable to + ``CX_SPARSE``. .. NOTE:: @@ -417,7 +520,8 @@ #. Compile miniglog into Ceres if enabled on all platforms. #. Add two missing files to Android.mk (Greg Coombe) #. Fix Cmake error when using miniglog. (Greg Coombe) -#. Don't build miniglog unconditionally as a static library (Björn Piltz) +#. Don't build miniglog unconditionally as a static library (Björn + Piltz) #. Added a missing include. (Björn Piltz) #. Conditionally disable SparseNormalCholesky. #. Fix a memory leak in program_test.cc. @@ -428,7 +532,6 @@ New Features ------------ - #. Bounds constraints: Support for upper and/or lower bounds on parameters when using the trust region minimizer. #. Dynamic Sparsity: Problems in which the sparsity structure of the @@ -464,7 +567,6 @@ Backward Incompatible API Changes --------------------------------- - #. ``Solver::Options::linear_solver_ordering`` used to be a naked pointer that Ceres took ownership of. This is error prone behaviour which leads to problems when copying the ``Solver::Options`` struct @@ -490,8 +592,8 @@ #. ``Solver::Options::gradient_tolerance`` used to be a relative gradient tolerance. i.e., The solver converged when - .. math:: - \|g(x)\|_\infty < \text{gradient_tolerance} * \|g(x_0)\|_\infty + .. math:: \|g(x)\|_\infty < \text{gradient_tolerance} * + \|g(x_0)\|_\infty where :math:`g(x)` is the gradient of the objective function at :math:`x` and :math:`x_0` is the parmeter vector at the start of @@ -500,8 +602,7 @@ This has changed to an absolute tolerance, i.e. the solver converges when - .. math:: - \|g(x)\|_\infty < \text{gradient_tolerance} + .. math:: \|g(x)\|_\infty < \text{gradient_tolerance} #. Ceres cannot be built without the line search minimizer anymore. Thus the preprocessor define @@ -509,7 +610,6 @@ Bug Fixes --------- - #. Disabled warning C4251. (Björn Piltz) #. Do not propagate 3d party libs through `IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE]` mechanism when @@ -522,8 +622,8 @@ #. Better error checking when ``Problem::RemoveResidualBlock`` is called. (Alex Stewart) #. Fixed a memory leak in ``SchurComplementSolver``. -#. Added ``epsilon()`` method to ``NumTraits<ceres::Jet<T, N> >``. (Filippo - Basso) +#. Added ``epsilon()`` method to ``NumTraits<ceres::Jet<T, N> + >``. (Filippo Basso) #. Fixed a bug in `CompressedRowSparseMatrix::AppendRows`` and ``DeleteRows``.q #. Handle empty problems consistently. @@ -594,10 +694,12 @@ #. Fix operator= ambiguity on some versions of Clang. (Alex Stewart) #. Various Lint cleanups (William Rucklidge & Jim Roseborough) #. Modified installation folders for Windows. (Pablo Speciale) -#. Added librt to link libraries for SuiteSparse_config on Linux. (Alex Stewart) +#. Added librt to link libraries for SuiteSparse_config on + Linux. (Alex Stewart) #. Check for presence of return-type-c-linkage option with Clang. (Alex Stewart) -#. Fix Problem::RemoveParameterBlock after calling solve. (Simon Lynen) +#. Fix Problem::RemoveParameterBlock after calling solve. (Simon + Lynen) #. Fix a free/delete bug in covariance_impl.cc #. Fix two build errors. (Dustin Lang) #. Add RequireInitialization = 1 to NumTraits::Jet. @@ -619,7 +721,6 @@ New Features ------------ - #. Sparse and dense covariance estimation. #. A new Wolfe line search. (Alex Stewart) #. ``BFGS`` line search direction. (Alex Stewart) @@ -629,9 +730,8 @@ solvers. #. Support for multiple dense linear algebra backends. In particular optimized ``BLAS`` and ``LAPACK`` implementations (e.g., Intel MKL, - ACML, OpenBLAS etc) can now be used to do the dense linear - algebra for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and - ``DENSE_SCHUR`` + ACML, OpenBLAS etc) can now be used to do the dense linear algebra + for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR`` #. Use of Inner iterations can now be adaptively stopped. Iteration and runtime statistics for inner iterations are not reported in ``Solver::Summary`` and ``Solver::Summary::FullReport``. @@ -639,10 +739,11 @@ #. Add BlockRandomAccessCRSMatrix. #. Speeded up automatic differentiation by 7\%. #. Bundle adjustment example from libmv/Blender (Sergey Sharybin) -#. Shared library building is now controlled by CMake, rather than a custom - solution. Previously, Ceres had a custom option, but this is now deprecated - in favor of CMake's built in support for switching between static and - shared. Turn on BUILD_SHARED_LIBS to get shared Ceres libraries. +#. Shared library building is now controlled by CMake, rather than a + custom solution. Previously, Ceres had a custom option, but this is + now deprecated in favor of CMake's built in support for switching + between static and shared. Turn on BUILD_SHARED_LIBS to get shared + Ceres libraries. #. No more dependence on Protocol Buffers. #. Incomplete LQ factorization. #. Ability to write trust region problems to disk. @@ -654,7 +755,6 @@ Bug Fixes --------- - #. Fix ``ITERATIVE_SCHUR`` solver to work correctly when the schur complement is of size zero. (Soohyun Bae) #. Fix the ``spec`` file for generating ``RPM`` packages (Brian Pitts @@ -692,8 +792,8 @@ Stewart) #. Fix configuration error on systems without SuiteSparse installed (Sergey Sharybin) -#. Enforce the read call returns correct value in ``curve_fitting_c.c`` - (Arnaud Gelas) +#. Enforce the read call returns correct value in + ``curve_fitting_c.c`` (Arnaud Gelas) #. Fix DynamicAutoDiffCostFunction (Richard Stebbing) #. Fix Problem::RemoveParameterBlock documentation (Johannes Schönberger) @@ -703,7 +803,8 @@ #. Fix a reallocation bug in ``CreateJacobianBlockSparsityTranspose``. (Yuliy Schwartzburg) #. Add a define for O_BINARY. -#. Fix miniglog-based Android NDK build; now works with NDK r9. (Scott Ettinger) +#. Fix miniglog-based Android NDK build; now works with NDK r9. (Scott + Ettinger) 1.6.0 @@ -711,7 +812,6 @@ New Features ------------ - #. Major Performance improvements. a. Schur type solvers (``SPARSE_SCHUR``, ``DENSE_SCHUR``, @@ -763,7 +863,6 @@ Backward Incompatible API Changes --------------------------------- - #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any part of it without calling the solver. @@ -904,7 +1003,6 @@ Backward Incompatible API Changes --------------------------------- - The new ordering API breaks existing code. Here the common case fixes. **Before** @@ -953,7 +1051,6 @@ New Features ------------ - #. A new richer, more expressive and consistent API for ordering parameter blocks. #. A non-linear generalization of Ruhe & Wedin's Algorithm II. This @@ -1005,7 +1102,6 @@ New Features ------------ - #. Android Port (Scott Ettinger also contributed to the port) #. Windows port. (Changchang Wu and Pierre Moulon also contributed to the port) #. New subspace Dogleg Solver. (Markus Moll) @@ -1043,7 +1139,6 @@ Bug Fixes --------- - #. Fix how invalid step evaluations are handled. #. Change the slop handling around zero for model cost changes to use relative tolerances rather than absolute tolerances. @@ -1091,7 +1186,6 @@ Bug Fixes --------- - #. ``suitesparse_test`` is enabled even when ``-DSUITESPARSE=OFF``. #. ``FixedArray`` internal struct did not respect ``Eigen`` alignment requirements (Koichi Akabe & Stephan Kassemeyer). @@ -1103,7 +1197,6 @@ Bug Fixes --------- - #. Fix constant parameter blocks, and other minor fixes (Markus Moll) #. Fix alignment issues when combining ``Jet`` and ``FixedArray`` in automatic differeniation. @@ -1114,21 +1207,23 @@ New Features ------------ - #. Powell's Dogleg solver #. Documentation now has a brief overview of Trust Region methods and how the Levenberg-Marquardt and Dogleg methods work. Bug Fixes --------- - -#. Destructor for ``TrustRegionStrategy`` was not virtual (Markus Moll) +#. Destructor for ``TrustRegionStrategy`` was not virtual (Markus + Moll) #. Invalid ``DCHECK`` in ``suitesparse.cc`` (Markus Moll) -#. Iteration callbacks were not properly invoked (Luis Alberto Zarrabeiti) +#. Iteration callbacks were not properly invoked (Luis Alberto + Zarrabeiti) #. Logging level changes in ConjugateGradientsSolver -#. VisibilityBasedPreconditioner setup does not account for skipped camera pairs. This was debugging code. +#. VisibilityBasedPreconditioner setup does not account for skipped + camera pairs. This was debugging code. #. Enable SSE support on MacOS -#. ``system_test`` was taking too long and too much memory (Koichi Akabe) +#. ``system_test`` was taking too long and too much memory (Koichi + Akabe) 1.2.0 ===== @@ -1162,7 +1257,6 @@ Bug Fixes --------- - #. Fix a bug in the handling of constant blocks. (Louis Simard) #. Add an optional lower bound to the Levenberg-Marquardt regularizer to prevent oscillating between well and ill posed linear problems. @@ -1173,7 +1267,6 @@ New Features ------------ - #. New iterative linear solver for general sparse problems - ``CGNR`` and a block Jacobi preconditioner for it. #. Changed the semantics of how ``SuiteSparse`` dependencies are @@ -1189,14 +1282,13 @@ Bug Fixes --------- - #. Fixed a strict weak ordering bug in the schur ordering. #. Grammar and typos in the documents and code comments. -#. Fixed tests which depended on exact equality between floating point values. +#. Fixed tests which depended on exact equality between floating point + values. 1.0.0 ===== - Initial open source release. Nathan Wiegand contributed to the Mac OSX port.
diff --git a/package.xml b/package.xml index 4e6d33a..25aeb7c 100644 --- a/package.xml +++ b/package.xml
@@ -1,6 +1,6 @@ <?xml version="1.0"?> <!-- - Copyright 2015 Google Inc. All rights reserved. + Copyright 2017 Google Inc. All rights reserved. http://ceres-solver.org/ Redistribution and use in source and binary forms, with or without @@ -30,7 +30,7 @@ <package format="2"> <name>ceres-solver</name> - <version>1.12.0</version> + <version>1.13.0</version> <description>A large scale non-linear optimization library.</description> <maintainer email="ceres-solver@googlegroups.com"> The Ceres Solver Authors