)]}'
{
  "commit": "a9d94ca5da9e289f8e30b0c4fa37e1ad6eea9041",
  "tree": "c5159b9eff6437dfe635de6271c5ceb14bd2b34b",
  "parents": [
    "10f7d5d7b03d97e97f6f7948e344b5bda9e25486"
  ],
  "author": {
    "name": "Lalit Maganti",
    "email": "lalitm@google.com",
    "time": "Tue Mar 31 18:02:45 2026 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Mar 31 17:02:45 2026 +0000"
  },
  "message": "tp: introduce Plugin system for trace processor (#5289)\n\nAdd a self-registering plugin system that allows trace processor\ncomponents to be decoupled from the core. Plugins register via\nPERFETTO_REGISTER_PLUGIN and are automatically discovered,\ntopologically sorted by dependencies, and instantiated.\n\nThe plugin lifecycle hooks into trace_processor_impl at:\n- RegisterImporters: before parsing begins\n- OnEventsFullyExtracted: after parsing, before SQL init\n- RegisterStaticTables/Functions/Operators: during engine init\n- GetAfterEofSql: after EOF SQL execution\n\nNo actual plugins are migrated in this change.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2f8d9e01c36546c84b01c60a3f35894c422f25e4",
      "old_mode": 33188,
      "old_path": "Android.bp",
      "new_id": "d4e4ceac9453d79c940561f65b3f2dc2256d14c4",
      "new_mode": 33188,
      "new_path": "Android.bp"
    },
    {
      "type": "modify",
      "old_id": "b12cbf549d3b9b46c1cff5c941cdb4fe06c58c7d",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "445e3356565e9deaa672b685da47b5f14a83e71b",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "ed35d66c45ca18351ddb86a6741c5291dbf6921a",
      "old_mode": 33188,
      "old_path": "src/trace_processor/BUILD.gn",
      "new_id": "ae78563fada3b81eb826aa230b9d6206f2f6a319",
      "new_mode": 33188,
      "new_path": "src/trace_processor/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6c7d24c0298948d043c5ecd25771b4fe94ec2d7a",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/plugin/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fbb7af5d2cdf5d3b698b170d68f910a1ee407953",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/plugin/plugin.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2bd707d5dd108bdc069cd61231f6f2dc1018986c",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/plugin/plugin.h"
    },
    {
      "type": "modify",
      "old_id": "81e4398c087ce7d09226fd621cae61426b24b0ae",
      "old_mode": 33188,
      "old_path": "src/trace_processor/perfetto_sql/engine/perfetto_sql_engine.h",
      "new_id": "37f7a977c1ce0f8b0ec0d4b9afdcdf4ce6a1da60",
      "new_mode": 33188,
      "new_path": "src/trace_processor/perfetto_sql/engine/perfetto_sql_engine.h"
    },
    {
      "type": "modify",
      "old_id": "eefd9ffa08efdad348829e90c6b424930c4cfdcc",
      "old_mode": 33188,
      "old_path": "src/trace_processor/trace_processor_impl.cc",
      "new_id": "d7359c28ec617f778e01e34ad3a3e99be3488168",
      "new_mode": 33188,
      "new_path": "src/trace_processor/trace_processor_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "a6a618b5b4b4ff72d1f5f24256004146d5ba56ee",
      "old_mode": 33188,
      "old_path": "src/trace_processor/trace_processor_impl.h",
      "new_id": "e178c449be11235840326695695b46dd04622629",
      "new_mode": 33188,
      "new_path": "src/trace_processor/trace_processor_impl.h"
    }
  ]
}
