)]}'
{
  "commit": "c0e8690b64e44b3edce6ab8e2542baa5b743f45a",
  "tree": "02dfee819fe5adcc5000ff17e466235d4aedb430",
  "parents": [
    "b17e9e4dfb2400399f959b3898fe5230c80fffad"
  ],
  "author": {
    "name": "adonovan",
    "email": "adonovan@google.com",
    "time": "Thu Nov 19 15:50:29 2020 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Nov 19 15:52:27 2020 -0800"
  },
  "message": "bazel skyframe: use CompiledBuildFile for results of static BUILD processing\n\nThis change introduces a new type, PackageFunction.CompiledBuildFile,\nto hold all the results of static processing of the syntax tree of a BUILD\nfile, so that the syntax tree can be discarded. The results include:\n- the compiled Program,\n- any errors from parsing, name resolution, or BUILD dialect checks,\n- the set of literal strings passed to glob(), and\n- the mapping of top-level function calls to generator_name strings.\n\nThe goal of this change is to cleanly separate the static processing\nof BUILD files from the dynamic processing (execution), to unblock work\non various Starlark optimizations such as \"flat frames\" and a compiler.\nThese optimizations require that the syntax tree can be decorated with\ninformation during name resolution, which is impossible in the current\ncode because the cache holds unresolved syntax trees, and trees are\nresolved as a side effect of execution.\n\nHowever, this change also opens up opportunities for Skyframe\noptimizations, such as separating BUILD compilation and execution\nso that we needn\u0027t re-read/parse/resolve/compile a BUILD file just\nbecause one of its .bzl loads has changed; and prefetching loads\nas soon as the BUILD file has been parsed.\n\nErrors from checkBuildSyntax are now reported before Starlark name\nresolution, and resolution is now performed even if a BUILD file\nis not executed due to others (hence test changes), but there\nshould otherwise be no observable behavior change.\n\nOnce this lands, we can remove the resolveScope(false) hack from Starlark\nand (at long last) get to work on major optimizations.\n\nSorry for the messy diff. A number of things have crossed the boundary\nbetween lib.packages and the loading-phase parts of lib.skyframe,\nwhich should one day become part of lib.packages.\n\nPiperOrigin-RevId: 343386400\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "80a40ee2dc741106ebc9dd52876bc5a0d6124e05",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/Package.java",
      "new_id": "46c5289ee68cc608d6bc6bccabaf765fc0e00407",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/Package.java"
    },
    {
      "type": "modify",
      "old_id": "ecbf3b437203550df1809b4ed52dbc277b9b621a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java",
      "new_id": "1d286feed4a72c7a94ab540eab4679ba13ce1c11",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java"
    },
    {
      "type": "modify",
      "old_id": "597b897e55cbfcf00c528463b03da35797780808",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java",
      "new_id": "eee6f7c9050c64ad8c3b2bbbccff9833b8ffde7e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/RuleFactory.java"
    },
    {
      "type": "modify",
      "old_id": "09a6e6cdb52cb4111084f32b0c5b0f29f107ef83",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java",
      "new_id": "be7adba15dd55f5a4a5c6f487982cf3cfa61eca5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java"
    },
    {
      "type": "modify",
      "old_id": "f35d3f3bf3dfdcc74731b8fc250ceb9edaf63d94",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java",
      "new_id": "d763563518abab5594c463840fe884841c97cbed",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/BzlLoadFunction.java"
    },
    {
      "type": "modify",
      "old_id": "280658c8a4b647b82b12ebfd820a8e33f065f49b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java",
      "new_id": "f8afd1107a245719ffb6a27416433d7a36901e02",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java"
    },
    {
      "type": "modify",
      "old_id": "7e2be86ebdcd975b31ffaab4fb39bc2feb2d8637",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java",
      "new_id": "3b3b9acaff7fbfb8503fcb5a44b16b90084d1e26",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java"
    },
    {
      "type": "modify",
      "old_id": "8a362f039a32e23ef07c5272e8d963b5cb290985",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java",
      "new_id": "0e4bf323a9e307f56add42fb4c823c0c525ef08b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java"
    },
    {
      "type": "modify",
      "old_id": "333c9bfca0fc22e337088a5c9e8acecad5874d54",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java",
      "new_id": "ed1e12b953a2dcd448ba729c13ff02f3316b2448",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java"
    },
    {
      "type": "modify",
      "old_id": "34740b0d99d6e57e68d1d8ccffd5b436dc43b899",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java",
      "new_id": "d6420863903ff1e13c0305147e1e8a848169e2ae",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java"
    },
    {
      "type": "modify",
      "old_id": "4512457ef9d73142144a6da3f14d7eb23f64906e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java",
      "new_id": "5d656e16305a1c684de90df2535a51da17b25c86",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java"
    },
    {
      "type": "modify",
      "old_id": "dcfc31df2ba09c98ab14e0008a0b2574b98d00ac",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java",
      "new_id": "de78c602c8d13ee498d044bc3dee35d0322611d3",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/RuleFactoryTest.java"
    },
    {
      "type": "modify",
      "old_id": "84f34d629a11128eafa2cc63939936e4db7bef82",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/BuiltinsInjectionTest.java",
      "new_id": "b70aa8bfd4fe53c0bd961142beb32aaab7963a71",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/BuiltinsInjectionTest.java"
    },
    {
      "type": "modify",
      "old_id": "72a486d58917a5e2ee578b840ec5ea897eb3fb52",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java",
      "new_id": "be98af282725fec70272991fb91c02dda0ebd7b5",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java"
    },
    {
      "type": "modify",
      "old_id": "7d1c58e87a4eb01f363122ab944673b6d2d3568b",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java",
      "new_id": "d39b886857215e9759495bb9be2461d6d190b0b1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java"
    }
  ]
}
