)]}'
{
  "log": [
    {
      "commit": "806af056feb22a1236baca247b4f4b6e1ea911e5",
      "tree": "122d9d77bcc1fb89896b8a0be99f297f52398e58",
      "parents": [
        "41958f3fcc6e62aebabb4de8360ed28910d903ca"
      ],
      "author": {
        "name": "Pez Firoozfam",
        "email": "pezhman@google.com",
        "time": "Mon Mar 23 20:35:24 2026 +0000"
      },
      "committer": {
        "name": "Pez Firoozfam",
        "email": "pezhman@google.com",
        "time": "Tue Apr 07 23:16:48 2026 -0700"
      },
      "message": "Add support for maximum matrix sizes to TinySolver.\n\nThis change restructures the `TinySolver` template and its associated\nadapters (`AutoDiff` and `CostFunction`) to make maximum sizing\nattributes first-class parameters. This enables the entire `TinySolver`\nstack to be used in restricted environments (e.g., small MCUs) without\ndynamic memory allocation, even when the number of residuals or\nparameters is only known at runtime (`Eigen::Dynamic`).\n\nSpecifically:\n- Adds `kMaxResiduals` and `kMaxParameters` template parameters to\n  `TinySolver`.\n- Updated `TinySolverAutoDiffFunction` and\n  `TinySolverCostFunctionAdapter` to support optional maximum size\n  template parameters for their internal buffers.\n- The new API maintains backward compatibility for existing users by\n  defaulting to the sizes defined in the `Function`\u0027s enums.\n- This structure also supports reducing code bloat by allowing\n  `TinySolver` to be instantiated with an abstract base class, using\n  dynamic dispatch for cost function evaluation.\n\nNew test cases for `TinySolver` and its adapters verify the\nzero-allocation behavior and the unified API flexibility.\n\nChange-Id: Ic6f43984d384dbe71472b31c5ebd2b538d61f19d\n"
    },
    {
      "commit": "41958f3fcc6e62aebabb4de8360ed28910d903ca",
      "tree": "d91d3679cce08eef6788d84e3de54fa1b2d9dbab",
      "parents": [
        "4a60fb8b52e1664d5417aa6dbf6d3a9c38ce3d63"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Mar 25 09:24:53 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Apr 05 21:09:08 2026 -0700"
      },
      "message": "[modernize] Fix StringTo... casing, duplicate declaration, and internal header guard\n\n- Correct casing of StringToLoggingType and StringToDumpFormatType for\n  consistency with the rest of the API.\n- Fix a bug in include/ceres/types.h where StringToDumpFormatType was\n  incorrectly declared with a LoggingType* argument.\n- Update the header guard in internal/ceres/problem_impl.h to use the\n  CERES_INTERNAL_ prefix instead of CERES_PUBLIC_.\n\nChange-Id: Ia28c01e368e839043251594e0b11ba1c17ee4483\n"
    },
    {
      "commit": "4a60fb8b52e1664d5417aa6dbf6d3a9c38ce3d63",
      "tree": "7cd50514d439a67ade054103e6555d0841ef975c",
      "parents": [
        "2b9a2d77c3112204a85c6ebd05239dc36e187af8"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Apr 01 07:48:28 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Apr 01 07:48:28 2026 -0700"
      },
      "message": "ClangTidy fixes\n\nChange-Id: I7559a1ec2d236ae71f10a3400aa0c8485cbc2928\n"
    },
    {
      "commit": "2b9a2d77c3112204a85c6ebd05239dc36e187af8",
      "tree": "7a8ea5f15a53353ceaa68c501c8243bca1bae6c3",
      "parents": [
        "ea4de24c2e30c5c2e48dac438866f10bd907979d"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 23 11:24:32 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Mar 28 08:23:01 2026 -0700"
      },
      "message": "Modernize include/ceres headers to C++17 and Abseil conventions\n\n- include/ceres/autodiff_manifold.h: Replace manual zero-initialization loops with value-initialization ({}) in PlusJacobian and MinusJacobian.\n- include/ceres/dynamic_numeric_diff_cost_function.h: Replace std::vector with absl::FixedArray for temporary evaluation buffers and use std::copy_n instead of memcpy in Evaluate.\n- include/ceres/numeric_diff_cost_function.h: Replace memcpy with std::copy_n in Evaluate.\n\nChange-Id: I13b546458185d9fdd22b086094ca1072c57c40ed\n"
    },
    {
      "commit": "ea4de24c2e30c5c2e48dac438866f10bd907979d",
      "tree": "cf9b0c25602be94b5578a269517fd57c45396c0e",
      "parents": [
        "87c406d9d024ad7276237a750262a65af8bff66a"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 23 11:48:42 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 23 11:48:42 2026 -0700"
      },
      "message": "Modernize ParameterBlock::Plus with std::clamp\n\nUse std::clamp for projecting the updated parameter state onto its\nbox constraints. This provides a more idiomatic and concise\nimplementation than separate std::min/std::max loops, especially\nwhen both lower and upper bounds are present.\n\nChange-Id: I1f6248ed8f0313338cf9a1c98d79a023ae281e6c\n"
    },
    {
      "commit": "87c406d9d024ad7276237a750262a65af8bff66a",
      "tree": "cad7cf9e9b8474a9c6ceb6c322e7c0b7b119383a",
      "parents": [
        "2f946a582ae4a9e7ee0492030ec12d9b1f3dbade"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 23 11:42:24 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 23 11:42:24 2026 -0700"
      },
      "message": "Modernize InvertPSDMatrix with if constexpr\n\nUse if constexpr for kSize checks in InvertPSDMatrix to allow for\ndead-code elimination at compile time. This ensures that for small\nfixed-size matrices, only the inverse() path is compiled, and for\nlarger or dynamic matrices, only the LLT path is compiled when\nassume_full_rank is true.\n\nChange-Id: I4def2faadd080a4defccf1c0527015ae004f20ce\n"
    },
    {
      "commit": "2f946a582ae4a9e7ee0492030ec12d9b1f3dbade",
      "tree": "40eee074730690ac2fd3e27cb9de3da72eb8ffee",
      "parents": [
        "3d1b494dce4c3eeb4ee493fca7a481c717d30000"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 14:48:19 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Mar 22 12:06:15 2026 -0700"
      },
      "message": "[modernize] Modernize internal autodiff and numeric_diff logic\n\nRefactor the core automatic and numeric differentiation internal helpers\nto utilize C++17 features for improved readability and maintainability:\n\n- Added IntegerSequenceTraits to provide a uniform compile-time interface\n  for accessing head and tail of std::integer_sequence.\n- Eliminated recursive template meta-programming in autodiff.h, replacing\n  it with fold expressions and std::index_sequence.\n- Simplified core helper functions like Make1stOrderPerturbation into\n  unrolled loops.\n- Refactored EvaluateJacobianForParameterBlocks from a recursive struct\n  to a recursive function template using if constexpr.\n- Updated NumericDiffCostFunction and NumericDiffFirstOrderFunction\n  to use the modernized internal helper API.\n\nChange-Id: I934034f7434fc05a8855565b2b534d325f920584\n"
    },
    {
      "commit": "3d1b494dce4c3eeb4ee493fca7a481c717d30000",
      "tree": "35ffc214d763816dea05d67e50cd834977f9fd74",
      "parents": [
        "3abe9326f1b2c7c259c12a60ecbed894a598ab33"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Mar 18 14:09:38 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Mar 22 11:30:14 2026 -0700"
      },
      "message": "Modernize CostFunction and FirstOrderFunction constructors\n\n- Add constructors taking std::unique_ptr and ceres::Ownership to\n  AutoDiffCostFunction, NumericDiffCostFunction, and their dynamic\n  and first-order counterparts.\n- Standardize delegating constructor style to use parentheses.\n- Standardize ownership check in destructors.\n- Fix documentation typos and example code in headers.\n- Add comprehensive tests for Ownership and unique_ptr constructors.\n\nChange-Id: I573abd695cdd89905997b573620e8d99d1cacca2\n"
    },
    {
      "commit": "3abe9326f1b2c7c259c12a60ecbed894a598ab33",
      "tree": "31f7cd5d9fcc490691419227d2c3a5b143d27377",
      "parents": [
        "bcbaff6656070f9d81d41dac664cc765c7962f22"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 15:25:48 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Mar 22 10:25:18 2026 -0700"
      },
      "message": "[modernize] Modernize ProductManifold using fold expressions\n\nModernize ProductManifold using C++17 fold expressions and std::index_sequence\nto replace recursive implementations of Plus, Minus, and their Jacobians.\nThis simplifies the code, removes the need for auxiliary recursive ...Impl\nmethods, and improves index handling by using std::get\u003cI\u003e instead of\npointer arithmetic.\n\nChange-Id: I28498216d8daae7485c382140613fd85519fa42c\n"
    },
    {
      "commit": "bcbaff6656070f9d81d41dac664cc765c7962f22",
      "tree": "2ce747d702cf45c399a8dcbe422837c7c017dda0",
      "parents": [
        "ae3f2e86838d2da241eb00e485a4201b985b9d35"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 14:36:58 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Mar 18 17:25:41 2026 -0700"
      },
      "message": "[modernize] Modernize AutoDiff and NumericDiff CostFunctions to C++17\n\nModernize the construction and initialization logic of AutoDiffCostFunction,\nNumericDiffCostFunction, AutoDiffFirstOrderFunction,\nNumericDiffFirstOrderFunction, DynamicAutoDiffCostFunction,\nDynamicNumericDiffCostFunction, and CostFunctionToFunctor by utilizing\nC++17 features:\n\n- Simplify constructor delegation using if constexpr, removing the need for\n  internal InitTag structures.\n- Use std::is_constructible_v for cleaner SFINAE in variadic constructors.\n- Add static_assert to catch improper usage of DYNAMIC residuals/parameters\n  at compile-time.\n- Add Ownership support to AutoDiffFirstOrderFunction,\n  DynamicAutoDiffCostFunction, and DynamicNumericDiffCostFunction.\n- Simplify CostFunctionToFunctor::operator() using variadic parameter packs.\n- Use this-\u003enum_residuals() for consistent and clear access to base class\n  state.\n- Minor code quality improvements and removal of redundant template\n  parameters.\n\nChange-Id: Id760a26ba2ceca4fb2939ef7632f2f1d9cc430c9\n"
    },
    {
      "commit": "ae3f2e86838d2da241eb00e485a4201b985b9d35",
      "tree": "42edc78d1a7aba1f0bd5f6d16048453e8f464025",
      "parents": [
        "a694c647652379c7fed10cc8a5eaca720523f44c"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 17:37:53 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 16:48:07 2026 -0700"
      },
      "message": "[modernize] Use std::is_scalar_v in jet_traits.h\n\nChange-Id: Iace518cd4b32b96cf7b7adb64b7695064ae1d04d\n"
    },
    {
      "commit": "a694c647652379c7fed10cc8a5eaca720523f44c",
      "tree": "80470bd5abcadc4c51c121506837b4e90d3b97ec",
      "parents": [
        "b25fe07f160349624116090cb83f2cc28d263998"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 17:07:57 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 14:03:21 2026 -0700"
      },
      "message": "[modernize] Unify VariadicEvaluate using C++17 std::apply\n\nChange-Id: Iaf8ced8c2b937cb3c503e677adb96be32d6eace8\n"
    },
    {
      "commit": "b25fe07f160349624116090cb83f2cc28d263998",
      "tree": "3bdae6b6614db276cf1989507e18e2b784107e4e",
      "parents": [
        "bda3823b751dd4646ba28cd0f57fbad782814238"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 17:31:20 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 12:44:16 2026 -0700"
      },
      "message": "[modernize] Refactor NumericDiff to use if constexpr recursion\n\nChange-Id: I54ad1cec6924e4f4b5275056df7496c2e226f244\n"
    },
    {
      "commit": "bda3823b751dd4646ba28cd0f57fbad782814238",
      "tree": "81751e969dd3ed6ff50664b4000ba406b97c74ac",
      "parents": [
        "188fe7bf4d92379f9a40e5f8b8c0c58fda675df5"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 17:35:52 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 12:42:39 2026 -0700"
      },
      "message": "[modernize] Use if constexpr and std::clamp in TinySolver\n\nChange-Id: I4218bfea314a2438cceb7eaf49a2ec921aaa3e45\n"
    },
    {
      "commit": "188fe7bf4d92379f9a40e5f8b8c0c58fda675df5",
      "tree": "8c14e9715d9dbb51e8569cb57e086a3fcd0ba911",
      "parents": [
        "532ad49568511283f83eccc6feb3ea5722439572"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 16:46:45 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 12:42:00 2026 -0700"
      },
      "message": "[modernize] Use inline constexpr in parameter_dims.h\n\nChange-Id: I493843d5be30c512a69fc517c5622c48faa63088\n"
    },
    {
      "commit": "532ad49568511283f83eccc6feb3ea5722439572",
      "tree": "bbe9e2c8b8a8f307147f25f604a90ae08c97d56f",
      "parents": [
        "4390b34d5beb48f740d6dd3a935586b0dd7a3cea"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 17:31:54 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 12:39:50 2026 -0700"
      },
      "message": "[modernize] Use std::clamp and C++17 headers in cubic_interpolation.h\n\nChange-Id: Ief7ff6555aeb3d3be83e999d777160b3c7c1bb9b\n"
    },
    {
      "commit": "4390b34d5beb48f740d6dd3a935586b0dd7a3cea",
      "tree": "8e308334f0c1ddcb7dc0ead47bfd073f974ccd8a",
      "parents": [
        "4bd55bd44c6458b647e62dadaa8bd3c69dad92a0"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 17:32:41 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 12:39:05 2026 -0700"
      },
      "message": "[modernize] Use if constexpr in EuclideanManifold constructor\n\nChange-Id: I61d4827d7b04feed369c72db3643afda67ea434e\n"
    },
    {
      "commit": "4bd55bd44c6458b647e62dadaa8bd3c69dad92a0",
      "tree": "870bcea8e7fa66035383a20eb10c4a8795a9d6d7",
      "parents": [
        "ccd1198d727b7bd61e0ec831f3e60d2f9807e69b"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 16:53:20 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Mar 17 12:31:19 2026 -0700"
      },
      "message": "[modernize] Convert kImpossibleValue to inline constexpr in types.h\n\nChange-Id: Ide561296f1bbcc244dd655cf229d08582281b234\n"
    },
    {
      "commit": "ccd1198d727b7bd61e0ec831f3e60d2f9807e69b",
      "tree": "f1c1cf2776e0266b829ee66ca6d124a31ea84f52",
      "parents": [
        "084b3e3b835bb13c42c0658f033826ffa8e0f373"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Fri Mar 13 08:47:37 2026 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Mar 16 16:19:06 2026 -0700"
      },
      "message": "Make test_util GTest-optional to fix benchmark builds with BUILD_TESTING\u003dOFF\n\nWhen Ceres is configured with BUILD_TESTING\u003dOFF and BUILD_BENCHMARKS\u003dON,\nbenchmarks failed to compile and link due to an unconditional dependency on the\ntest_util library, which requires Googletest (GTest). This commit addresses the issue\nby introducing the CERES_HAS_GTEST macro and making the test utility library\nGTest-optional.\n\nFixes: https://github.com/ceres-solver/ceres-solver/issues/1081\n\nChange-Id: I615c37eb6f21d36a4b87b2d24632016944eda3bd\n"
    },
    {
      "commit": "084b3e3b835bb13c42c0658f033826ffa8e0f373",
      "tree": "59aaf623b427f5005b44de77d3ff78c4649ab033",
      "parents": [
        "a2bab5af5131d52a756b1fa7b7cff83821541449"
      ],
      "author": {
        "name": "Johannes Schönberger",
        "email": "hannesschoenberger@gmail.com",
        "time": "Sat Jan 17 19:44:24 2026 +0100"
      },
      "committer": {
        "name": "Johannes Schönberger",
        "email": "hannesschoenberger@gmail.com",
        "time": "Wed Feb 25 14:19:40 2026 -0800"
      },
      "message": "Apply deterministic parameter block reordering\n\nChange-Id: I0dc58ce754225310ff1a170cec8a3c71a402df57\n"
    },
    {
      "commit": "a2bab5af5131d52a756b1fa7b7cff83821541449",
      "tree": "8cd649e1ef29d5ab959691d60722190e7bba225d",
      "parents": [
        "de96ed58f5065948c50921085e83d74f6f20360a"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 08:55:53 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Feb 17 10:14:21 2026 -0800"
      },
      "message": "Fix ODR violations\n\nCompiling Ceres with Schur specializations and Link Time Optimization\n(LTO) results in warnings such as\n\n    /usr/include/eigen3/Eigen/src/Core/ProductEvaluators.h:31:8: warning: type ‘struct evaluator’ violates the C++ One Definition Rule [-Wodr]\n       31 | struct evaluator\u003cProduct\u003cLhs, Rhs, Options\u003e\u003e : public product_evaluator\u003cProduct\u003cLhs, Rhs, Options\u003e\u003e {\n          |        ^\n\ndue to the redefinition of EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD which\nalters internal Eigen class definitions and consequently results in ODR\nviolations.\n\nAvoid the ODR violation by renaming the Eigen namespace in translation\nunits that redefine EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD.\n\nWhile the issue is diagnosed in LTO builds of Ceres only, the problem\nexists in non-LTO builds as well and per standard the compiler is not\neven required to diagnose ODR issues. ODR violations constitute\nundefined behavior.\n\nChange-Id: Idf7c7a30cc8d3a86b0d62cbd33bef58783a62ee4\n"
    },
    {
      "commit": "de96ed58f5065948c50921085e83d74f6f20360a",
      "tree": "d54931a5acc5a50a8046cdc7c1bd59ce15201289",
      "parents": [
        "18887f1bd74d409a7fba825640bb10a30124d38c"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Fri Jan 30 21:34:34 2026 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 01 08:24:16 2026 -0800"
      },
      "message": "Eliminate benchmark deprecation warnings\n\nResolve the following warnings issue by the latest version of the\nbenchmark library:\n\n/Users/runner/work/ceres-solver/ceres-solver/internal/ceres/small_blas_gemv_benchmark.cc:71:54: warning: \u0027Benchmark\u0027 is deprecated: Use ::benchmark::Benchmark instead [-Wdeprecated-declarations]\n   71 | static void MatrixSizeArguments(benchmark::internal::Benchmark* benchmark) {\n      |\n\n/Users/runner/work/ceres-solver/ceres-solver/internal/ceres/dense_linear_solver_benchmark.cc:67:46: warning: \u0027Benchmark\u0027 is deprecated: Use ::benchmark::Benchmark instead [-Wdeprecated-declarations]\n   67 | static void MatrixSizes(benchmark::internal::Benchmark* b) {\n      |\n\n/Users/runner/work/ceres-solver/ceres-solver/internal/ceres/invert_psd_matrix_benchmark.cc:80:37: warning: \u0027Benchmark\u0027 is deprecated: Use ::benchmark::Benchmark instead [-Wdeprecated-declarations]\n   80 |     -\u003eApply([](benchmark::internal::Benchmark* benchmark) {\n      |\n\nChange-Id: Ice6fe57dc5635698809e368fda23a018f4d7df5a\n"
    },
    {
      "commit": "18887f1bd74d409a7fba825640bb10a30124d38c",
      "tree": "2a73129bd01992047b531c09dc5417881eea8e53",
      "parents": [
        "0c70ed3a1a2d6ba47c06c7e8b3b040880bc474db"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Fri Jan 30 20:53:05 2026 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 01 15:58:57 2026 +0100"
      },
      "message": "Drop removed macos-13 runner\n\nChange-Id: I7f37bb2f71324353a45e39d12792edabfb3956b7\n"
    },
    {
      "commit": "0c70ed3a1a2d6ba47c06c7e8b3b040880bc474db",
      "tree": "bb10618ac2c06e2e88c7d447f3afde0281585182",
      "parents": [
        "345357a952383490f8ed10bc5190d90762d01492"
      ],
      "author": {
        "name": "brettmichaelgreen",
        "email": "brett@bmgvisualtech.com",
        "time": "Sat Nov 08 15:56:10 2025 -0500"
      },
      "committer": {
        "name": "brettmichaelgreen",
        "email": "brett@bmgvisualtech.com",
        "time": "Sat Nov 08 15:56:10 2025 -0500"
      },
      "message": "Document DumpLinearLeastSquaresProblem\n\nAdd documentation on the output of DumpLinearLeastSquaresProblem.\nThis is to clarify confusion brought up on #608\n\nChange-Id: I935cacee1e4345a1d0250aaac322ca2f8e794e66\n"
    },
    {
      "commit": "345357a952383490f8ed10bc5190d90762d01492",
      "tree": "eeb9f3407a95921924e4ee212c071613bc5d9a64",
      "parents": [
        "4a3f008e6a50580f427cf4d0f44649353ebf62c5"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Thu Oct 30 17:34:39 2025 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Thu Oct 30 17:34:39 2025 -0700"
      },
      "message": "ClangTidy cleanup\n\nChange-Id: I5b619f3966dfb988f09cc412def649f3d2868808\n"
    },
    {
      "commit": "4a3f008e6a50580f427cf4d0f44649353ebf62c5",
      "tree": "ce7d27de4e5bcca68c19cd9c8aad544667c8ac63",
      "parents": [
        "f9b7b6651b108136a16df44d91fb31735645f5a7"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Oct 26 17:53:56 2025 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Oct 26 18:20:45 2025 -0700"
      },
      "message": "Fix a bug in inner iterations\n\nNormally we expect it to be the case that inner iteration cost\nwill be less than the trust region cost, but due to round off\nerror it can be that it is larger, so make the test for inner\niteration being successful to be stricter.\n\nChange-Id: Icbafe9fc6a311940d5368cca78eeac7ccd5fa943\n"
    },
    {
      "commit": "f9b7b6651b108136a16df44d91fb31735645f5a7",
      "tree": "6400b647fe87ab1d77b4b8293eaf760a88c17590",
      "parents": [
        "77d7044d231bee7d73dd3456977dbbfdb09e200a"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 08:35:06 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 11:53:07 2025 -0700"
      },
      "message": "Support Eigen3 5.0.0\n\nChange-Id: I5cf476a6d8c090861f4ea4a254a35d39e36a6d68\n"
    },
    {
      "commit": "77d7044d231bee7d73dd3456977dbbfdb09e200a",
      "tree": "d0f151e7aa6bc1c50253f5929bb866addca1a7eb",
      "parents": [
        "d4e3ba3173ce6323c481fca9e6a0cc514a65936d"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 17:16:47 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 11:50:21 2025 -0700"
      },
      "message": "Do not rely on a define for disabling warnings\n\nUsing a define to determine whether to disable warnings introduces a\ndependency on the header inclusion order and thus can prevent the\nwarnings from being enabled.\n\nFixes #1173\n\nChange-Id: I21f5bca78a83bfe4642e9b01abd220b9fbba31a4\n"
    },
    {
      "commit": "d4e3ba3173ce6323c481fca9e6a0cc514a65936d",
      "tree": "cbe410db9752eeec93217f9dced2961104fa8917",
      "parents": [
        "6f00e41111b06443374f619e974a4e2a30c3fd57"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 08:35:41 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 11:49:17 2025 -0700"
      },
      "message": "Ensure consistent visibility attributes\n\nChange-Id: Ib80d655a3601a716956bbd2b977d295a809307c1\n"
    },
    {
      "commit": "6f00e41111b06443374f619e974a4e2a30c3fd57",
      "tree": "f1d0f693ff3beb61f6939b293a846ac75d479e23",
      "parents": [
        "93e66f0d9480ea1d6022793f073d682717d85897"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Jun 08 19:19:00 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Sep 28 18:04:54 2025 +0200"
      },
      "message": "Reuse constants\n\nChange-Id: I306da23d26667e801cfa4fb12306cdd92af09a65\n"
    },
    {
      "commit": "93e66f0d9480ea1d6022793f073d682717d85897",
      "tree": "c35edf4abd33b459ec5d01ce1f9873e1c4b890a2",
      "parents": [
        "4997d0e5b40cc05640751ae59a69be6268c998bd"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Aug 17 10:23:50 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Aug 17 10:52:12 2025 +0200"
      },
      "message": "Fixed discrepancy in QuaternionRotatePoint for different orders\n\nFixes #1178\n\nChange-Id: I0430ffb384ea53a863ba72f076043f0f772db4e1\n"
    },
    {
      "commit": "4997d0e5b40cc05640751ae59a69be6268c998bd",
      "tree": "e2b70eb79163792d57057ce087197482a37dc8af",
      "parents": [
        "b92ade3e116cce9ba53a7639daed93e11aebda0d"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sat Aug 16 10:25:42 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Aug 17 10:51:26 2025 +0200"
      },
      "message": "Drop removed windows-2019 runner\n\nChange-Id: I75b52ce778f6e74832dbfaf9dc35a99e28c9b51a\n"
    },
    {
      "commit": "b92ade3e116cce9ba53a7639daed93e11aebda0d",
      "tree": "3928e290e401e9425518084c784e17ad2cff2077",
      "parents": [
        "f616f61eab1fc22bcb1b604ea66f68dd075f5ac7"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Aug 13 15:00:05 2025 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Aug 13 15:02:50 2025 -0700"
      },
      "message": "Reorder the fields in ParameterBlock\n\nThis CL reorders the fields to group the hot fields together to increase data density. This CL doesn’t change functionality but expects to reduce cache misses and save CPU.\n\nChange-Id: I313493a187ac6ebc607b311c39415c79a94f00c8\n"
    },
    {
      "commit": "f616f61eab1fc22bcb1b604ea66f68dd075f5ac7",
      "tree": "fb9982a11b8acd2977a7299c71531c75d2938476",
      "parents": [
        "bae3cf781d09296dbac28bbe4f4e562a7923b67a"
      ],
      "author": {
        "name": "Mackay",
        "email": "1.732mackay@gmail.com",
        "time": "Wed Aug 06 21:36:12 2025 -0400"
      },
      "committer": {
        "name": "Mackay",
        "email": "1.732mackay@gmail.com",
        "time": "Wed Aug 06 21:36:12 2025 -0400"
      },
      "message": "Update CMakeLists.txt to support CUDA 13\n\nChange-Id: I4a0a0b29a45c1108d27b6f85670c926f5dda0f5e\n"
    },
    {
      "commit": "bae3cf781d09296dbac28bbe4f4e562a7923b67a",
      "tree": "4e178ebab8cfc824016e3591552bea0875372533",
      "parents": [
        "c380195d3122d825f0fae4b963bc0e6e44237716"
      ],
      "author": {
        "name": "Johannes Bruenger",
        "email": "brngr@posteo.de",
        "time": "Mon Aug 04 20:11:55 2025 +0200"
      },
      "committer": {
        "name": "Johannes Bruenger",
        "email": "brngr@posteo.de",
        "time": "Mon Aug 04 20:11:55 2025 +0200"
      },
      "message": "Fix typo in logged warning\n\nChange-Id: Ibf74392b26cbe01bf7ba898491b4442cbdef8b57\n"
    },
    {
      "commit": "c380195d3122d825f0fae4b963bc0e6e44237716",
      "tree": "1e23ac3a3f6f11f4bf527829c46df303b4d20e5d",
      "parents": [
        "8c50a34a1cac220ab2e7e2093b35b0db7e2a6e9b"
      ],
      "author": {
        "name": "Matt Vitelli",
        "email": "matthew.vitelli@gmail.com",
        "time": "Thu Jul 31 22:56:40 2025 -0700"
      },
      "committer": {
        "name": "Matt Vitelli",
        "email": "matthew.vitelli@gmail.com",
        "time": "Thu Jul 31 23:00:36 2025 -0700"
      },
      "message": "Fix threading bug in CovarianceImpl.\n\nThis change fixes a bug in ceres::CovarianceImpl where a new thread was always being created even when num_threads\u003d1. After this fix, when num_threads\u003d1, CovarianceImpl should run single-threaded and will not create any additional threads.\n\nChange-Id: I784e359f8afe3e7e6d72930500a10e909bfe9308\n"
    },
    {
      "commit": "8c50a34a1cac220ab2e7e2093b35b0db7e2a6e9b",
      "tree": "04e9cee60f19cd65e3cf8e33ab10de16ed36b243",
      "parents": [
        "370631f01f71db36b580e5a65790b2a8d9559821"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Jun 08 16:33:24 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Thu Jun 19 18:15:51 2025 +0200"
      },
      "message": "Reuse rotation functionality in (Eigen)QuaternionManifold\n\nAllow to specify the memory layout of quaternion coefficients using a\ntemplate parameter which defaults to Ceres coefficients order.\n\nThe changes are, for the most part, backwards compatible unless the\nfloating-point type is explicitly specified, e.g., as\n\u0026ceres::QuaternionToAngleAxis\u003cdouble\u003e to obtain a pointer to the\ncorresponding function. In such rare use cases, the coefficients order\nmust be given explicitly first as\nceres::QuaternionToAngleAxis\u003cceres::CeresQuaternionOrder\u003e. In normal\nsituations, however, this should not be needed.\n\nChange-Id: I05dd80f0593672dec656cc785cf06fe5268aee74\n"
    },
    {
      "commit": "370631f01f71db36b580e5a65790b2a8d9559821",
      "tree": "d592d13b1a162bc1057a4f8c31ab4d5535e8291b",
      "parents": [
        "968f928907d421b267a10ec8ea837a80e421ff18"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Jun 08 20:39:36 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Fri Jun 13 16:23:24 2025 -0700"
      },
      "message": "Use Euler parameters in QuaternionPlusImpl\n\nDefine the relation between the axis-angle representation of a rotation\nand the corresponding unit quaternion as\n\n  q(𝐞) \u003d cos(𝜃/2) + sin(𝜃/2)/𝜃·𝐞\n\nwhere 𝐞 \u003d 𝜃𝛚 is the rotation vector given by the rotation angle 𝜃 and\nthe unit axis of rotation 𝛚 instead of\n\n  q(𝐞) \u003d cos(𝜃) + sin(𝜃)/𝜃·𝐞 .\n\nThis brings the former relation closer to the available functionality\nprovided by ceres/rotation.h.\n\nFixes #941\n\nChange-Id: Id40c065f78593887ecc52e67a068737d7eb5bda6\n"
    },
    {
      "commit": "968f928907d421b267a10ec8ea837a80e421ff18",
      "tree": "f2cd9d2c0b8f627d94b560ba7039a4aeead270b5",
      "parents": [
        "4148d6a353bf6726a667f64bde358e84454b1b2c"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 01:56:55 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Fri Jun 13 15:43:57 2025 -0700"
      },
      "message": "Do not restrict Grid1D and Grid2D output to double\n\nFixes #1158\n\nChange-Id: Ibeb4188393023308231c32b944f2c9dfdd674a60\n"
    },
    {
      "commit": "4148d6a353bf6726a667f64bde358e84454b1b2c",
      "tree": "3132cb9495480ae367e3a81287b52c2868814553",
      "parents": [
        "9c22db814cf7d2f688d7a8b716b112bdb07d0be1"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Jun 10 23:14:28 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Jun 10 23:14:28 2025 +0200"
      },
      "message": "Allow AngleAxisRotatePoint to be applied in-place\n\nThanks to @CatInTheRain for the suggestion.\n\nFixes #1163\n\nChange-Id: I4e148c62891979e1ec01b91f95d3e2d04501c8ef\n"
    },
    {
      "commit": "9c22db814cf7d2f688d7a8b716b112bdb07d0be1",
      "tree": "e467a1a6866ee4b38a4a937d6ddf66a27e613d79",
      "parents": [
        "2dcc72c684d5bbd9a8ac6c045168ec77b7faf64f"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 22:47:33 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 22:48:54 2025 +0200"
      },
      "message": "Fix typos in CMake comments\n\nThanks to @valgur for spotting the mistakes.\n\nChange-Id: I2b32acbb3c822d1ebb4defed53734be6d3371698\n"
    },
    {
      "commit": "2dcc72c684d5bbd9a8ac6c045168ec77b7faf64f",
      "tree": "3e6220a494a748f5aaf7f36dedf9035051bc82c0",
      "parents": [
        "0e760e0453a939ed7735f21b0575a0302be827f8"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 14:12:07 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 09:10:28 2025 -0700"
      },
      "message": "Update Bazel dependencies\n\nChange-Id: I99168221fb229a7c7a41e5e1e0c269d655917e05\n"
    },
    {
      "commit": "0e760e0453a939ed7735f21b0575a0302be827f8",
      "tree": "fc0d6f7fe99e079f939c340afebc5bd445790565",
      "parents": [
        "3c3400342bc010c6d83dc462cf78ed3ef446be34"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 15:02:47 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 09:07:03 2025 -0700"
      },
      "message": "Use subsections instead of an enumeration in solving FAQ\n\nThis is a follow-up to related changes made in 018bb49e80ae3d1584fcb343fc31d513cbeb958c.\n\nChange-Id: Ife3befe85d7cea5dad5185a424508d590c0d77f7\n"
    },
    {
      "commit": "3c3400342bc010c6d83dc462cf78ed3ef446be34",
      "tree": "6371bdf5f59228caced3d821d7a45d2bf6bea7de",
      "parents": [
        "8a545eb46b6aae9c91861bb1104c7cdc530487ee"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 15:20:17 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Jun 09 15:20:17 2025 +0200"
      },
      "message": "Fix docs typo\n\nChange-Id: Ib3967dc7413455ccb2a1211d892fd1150514522a\n"
    },
    {
      "commit": "8a545eb46b6aae9c91861bb1104c7cdc530487ee",
      "tree": "02ab39dea99c17fb3c1d338022b94db14ac2578c",
      "parents": [
        "83133357ddc4894639de3354c3b0fe3aff848819"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Jun 08 12:57:49 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Jun 08 13:23:29 2025 +0200"
      },
      "message": "Update dependencies to support GCC 15\n\nPreviously, compiling using GCC failed with\n\n  In file included from /usr/include/c++/15.1.1/cassert:46,\n                   from \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/container/internal/container_memory.h:18,\n                   from \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/container/flat_hash_map.h:40,\n                   from \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/flags/reflection.h:29,\n                   from \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/flags/reflection.cc:16:\n  \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/container/internal/container_memory.h: In function ‘void* absl::lts_20240116::container_internal::Allocate(Alloc*, size_t)’:\n  \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/container/internal/container_memory.h:66:27: error: ‘uintptr_t’ does not name a type [-Wtemplate-body]\n     66 |   assert(reinterpret_cast\u003cuintptr_t\u003e(p) % Alignment \u003d\u003d 0 \u0026\u0026\n        |                           ^~~~~~~~~\n  \u003cceres-prefix\u003e/third_party/abseil-cpp/absl/container/internal/container_memory.h:31:1: note: ‘uintptr_t’ is defined in header ‘\u003ccstdint\u003e’; this is probably fixable by adding ‘#include \u003ccstdint\u003e’\n     30 | #include \"absl/utility/utility.h\"\n    +++ |+#include \u003ccstdint\u003e\n     31 |\n\nAdditionally, the previous version of Abseil errouneously depends on\ngoogletest when Ceres is consumed which results in issues with\ndownstream projects. We therefore update both dependencies to avoid\nthese issues.\n\nThanks to @adam-ce for figuring out the working versions of Abseil and\ngoogletest.\n\nFixes #1140\n\nChange-Id: Ie991da04491d42979d51b891a4565cabbb1c604b\n"
    },
    {
      "commit": "83133357ddc4894639de3354c3b0fe3aff848819",
      "tree": "d2b576a974fdc44005c5ebf331cf51b71c19aa82",
      "parents": [
        "c15da00398ff4e265033c56f6ae46883770dfb5a"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue May 20 20:36:19 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue May 20 21:31:10 2025 +0200"
      },
      "message": "Partially revert hypot arguments zero checks\n\nUnfortunately, libc++\u0027s 3-argument std::hypot implementation is\nnumerically unstable until LLVM 19.x. Therefore, checking the arguments\nfor zeros is insufficient since an underflow can still occur resulting\nin a zero norm which requires another check. As such, division by zero\ncannot be reliably avoided.\n\nChange-Id: I189c8dc722aaec1ebc3ec8b1a177e1d8ac3b36db\n"
    },
    {
      "commit": "c15da00398ff4e265033c56f6ae46883770dfb5a",
      "tree": "dc3004d3557aa42bb7b6791ae7e2ae8f99907c13",
      "parents": [
        "a1d7bac40f2cb61aad2b23aca523b8d34ffd9c80"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Apr 29 23:39:43 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun May 18 10:02:39 2025 -0700"
      },
      "message": "Avoid division by zero\n\nRun cleanly under -fsanitize\u003dfloat-divide-by-zero.\n\nChange-Id: I99e92a50c60971c9f771774e58dbe65be7c675ec\n"
    },
    {
      "commit": "a1d7bac40f2cb61aad2b23aca523b8d34ffd9c80",
      "tree": "d912c7c68d26b69c814066cbdc7fa4b396368f51",
      "parents": [
        "b5b63b5b66d4075c3b7726995b704428b3985e23"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Thu May 15 19:31:50 2025 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Thu May 15 21:40:16 2025 +0200"
      },
      "message": "Provide Jet Eigen::NumTraits quiet_NaN and infinity\n\nThe definitions are required by Eigen::SelfAdjointEigenSolver.\n\nChange-Id: Ifcc3348b381d9116e6cb3e2d3ec47c7450c3382a\n"
    },
    {
      "commit": "b5b63b5b66d4075c3b7726995b704428b3985e23",
      "tree": "219ffcc5c734a2a9603ac20a697470da8cfdb094",
      "parents": [
        "5d7baac2588ff162a38338477b6494eb6e19cef8"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed May 07 08:33:32 2025 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed May 07 08:33:32 2025 -0700"
      },
      "message": "ClangTidy fixes\n\nChange-Id: Ib60fd2815875b4dc1fdb8402fb35758868302842\n"
    },
    {
      "commit": "5d7baac2588ff162a38338477b6494eb6e19cef8",
      "tree": "eea2e31fe2c8df62ee3ce015061e9ab1a89c82bd",
      "parents": [
        "a3fd8ec46191565b8ec373323d212a409e73b542"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed May 07 08:26:26 2025 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed May 07 08:26:26 2025 -0700"
      },
      "message": "ClangTidy fixes\n\nChange-Id: Iae5a6b0067c726a5c5f6a88acee15a574cb46be6\n"
    },
    {
      "commit": "a3fd8ec46191565b8ec373323d212a409e73b542",
      "tree": "78aa7bd35d2efe47ed4121316191317711db4a0b",
      "parents": [
        "a43073a38964b5169c8fd26c5c6fe389ba63d445"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed May 07 06:45:45 2025 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed May 07 07:43:41 2025 -0700"
      },
      "message": "Add a module statement to MODULE.bazel\n\nChange-Id: I504517b5d582c4ce4a538761c41a6ccae6ec9305\n"
    },
    {
      "commit": "a43073a38964b5169c8fd26c5c6fe389ba63d445",
      "tree": "c73936334c37b7e022091c68189c2530c940aa25",
      "parents": [
        "46b4b3b002994ddb9d6fc72268c3e271243cd1df"
      ],
      "author": {
        "name": "Sergey Sharybin",
        "email": "sergey@blender.org",
        "time": "Thu Apr 03 11:47:50 2025 +0200"
      },
      "committer": {
        "name": "Sergey Sharybin",
        "email": "sergey@blender.org",
        "time": "Thu Apr 03 14:23:24 2025 +0200"
      },
      "message": "Fix vector operations benchmark compilation\n\nSome of the benchmark functions use the same name as other functions\nin the ceres namespace. For example Axpby defines both benchmark but\nalso an utility function in eigen_vector_ops.h. It seems to confuse\nsome compilers and leads to a compilation error rooting deeper into\nthe benchmark header itself: it seems that the compiler can not\ndeduct which of the instances of such functions to use.\n\nWrapping the file into an anonymous namespace solves the problem.\nAlternative could be to use benchmark namespace to make thins more\nexplicit, for example ceres::internal::benchmark.\n\nTested on the following configuration:\n- macOS 15.4\n- Xcode 16.3\n- Apple M3 CPU\n- google-benchmark 1.9.2 installed via homebrew\n\nChange-Id: Id127015dd22de99c6c3da88e71f255736e0bed82\n"
    },
    {
      "commit": "46b4b3b002994ddb9d6fc72268c3e271243cd1df",
      "tree": "2b022e21df6ec7e03bde35979bb235c363ca165c",
      "parents": [
        "af39e3b9eeb32493abd89f40de4420587774ccc7"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 22:50:15 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 15:54:17 2025 -0800"
      },
      "message": "Do not discard caller\u0027s CMAKE_MODULE_PATH\n\nCeres CMake package configuration relies on several own find modules\n(e.g., for SuiteSparse and METIS). To allow CMake to discover additional\nfind modules, the CMAKE_MODULE_PATH variable must be updated to include\nthe directories containing the corresponding find modules.\n\nPreviously, before updating CMAKE_MODULE_PATH, Ceres stored the\nvariable\u0027s initial value and then completely replaced it by the\ndirectory containing Ceres\u0027s modules. However, a find_dependency failure\nwould cause an early return preventing CMAKE_MODULE_PATH to be restored.\nThus, any initial user changes to CMAKE_MODULE_PATH would be lost.\n\nNow, instead of completely replacing the CMAKE_MODULE_PATH value we only\nprepend additional directories. An early return no longer has a\ndestructive effect on CMAKE_MODULE_PATH. In a failure case,\nCMAKE_MODULE_PATH still contains caller\u0027s initial set of directories and\nan additional path prepended by Ceres.\n\nFixes #1024\n\nChange-Id: I80d92a5dff9f3cff651f950c4f8d04ece008b44b\n"
    },
    {
      "commit": "af39e3b9eeb32493abd89f40de4420587774ccc7",
      "tree": "eb8823ca5b55d6da300bc8154aa0b283fdf91f25",
      "parents": [
        "ded29e4243fac0ab0015570ed3875d8e179774f2"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 16:03:28 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 15:53:42 2025 -0800"
      },
      "message": "Use standard CMake package configuration mechanism to report failures\n\nFixes #1123\n\nChange-Id: Idd327c97391395fb23fc458e8d3dae0e5f3d1ed2\n"
    },
    {
      "commit": "ded29e4243fac0ab0015570ed3875d8e179774f2",
      "tree": "6e522f974f1128d58e2c5e7e79ab472ed731e880",
      "parents": [
        "7d196b4e6a71eb6e6bdde27216c5caabd6dbc208"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Feb 18 15:33:52 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 15:53:01 2025 -0800"
      },
      "message": "Do not custom format TBB version\n\nRecent TBB CMake package configurations do not define the\nTBB_INTERFACE_VERSION variable. This causes the reported version to be\nincomplete, i.e., the version looks as \"(2022.0 / )\". Use the CMake\nspecified package variable to report the identified version instead.\n\nChange-Id: Ic7851c821217e20fd6673de5442808ea3d302f4a\n"
    },
    {
      "commit": "7d196b4e6a71eb6e6bdde27216c5caabd6dbc208",
      "tree": "b0e5ee73e1647f4123f0924f8b2858cc16c21af6",
      "parents": [
        "ca4da549506eb779c902c3a1417283770ac55542"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 20:37:19 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 15:52:25 2025 -0800"
      },
      "message": "Emit deprecation warning on unscoped import target usage\n\nCMake will print the following warning:\n\nCMake Warning (dev) at CMakeLists.txt:n (target_link_libraries):\n  The library that is being linked to, ceres, is marked as being deprecated\n  by the owner.  The message provided by the developer is:\n\n  The unscoped import target `ceres\u0027 is deprecated and will be removed in a\n  future Ceres Solver release.  Please use the Ceres::ceres import target\n  instead.\n\nThis warning is for project developers.  Use -Wno-dev to suppress it.\n\nChange-Id: I5abc875b1f61e1f47523375d1579a188047c45d4\n"
    },
    {
      "commit": "ca4da549506eb779c902c3a1417283770ac55542",
      "tree": "98acd3f07e7024abb8e2b3d8844fca874de593ff",
      "parents": [
        "bcca8fbd4f2a0256345c5263de81620274f4fdfb"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 17:19:40 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Wed Feb 19 17:52:31 2025 +0100"
      },
      "message": "Use LINK_LIBRARY generator expression only for static absl\n\nChange-Id: I348434be68a7bf112513cacf5791095cba8f95b3\n"
    },
    {
      "commit": "bcca8fbd4f2a0256345c5263de81620274f4fdfb",
      "tree": "5644e10cfb1e93f6af0813810ff8579b68f834d7",
      "parents": [
        "cd8c1074b2bdcfb7f25c417f7de2025645d29823"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 21:51:11 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 17:09:44 2025 -0800"
      },
      "message": "Use ubuntu-24.04 Github runner in Android Github workflow\n\nThe ubuntu-20.04 actions runner image is deprecated will be fully\nunsupported by 2025-04-01 (see https://github.com/actions/runner-images/issues/11101).\n\nChange-Id: Ib6e25b5eef020aa5f3f183638725f7702903954a\n"
    },
    {
      "commit": "cd8c1074b2bdcfb7f25c417f7de2025645d29823",
      "tree": "e95191324c68ef57b218acfdda87927919179d1f",
      "parents": [
        "5121022789523aff5da42100eb2a209310cf8d53"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 18:58:04 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 17:09:13 2025 -0800"
      },
      "message": "Avoid GNU linker LTO warnings in Github workflows\n\nStop linker emitting warnings such as\n\n  lto-wrapper: warning: using serial compilation of n LTRANS jobs\n\nChange-Id: Ic933ef7b45955eabfa5b06e88cd195077ff9fc86\n"
    },
    {
      "commit": "5121022789523aff5da42100eb2a209310cf8d53",
      "tree": "6c0b8781d5e4bf92a10baf26a9ae23bf8170fd49",
      "parents": [
        "539dffbec3e3eabd56411096b74f73183756c267"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 20:38:22 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 17:08:32 2025 -0800"
      },
      "message": "Update NDK in Android Github workflow to latest LTS\n\nChange-Id: I278fc0faaac764277d6985f0de23e602f1cde766\n"
    },
    {
      "commit": "539dffbec3e3eabd56411096b74f73183756c267",
      "tree": "fee76c687b969348617b0f2c87271d1bca24ef4f",
      "parents": [
        "f0720aeb84ec7bb479fe3618b30fa54981baf8fd"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon May 20 16:06:14 2024 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 17:08:02 2025 -0800"
      },
      "message": "Use high-speed linker in Linux Github workflow\n\nUsing mold instead of GNU ld reduces the total build time by roughly\n5-15 min. (depending on the load).\n\nChange-Id: I66feab4e54c248cf92cc379d0085a93bdfdfef69\n"
    },
    {
      "commit": "f0720aeb84ec7bb479fe3618b30fa54981baf8fd",
      "tree": "f2a339880e8d39d5ac6e846c370aa5319ea9f203",
      "parents": [
        "2d2b7b57c7259f37ccc3bec1b8c5d1d4fa7a26e5"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 22:07:39 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 17:07:27 2025 -0800"
      },
      "message": "Raise minimum required Eigen version to 3.3.4\n\nUbuntu 22.04 ships with Eigen 3.4.0. The MinGW workaround for -O3\nrelated crashes has been available in Eigen since at least version\n3.2.0, see https://gitlab.com/libeigen/eigen/-/commit/cc03c9d68354ea3fed03481de045c185ddc1fc49.\n\nChange-Id: Iebfd6ed1fa55a6b0f5bd57bd920188e7b486d8cb\n"
    },
    {
      "commit": "2d2b7b57c7259f37ccc3bec1b8c5d1d4fa7a26e5",
      "tree": "0cb4ba9fd77e4ce4e1f29ade97c36a408422f437",
      "parents": [
        "1b27b6610c2d4677ce8c6e3ea109f5287f9bce30"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Thu Jan 18 23:45:55 2024 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 23:59:36 2025 +0100"
      },
      "message": "Ensure DynamicCostFunctionToFunctor to be exported\n\nFixes #1022\n\nChange-Id: I090790ac4a1f32e6cb318bc32273d63898659dc3\n"
    },
    {
      "commit": "1b27b6610c2d4677ce8c6e3ea109f5287f9bce30",
      "tree": "9488bc85d60758b779cdc7fab837c071a2ae0b4c",
      "parents": [
        "8ff216cef6dcfd1a368d3a97aef8cd28c372a0dc"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 11:27:10 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 07:44:47 2025 -0800"
      },
      "message": "Specify docs requirements\n\nUse `pip install -r docs/requirements.txt` (e.g., in a virtual environment) to install Python dependencies required for building the documentation.\n\nChange-Id: Ied9bd505bd6fc92f8c04f526ebd3ccacec306371\n"
    },
    {
      "commit": "8ff216cef6dcfd1a368d3a97aef8cd28c372a0dc",
      "tree": "d5cd5c8275fcaac4e176cc7377b696fe4703fc73",
      "parents": [
        "fc3699d6755a9109810f197dcbee56beadb7f243"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 11:31:52 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 07:44:20 2025 -0800"
      },
      "message": "Add ReadTheDocs support\n\nMirror versioned documentation at https://ceres-solver.readthedocs.io.\n\nChange-Id: I180e8fc32d05a0fa7dce09f77dbe38c5ca207420\n"
    },
    {
      "commit": "fc3699d6755a9109810f197dcbee56beadb7f243",
      "tree": "9d4877a030c0234b450ca7e70f95df45233ccaa5",
      "parents": [
        "533bcfd69411ece417f1da5ca5561565f8328f62"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 11:24:07 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 07:42:57 2025 -0800"
      },
      "message": "Cleanup Sphinx config\n\nChange-Id: Iea63ec709fda82685c5f484d643627213cdc1496\n"
    },
    {
      "commit": "533bcfd69411ece417f1da5ca5561565f8328f62",
      "tree": "021192744dc0fe6043f631789c575dab3fdd4a82",
      "parents": [
        "f86747f66d9c5255e0cdd5b8a408df1922f57267"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 11:22:38 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 07:41:21 2025 -0800"
      },
      "message": "Avoid incorrect member reference warning\n\nChange-Id: I6f1b271c3a7b805dd4e539d0d44e2cbc626ef1f7\n"
    },
    {
      "commit": "f86747f66d9c5255e0cdd5b8a408df1922f57267",
      "tree": "583a9851a6ed77cc0290dcab1a6f01767b8e3b9c",
      "parents": [
        "018bb49e80ae3d1584fcb343fc31d513cbeb958c"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 11:20:54 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Feb 17 11:20:54 2025 +0100"
      },
      "message": "Remove unreferenced footnote\n\nChange-Id: I6988ef4f0c6a98c7cbf44a45c3c11c81ab26466e\n"
    },
    {
      "commit": "018bb49e80ae3d1584fcb343fc31d513cbeb958c",
      "tree": "f54b5b044fdf3a7e1cb4e6f439e915e10e12178a",
      "parents": [
        "80e466994b0d8afccaae058c50292f94c1dadc52"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Dec 17 15:49:28 2024 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 16 15:35:49 2025 -0800"
      },
      "message": "Use subsections instead of an enumeration for FAQs\n\nChange-Id: I37c1256417240bf7decec1f756df8a8402f5c586\n"
    },
    {
      "commit": "80e466994b0d8afccaae058c50292f94c1dadc52",
      "tree": "7e6a2abfc2741900303a85718eb221cdf7e79936",
      "parents": [
        "3fb154795de5aa4937fbff64277d822b97de05da"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Dec 17 15:49:02 2024 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 16 15:35:04 2025 -0800"
      },
      "message": "Fix FAQs spelling\n\nChange-Id: I53f69875cc8e82e39602f0aae80e30d456c933c1\n"
    },
    {
      "commit": "3fb154795de5aa4937fbff64277d822b97de05da",
      "tree": "d3d3fb0d4a250ea63e3f6a2297a2dca03c85b969",
      "parents": [
        "d1c79cbd1c5cf2c322f5cfaafd3a9a4120325b63"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Dec 17 15:48:40 2024 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 16 15:34:34 2025 -0800"
      },
      "message": "Use console syntax highlighting for application output\n\nChange-Id: I75c5a4bef55416e456528fde5485264c8c7545aa\n"
    },
    {
      "commit": "d1c79cbd1c5cf2c322f5cfaafd3a9a4120325b63",
      "tree": "45c541ab72528312542392fa08925c086229b9af",
      "parents": [
        "32df9c52c3b344a0fa4ca69c4143cb37f303f5db"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Dec 17 15:46:21 2024 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 16 15:34:04 2025 -0800"
      },
      "message": "Fix docs indent\n\nChange-Id: I4cc8bfb1883439cf91322e6383fb5107e31cc7d4\n"
    },
    {
      "commit": "32df9c52c3b344a0fa4ca69c4143cb37f303f5db",
      "tree": "da47dfd6bb6a2ef874a87ae57e6036225d8570d8",
      "parents": [
        "2c90a63af9f8812c3fc6b5a030a57b7251e0ea47"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 16 16:02:11 2025 +0100"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Sun Feb 16 16:59:40 2025 +0100"
      },
      "message": "Replace macos-12 runner by macos-15\n\nThe macos-12 runner is no longer available.\n\nChange-Id: Ib559bf949f423d2bcc350686dbc829b72fe9a9bb\n"
    },
    {
      "commit": "2c90a63af9f8812c3fc6b5a030a57b7251e0ea47",
      "tree": "a5c7f61cfea3d4fc011ce8096aaed14c32eef797",
      "parents": [
        "c29b5257e23f91d6a47c4db9d57350ed4985ea46"
      ],
      "author": {
        "name": "connorlee77",
        "email": "connorlee@google.com",
        "time": "Tue Feb 11 20:07:34 2025 +0000"
      },
      "committer": {
        "name": "connorlee77",
        "email": "connorlee@google.com",
        "time": "Tue Feb 11 21:07:58 2025 +0000"
      },
      "message": "Add residuals and jacobian getters to TinySolver.\n\n- Add methods to aceess the cached residuals and jacobian computed in\nthe optimization process in TinySolver. Usage of such methods will\nretrieve the corresponding values associated with the converged\nparameter.\n- Reorder the Update() call to ensure that the jacobian/residuals\nassociated with the converged parameter are computed and cached.\n\nChange-Id: If82e19d67d28b057833357f2c9a75b2d0fd139af\n"
    },
    {
      "commit": "c29b5257e23f91d6a47c4db9d57350ed4985ea46",
      "tree": "2146467f31356900d63cb9965670e914f61df066",
      "parents": [
        "3db40b801367c33b11cd58c08a202452b8201923"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 29 13:44:55 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 29 13:44:55 2024 -0700"
      },
      "message": "Fix the Bazel build\n\nChange-Id: I864c1a10e21a4d0e985262c61e7fd270da452d05\n"
    },
    {
      "commit": "3db40b801367c33b11cd58c08a202452b8201923",
      "tree": "52f0fa3333a8220bec7b3c3adfd2993691d1ce25",
      "parents": [
        "01a06ef7b1d9b59bc889f8686b949772523578bf"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Sep 28 15:12:23 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 29 09:43:26 2024 -0700"
      },
      "message": "Use std::string_view in EventLogger\n\nChange-Id: If23504e146826f143220b031a5fbc2be2013d127\n"
    },
    {
      "commit": "01a06ef7b1d9b59bc889f8686b949772523578bf",
      "tree": "80dec829552f5a9b58624d0c0cf14c3d950b29b7",
      "parents": [
        "a0dc19eb52b0e4ad9c0a7d11a467d60d88f0f8ba"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Thu Sep 19 10:45:27 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Sep 28 13:19:09 2024 -0700"
      },
      "message": "Add an EventLogger to TrustRegionPreprocessor\n\nChange-Id: I808567a6462f9326f385e88fdf2849537595ef7b\n"
    },
    {
      "commit": "a0dc19eb52b0e4ad9c0a7d11a467d60d88f0f8ba",
      "tree": "b1f66435c6551699f35e002424713c873037bd8e",
      "parents": [
        "8c740b83ee6b4d556e402dbce596154dbfc47ff4"
      ],
      "author": {
        "name": "Reinhold Gschweicher",
        "email": "pyro4hell@gmail.com",
        "time": "Mon Sep 09 11:54:34 2024 +0200"
      },
      "committer": {
        "name": "Reinhold Gschweicher",
        "email": "pyro4hell@gmail.com",
        "time": "Wed Sep 25 08:00:24 2024 +0200"
      },
      "message": "Fix Abseil usage of installed cmake-config\n\nFix the generated cmake-config file to look for the used Abseil-cpp\nconfig files providing the needed targets.\n\nWhen using Abseil from system (or locally installed and set via\n`absl_DIR`) the used targets like `absl::log` need to be made available\nin downstream projects using `ceres-solver`.\n\nFor system packages with no `absl_VERSION` info check for the required\ntarget `absl::absl_vlog_is_on`, just like we do in `CMakeLists.txt`.\n\nError on installation/export of \"no-absl-VERSION\" as we can\u0027t check\nversion mismatches.\n\nWhen using `abseil-cpp` as submodule the abseil-configs are added to the\ninstall target as well. Use these config files to make the needed Abseil\ntargets available.\n\nIn the submodule case extract the `absl_VERSION` variable from its\n`CMakeLists.txt` file for us to check against in the generated\ncmake-config-file.\n\nFixes: https://github.com/ceres-solver/ceres-solver/issues/1089\n\nChange-Id: I3e3d079ddf931e7fe1b57783471c32c19e4d31b6\n"
    },
    {
      "commit": "8c740b83ee6b4d556e402dbce596154dbfc47ff4",
      "tree": "bba231e45cf06a1f0a8697e5e4a03cd20b4b642e",
      "parents": [
        "42475eec77c7b32a5ab88715577c55e78bef3cc6"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Sep 18 21:41:18 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Sep 18 21:41:18 2024 -0700"
      },
      "message": "ClangTidy fixes\n\nChange-Id: I8d1a0258fc586040bd1cb5cc6131fdad2fe134eb\n"
    },
    {
      "commit": "42475eec77c7b32a5ab88715577c55e78bef3cc6",
      "tree": "77fd2186b9a58cd2d7b1ad3d04eecd0d1ecaa718",
      "parents": [
        "dcce78b8df76eccf55fb9c32b2cd3c2016e42f32"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Sep 17 10:00:39 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Sep 17 12:18:31 2024 -0700"
      },
      "message": "Use absl::btree_map instead of std::map\n\nChange-Id: Iece280a6cb0f37fa0bc572046b9d7f79ca825ebc\n"
    },
    {
      "commit": "dcce78b8df76eccf55fb9c32b2cd3c2016e42f32",
      "tree": "dab2b7857f05c323eddcccca4de9123e1b582fb4",
      "parents": [
        "e1385cc7e7f8fcd952ea0119e349f28c83f3d2aa"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Sep 17 10:27:46 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Tue Sep 17 12:17:34 2024 -0700"
      },
      "message": "Add some time logging to bundle_adjuster.cc\n\nChange-Id: I0deec65ec8d612a133748a242fe50d8e154f2704\n"
    },
    {
      "commit": "e1385cc7e7f8fcd952ea0119e349f28c83f3d2aa",
      "tree": "1b30d7f20ef907bff03b4536eba324fbf1529708",
      "parents": [
        "39b7cbaa5df8547bf2ef31c1976fec64a27bbd61"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Sep 16 23:57:03 2024 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Tue Sep 17 00:00:37 2024 +0200"
      },
      "message": "Fix MSVC build\n\nPreviously missed instance of preprocessor directives used in a macro\nexpansion.\n\nChange-Id: I2f1e4ad95036851fa502a9ea01d2a9684a3e0f9d\n"
    },
    {
      "commit": "39b7cbaa5df8547bf2ef31c1976fec64a27bbd61",
      "tree": "ae750541f8da2aad99c696cea62c2d2235f8511f",
      "parents": [
        "00b33b6523346fc06fac96a94e61bf50ccfdcde8"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 15:59:46 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Sep 16 21:51:54 2024 +0000"
      },
      "message": "Use absl hash containers for graph algorithms\n\nThis reduces pre-processor time when finding an\nordering automatically substantially.\n\nBefore:\n\nComputeStableSchurOrdering\n                                        Delta   Cumulative\n              CreateHessianGraph :    0.50324      0.50324\n                     Preordering :    0.00692      0.51017\n            StableIndependentSet :    0.26341      0.77358\n         ConstantParameterBlocks :    0.00095      0.77453\n                           Total :    0.23978      1.01431\n\nAfter:\n\nComputeStableSchurOrdering\n                                        Delta   Cumulative\n              CreateHessianGraph :    0.17183      0.17183\n                     Preordering :    0.00226      0.17409\n            StableIndependentSet :    0.12510      0.29919\n         ConstantParameterBlocks :    0.00073      0.29991\n                           Total :    0.01638      0.31629\n\nChange-Id: I50bbac69f8b3f19240a61a218913cebf34da0db5\n"
    },
    {
      "commit": "00b33b6523346fc06fac96a94e61bf50ccfdcde8",
      "tree": "7f3f1899775490da865032c28a05d1d345fe8121",
      "parents": [
        "0a7845fef4a87bc803a3e25e198251bf55858bfd"
      ],
      "author": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Sep 16 22:54:32 2024 +0200"
      },
      "committer": {
        "name": "Sergiu Deitsch",
        "email": "sergiu.deitsch@gmail.com",
        "time": "Mon Sep 16 23:16:07 2024 +0200"
      },
      "message": "Fix MSVC build\n\nUsing preprocessor directives in a macro expansion is a (non-standard)\nlanguage extension that is not supported by MSVC.\n\nChange-Id: I6e158b108a9c13cd277afb96cab2017ac192e3a2\n"
    },
    {
      "commit": "0a7845fef4a87bc803a3e25e198251bf55858bfd",
      "tree": "d626697f3312da70b8c85eb0504a2b585be3ee38",
      "parents": [
        "88f2cb32cd8633df45c064bdfd0a9db09d8c2ed1"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 21:24:47 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 21:24:47 2024 -0700"
      },
      "message": "Unbreak the build due to a silly typo\n\nChange-Id: Ib05cb3ceeb974b1099bc7b090f77e109ddcd7166\n"
    },
    {
      "commit": "88f2cb32cd8633df45c064bdfd0a9db09d8c2ed1",
      "tree": "6185ad4c6607fc9af8e1822970b5bdc547a783fb",
      "parents": [
        "c59882eca022e3910b9ca251f4d6622d9c713f24"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 20:12:27 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 20:12:27 2024 -0700"
      },
      "message": "ClangTidy fixes\n\nChange-Id: I1f4d6975fd1b9629d1db0d529d9ee92d79c11e84\n"
    },
    {
      "commit": "c59882eca022e3910b9ca251f4d6622d9c713f24",
      "tree": "ce725aaa8c561e850a94211ee79594658c396ba2",
      "parents": [
        "793efde013c9fcd172372b772b5ed5a5fa71d371"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 15:29:34 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 22:29:56 2024 +0000"
      },
      "message": "ClangTidy fixes\n\nChange-Id: I421b29e218c045c5d8bef42c840fa366d7c011fc\n"
    },
    {
      "commit": "793efde013c9fcd172372b772b5ed5a5fa71d371",
      "tree": "77b53a079a46b080ca0a77cf85a161861fd92deb",
      "parents": [
        "07651df0ad17365a2616135bb46ecd92b8e36adb"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 15:07:14 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 15:13:13 2024 -0700"
      },
      "message": "Fix Abseil version checking\n\nPreviously the find_package call was followed by a manual version\ncheck because we were using a Major.Minor version. Just checking\nfor Major version works.\n\nChange-Id: If83f8d1c6001d0ac3d53d9b24946b9168eb4932b\n"
    },
    {
      "commit": "07651df0ad17365a2616135bb46ecd92b8e36adb",
      "tree": "5492ca59d2ceb538ed9b74a2835a15b075909d95",
      "parents": [
        "8f1b6123ada7c4514c7e4b3489e2124d43246b83"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Aug 18 15:28:09 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 15:00:25 2024 -0700"
      },
      "message": "Partially update the installation docs\n\n1. Update dependencies\n2. Mention submodules\n\nChange-Id: I2f238c92a3a1eeee3277e3ec6f973fc2d50fe008\n"
    },
    {
      "commit": "8f1b6123ada7c4514c7e4b3489e2124d43246b83",
      "tree": "41046f58cbfde872d1305fd6e25d83c36607ac6b",
      "parents": [
        "487ce37fa775d57e1403c40eec7b69d0d91d7f2c"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Aug 14 11:15:23 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sun Sep 15 21:57:23 2024 +0000"
      },
      "message": "GradientProblem \u0026 related classes use std::unique_ptr\n\nPreviously these classes in analogy with ceres::Problem\u0027s interface\nhad interfaces to allow bare pointers as well as unique_ptrs. This\nCL changes the API to always use unique_ptr, this is less error prone\nand makes the default ownership semantics clearer.\n\nChange-Id: I7577a90761f341c7e009c248c820f0fec2e6f32d\n"
    },
    {
      "commit": "487ce37fa775d57e1403c40eec7b69d0d91d7f2c",
      "tree": "34caeafad359ceb06f7e68024d43fadd0d88ce15",
      "parents": [
        "6aa7df96501058e3d0531db4ea19b0cd0e2ece93"
      ],
      "author": {
        "name": "Reinhold Gschweicher",
        "email": "pyro4hell@gmail.com",
        "time": "Mon Sep 09 13:39:59 2024 +0200"
      },
      "committer": {
        "name": "Reinhold Gschweicher",
        "email": "pyro4hell@gmail.com",
        "time": "Wed Sep 11 08:06:36 2024 +0200"
      },
      "message": "Allow system/local Abseil master\n\nAdd special handling when `absl_VERSION` is empty. This is\nthe case when the `master` branch of `abseil-cpp` was installed using\n`CMake`. In that case check for VLOG availability through the CMake\ntarget `absl::absl_vlog_is_on`.\n\nFixes: https://github.com/ceres-solver/ceres-solver/issues/1098\nChange-Id: I3367aeb65caceb11558d8d6265dafe3ecc9a4875\n"
    },
    {
      "commit": "6aa7df96501058e3d0531db4ea19b0cd0e2ece93",
      "tree": "e12c70a9092fd8fcd718d598cc7adf8f2a67547d",
      "parents": [
        "ea4400cd57f17699077ec8905b503b9320aa1d6d"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Sep 09 08:45:27 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Sep 09 08:48:58 2024 -0700"
      },
      "message": "Reduce the minimum required version of Abseil\n\n1. The required version of Abseil is now 20240116.0 instead of 20240116.2.\n   This was an oversight. Thanks to @NeroBurner for pointing this out.\n   Both CMake and Bazel builds are updated.\n\n2. Unbreak the Bazel build which had become stale.\n\nChange-Id: I274bbad2f94f7710387f9693de9c66b035758970\n"
    },
    {
      "commit": "ea4400cd57f17699077ec8905b503b9320aa1d6d",
      "tree": "fdaaa14631f132e642b0d2f3ee69c20a49459c77",
      "parents": [
        "ecae3de15195103c6853ff1a547e932d8e011f73"
      ],
      "author": {
        "name": "Ian Muldoon",
        "email": "inio@google.com",
        "time": "Thu Sep 05 10:17:12 2024 -0700"
      },
      "committer": {
        "name": "Ian Muldoon",
        "email": "inio@google.com",
        "time": "Thu Sep 05 10:23:05 2024 -0700"
      },
      "message": "Update reference from Project Tango to ARCore\n\nChange-Id: Idcba8afc980561bfc9444c375f573e388a53e85f\n"
    },
    {
      "commit": "ecae3de15195103c6853ff1a547e932d8e011f73",
      "tree": "729ec04246ebf852f8bd2fb9a958fe1469ca0101",
      "parents": [
        "8964e52b01014376ab9808dbf9c0224385b0275e"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Aug 26 09:56:45 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Aug 26 16:57:17 2024 +0000"
      },
      "message": "Fix a declaration order problem in sparse_cholesky_test.cc\n\nChange-Id: Ie74069e8716145c244955bf907e2bae79f48972f\n"
    },
    {
      "commit": "8964e52b01014376ab9808dbf9c0224385b0275e",
      "tree": "f5ec71e001bc003cb432336226b4b0b43201d40f",
      "parents": [
        "80fce72bfdc000c175776f567c9ab517113a6af2"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Aug 26 09:18:17 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Aug 26 09:18:17 2024 -0700"
      },
      "message": "ClangTidy fixes\n\nChange-Id: Id7358fcdccae69b46b479d55ed6aee80efd3431e\n"
    },
    {
      "commit": "80fce72bfdc000c175776f567c9ab517113a6af2",
      "tree": "692f95ede3e9a2399c8e15543873600672f7871b",
      "parents": [
        "8f85014dcfe59c36f589a8db8e9aefc7f1418dbd"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Aug 24 11:18:24 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Aug 24 21:12:54 2024 -0700"
      },
      "message": "Add mixed precision solves for SUITE_SPARSE\n\nStarting with SuiteSparse version 7.4.0 CHOLMOD has support for single\nprecision matrices. This allows us to have single precision and mixed\nprecision solves when using the SUITE_SPARSE backend.\n\nThis CL also fixes sparse_cholesky_test which was completely broken for\nsingle precision testing.\n\nSample performance on my Mac.\n/usr/bin/time -l ./bin/bundle_adjuster --input\u003d../../Downloads/problem-3068-310854-pre.txt\n\u003cSNIP\u003e\n\nCost:\nInitial                          9.099334e+07\nFinal                            4.161838e+06\nChange                           8.683150e+07\n\nMinimizer iterations                        6\nSuccessful steps                            4\nUnsuccessful steps                          2\n\nTime (in seconds):\nPreprocessor                         2.528222\n\n  Residual only evaluation           0.142804 (5)\n  Jacobian \u0026 residual evaluation     0.424014 (4)\n  Linear solver                     54.083396 (5)\nMinimizer                           54.895752\n\nPostprocessor                        0.024564\nTotal                               57.448539\n\nTermination:                   NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 5.)\n\n       59.04 real       341.24 user         5.49 sys\n          5776375808  maximum resident set size\n\u003cSNIP\u003e\n        616329634071  instructions retired\n        929475980510  cycles elapsed\n          5375034560  peak memory footprint\n\n/usr/bin/time -l ./bin/bundle_adjuster --input\u003d../../Downloads/problem-3068-310854-pre.txt  -mixed_precision_solves\n\u003cSNIP\u003e\n\nCost:\nInitial                          9.099334e+07\nFinal                            4.148930e+06\nChange                           8.684441e+07\n\nMinimizer iterations                        6\nSuccessful steps                            4\nUnsuccessful steps                          2\n\nTime (in seconds):\nPreprocessor                         2.580217\n\n  Residual only evaluation           0.144098 (5)\n  Jacobian \u0026 residual evaluation     0.396723 (4)\n  Linear solver                     23.636074 (5)\nMinimizer                           24.427163\n\nPostprocessor                        0.023790\nTotal                               27.031170\n\nTermination:                   NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 5.)\n\n       28.58 real       128.53 user         2.37 sys\n          4818386944  maximum resident set size\n\u003cSNIP\u003e\n        395186936091  instructions retired\n        368802808856  cycles elapsed\n          4327029824  peak memory footprint\n\nChange-Id: I1f137b0dd12da8da7f9ced338dd8f20f4bbdf99d\n"
    },
    {
      "commit": "8f85014dcfe59c36f589a8db8e9aefc7f1418dbd",
      "tree": "29a6a3e41514d57d0b7af8edd6f8faec6cb2ec60",
      "parents": [
        "9186dcc49cbaa49cba874d3a467f90ae9fe36d7f"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Aug 24 07:57:17 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Sat Aug 24 09:29:51 2024 -0700"
      },
      "message": "Change the version from 2.2.0 to 2.3.0\n\nThe dependencies and the API have changed enough that\nit is worth incrementing the version number.\n\nChange-Id: I4e2911a91988d97f47320c56072ad1546e20030b\n"
    },
    {
      "commit": "9186dcc49cbaa49cba874d3a467f90ae9fe36d7f",
      "tree": "7d8fe205c6d103041a03a268cd79c53037c8e667",
      "parents": [
        "6726cd50732157e12e476445c8e3081379e5e2a1"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Aug 14 08:20:17 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Wed Aug 14 21:16:57 2024 -0700"
      },
      "message": "Add the ability to use system installed versions of abseil and googletest\n\nIf the user has checked out the submodules in third_party, they will be\nused, otherwise we will try and find the system installed versions of\nthese dependencies and use them if they are modern enough.\n\nChange-Id: I52164bc48a6ea804b85cdda05fee9cb94632f6c0\n"
    },
    {
      "commit": "6726cd50732157e12e476445c8e3081379e5e2a1",
      "tree": "dca1af1620518485f1f4edf1e760e351da2d99b6",
      "parents": [
        "4aa57d8096de004a0b484d796eaa26d66a631996"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Aug 12 05:56:27 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Mon Aug 12 07:06:34 2024 -0700"
      },
      "message": "Fix absl::log_flags linking on Linux\n\nGenerator expressions were introduced in CMake version 3.24. Without\nthem including absl::log_flags as an internal dependency causes\nlinking problems on some platforms. So for platforms with an older\nCMake version we make absl::log_flags a public dependency.\n\nChange-Id: I686f41e76b0ac17a03f1cd1d614372a7f130dfd9\n"
    },
    {
      "commit": "4aa57d8096de004a0b484d796eaa26d66a631996",
      "tree": "54ae1b79ca11e9887b41b50763453512dc01e570",
      "parents": [
        "f45b98709d2e9d1f767cd7c6f8204602655881a6"
      ],
      "author": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Fri Aug 09 17:02:53 2024 -0700"
      },
      "committer": {
        "name": "Sameer Agarwal",
        "email": "sameeragarwal@google.com",
        "time": "Fri Aug 09 17:02:53 2024 -0700"
      },
      "message": "Replace string_view with string.\n\nThe use of string_view causes problems with absl::StrCat\nin certain compilation configurations.\n\nChange-Id: I1beda82692378bf9cf378a7d42df46de8491d1c9\n"
    }
  ],
  "next": "f45b98709d2e9d1f767cd7c6f8204602655881a6"
}
