)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fd8fd980d0b537ffaccebd69daa3f4e682facdb3",
      "old_mode": 33188,
      "old_path": ".github/workflows/linux.yml",
      "new_id": "c47f1f8ee9793fc080dbf91d55179e9b68475efc",
      "new_mode": 33188,
      "new_path": ".github/workflows/linux.yml"
    },
    {
      "type": "modify",
      "old_id": "6c287fd099e00eb9cb499311f7091a5e4d107201",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_eliminator_impl.h",
      "new_id": "57706d18d7bb1f3e18a4aca473655cdab12f2df0",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_eliminator_impl.h"
    }
  ]
}
