)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "69f181bf84fbe79c07edb1d863f1cf2b418a0d4f",
      "old_mode": 33188,
      "old_path": "include/ceres/tiny_solver.h",
      "new_id": "093bc36f11a7a17e6942db011808ad008d55929b",
      "new_mode": 33188,
      "new_path": "include/ceres/tiny_solver.h"
    },
    {
      "type": "modify",
      "old_id": "fa6753874f8d3075b4aff900135efaf9a0f878e3",
      "old_mode": 33188,
      "old_path": "include/ceres/tiny_solver_autodiff_function.h",
      "new_id": "6fe0db8f878e451545f29beb09509cfe05f343e3",
      "new_mode": 33188,
      "new_path": "include/ceres/tiny_solver_autodiff_function.h"
    },
    {
      "type": "modify",
      "old_id": "39ba266d4569728d60ba0e22e5377596e4cda89b",
      "old_mode": 33188,
      "old_path": "include/ceres/tiny_solver_cost_function_adapter.h",
      "new_id": "3f7a378cc9166bfa8ec107217f4374059a9cfba5",
      "new_mode": 33188,
      "new_path": "include/ceres/tiny_solver_cost_function_adapter.h"
    },
    {
      "type": "modify",
      "old_id": "ff55e82daf9efae94937fcea2ac7ce5591b8a899",
      "old_mode": 33188,
      "old_path": "internal/ceres/tiny_solver_autodiff_function_test.cc",
      "new_id": "546b49c49e076cd9c3edbc67fc3230a58a9a4781",
      "new_mode": 33188,
      "new_path": "internal/ceres/tiny_solver_autodiff_function_test.cc"
    },
    {
      "type": "modify",
      "old_id": "e2c2755161939dab9fb82e7a96100d1d4771ff17",
      "old_mode": 33188,
      "old_path": "internal/ceres/tiny_solver_cost_function_adapter_test.cc",
      "new_id": "1bf1ee7d871cc6282b4fe071d8de3b474831889e",
      "new_mode": 33188,
      "new_path": "internal/ceres/tiny_solver_cost_function_adapter_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f8b92648f69665e5c64e67d6ee069a1d67cd58dd",
      "old_mode": 33188,
      "old_path": "internal/ceres/tiny_solver_test.cc",
      "new_id": "9a13c26257f225a37f43148de20a82941154db44",
      "new_mode": 33188,
      "new_path": "internal/ceres/tiny_solver_test.cc"
    }
  ]
}
