)]}'
{
  "commit": "48bd8d5c2d4143d25c5d868eb6510d2ddccc4528",
  "tree": "14c815e8f18ff4b7111a18d3439caacab768347c",
  "parents": [
    "aac709d14da2626e8bc5a9db953f6413dcb96184"
  ],
  "author": {
    "name": "Konstantin Shcheglov",
    "email": "scheglov@google.com",
    "time": "Thu Aug 28 12:20:11 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Aug 28 12:20:11 2025 -0700"
  },
  "message": "Fine. Optimize diagnostics reuse with an API signature shortcut\n\nPreviously, reusing cached diagnostics always required validating the\nfine-grained `RequirementsManifest`. While effective (save `6000 ms` by\nnot analyzing files when API changed), this process incurred significant\noverhead even for changes that did not affect a library\u0027s public API,\nsuch as modifying a method body. In these scenarios, the check could\nnearly double the total analysis time (add `110 ms`).\n\nThis change introduces a two-tiered validation system to improve\nperformance and refactors diagnostics handling:\n\n- A new `LibraryDiagnosticsBundle` class is extracted to better\n  encapsulate a library\u0027s diagnostics and its requirements.\n\n- A coarse-grained API signature check now acts as a fast-path\n  shortcut. If a library\u0027s API signature is unchanged, its cached\n  diagnostics are reused immediately, bypassing the more expensive\n  manifest validation. The full manifest is only checked if this\n  shortcut fails.\n\nAdditionally, the key for the diagnostics bundle is now cached on the\n`LibraryFileKind` object itself. This prevents recomputing the key\u0027s\nhash upon every access, further improving performance, about `16 ms` for\n`1600` files in the analyzer itself.\n\nWith these changes the overhead of producing diagnostics is under `1\nms`. There is still some overhead of about `30 ms` in re-loading library\nsummaries, I will address this separately.\n\nChange-Id: Iec884b8e0311e20965c7cde6d8cbae42b513a107\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/447520\nReviewed-by: Johnni Winther \u003cjohnniwinther@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4ea62077afc60b81fa9de8b6483a4f3d52cb846d",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/analysis/driver.dart",
      "new_id": "fcf94eb1bdbb8217ce9add413bfa51ede5b152c2",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/analysis/driver.dart"
    },
    {
      "type": "modify",
      "old_id": "f970b94ad7e1e41d2b21707150c9fcfef2c4b972",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/analysis/driver_event.dart",
      "new_id": "363febad098437136ee8cb436b3f7e2b63ee3c9b",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/analysis/driver_event.dart"
    },
    {
      "type": "modify",
      "old_id": "676e233d066cac22040e58c6fcffedee27c4db15",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/analysis/file_state.dart",
      "new_id": "6a9d6c6d2419dba3e137965ecab5986475c00e01",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/analysis/file_state.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "90390681491581c48133ea88b0d19acf01d217ca",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/analysis/library_diagnostics.dart"
    },
    {
      "type": "modify",
      "old_id": "a2b8e3c8a2697802c359a8e41db40eee2a926e1a",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/analysis/driver_test.dart",
      "new_id": "f26c20344975c5818a72d0ef44a731b7afefbc9e",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/analysis/driver_test.dart"
    },
    {
      "type": "modify",
      "old_id": "12f21294bdc2897ad02cace3730457db47f65e53",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/test/src/dart/analysis/result_printer.dart",
      "new_id": "fbab927bd12be2a6fe1d05585fbd5a0efbe08887",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/test/src/dart/analysis/result_printer.dart"
    }
  ]
}
