)]}'
{
  "commit": "3f749efdd0b512ebbce2a798f6a18fcf8dc5489b",
  "tree": "70476ae712e3a86759a0aaa5e32863dab5666b8a",
  "parents": [
    "2e75a5498d62b17168538e8e7d6da3371ebd4426"
  ],
  "author": {
    "name": "Konstantin Shcheglov",
    "email": "scheglov@google.com",
    "time": "Mon Sep 29 10:47:47 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Sep 29 10:47:47 2025 -0700"
  },
  "message": "Fine. Use manifest hash to fast-path export validation\n\nAdd a fast path for validating `export` requirements by recording and\ncomparing the exported library’s `LibraryManifest.hashForRequirements`.\n\nPreviously, `ExportRequirement.isSatisfied` walked the exported\nnamespace and compared each expected ID, even when the exported\nlibrary’s manifest had not changed. This patch short-circuits that work\nwhen the manifest hash matches the recorded value.\n\nKey changes:\n- ExportRequirement now includes a snapshot of the exported library’s\n  `hashForRequirements` and serializes it.\n- `isSatisfied()` returns success immediately when the current manifest\n  hash equals the recorded hash, skipping combinator and per-name ID\n  checks. (Missing exported libraries still report a failure.)\n- `LibraryExportRequirements.build()` captures the hash from the\n  exported library’s manifest and stores it in each requirement.\n- Bump `AnalysisDriver.DATA_VERSION` from 565 to 566 due to the binary\n  format change.\n\nImpact:\n- Avoids re-validating unchanged re-exports, reducing unnecessary work\n  in incremental analyses.\n- Maintains correctness because the hash covers exactly the\n  requirement-visible state used by validation.\n\nChange-Id: I2ecaabe45be7326ed11257a13d04a55de79f328d\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/451941\nReviewed-by: Paul Berry \u003cpaulberry@google.com\u003e\nCommit-Queue: Konstantin Shcheglov \u003cscheglov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "06b6e4b404a47a7df2550e52e8e586c5ba9951ab",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/dart/analysis/driver.dart",
      "new_id": "96676763fd202f21a9892936242c682cf4aaf345",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/dart/analysis/driver.dart"
    },
    {
      "type": "modify",
      "old_id": "a6615e61ac2381b1a0069601d5924620c887632c",
      "old_mode": 33188,
      "old_path": "pkg/analyzer/lib/src/fine/requirements.dart",
      "new_id": "27f08269ffcdb7860784c22bdb05a1cdd862a854",
      "new_mode": 33188,
      "new_path": "pkg/analyzer/lib/src/fine/requirements.dart"
    }
  ]
}
