)]}'
{
  "commit": "df108f91d5b851e4a7012579d0fbb1c3fed8a995",
  "tree": "3c5b91fe4c917fc3cd7e58fc8d70d832746fd40b",
  "parents": [
    "925378c69722825f47afc170fe280d8af788c6c1"
  ],
  "author": {
    "name": "Aviral Goel",
    "email": "aviralg@users.noreply.github.com",
    "time": "Mon Jun 29 18:36:25 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 30 01:36:25 2026 +0000"
  },
  "message": "[clang][ssaf] Add `StaticLibrary` data structure (#205946)\n\nThis change introduces the `StaticLibrary` data structure, the SSAF analogue of `ar`, `libtool -static`, or `lib.exe`: a single-architecture bundle of `TUSummary` objects. `StaticLibrary` only stores `TUSummaryEncoding` because it will be used by `clang-ssaf-linker` that does not decode the summary data. We don\u0027t plan to create a decoded variant because there will be no consumer. Support for constructing and linking static libraries will be introduced in future PRs.\n\nrdar://180665891",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae8cfa4c7bacbba7d0a6300b85e120d48c853723",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ScalableStaticAnalysis/Core/EntityLinker/StaticLibrary.h"
    },
    {
      "type": "modify",
      "old_id": "2c672a55e4873452512ae1913ec53bc97fa8980b",
      "old_mode": 33188,
      "old_path": "clang/include/clang/ScalableStaticAnalysis/Core/EntityLinker/TUSummaryEncoding.h",
      "new_id": "2ece195ed1fd02418b76fcd2ef7105276f0a5259",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ScalableStaticAnalysis/Core/EntityLinker/TUSummaryEncoding.h"
    },
    {
      "type": "modify",
      "old_id": "6da5a9e42c4da76b8c04bb6fd303378b2c3db309",
      "old_mode": 33188,
      "old_path": "clang/include/clang/ScalableStaticAnalysis/Core/Model/BuildNamespace.h",
      "new_id": "1549b357ea50d523f2ac9cd4648e54471380daff",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ScalableStaticAnalysis/Core/Model/BuildNamespace.h"
    },
    {
      "type": "modify",
      "old_id": "44931026ba4288ca6c64b781297c0314d8896185",
      "old_mode": 33188,
      "old_path": "clang/include/clang/ScalableStaticAnalysis/Core/Model/PrivateFieldNames.def",
      "new_id": "b1c37823dc3fe46be97fea35c86ba9bc34e01d22",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ScalableStaticAnalysis/Core/Model/PrivateFieldNames.def"
    },
    {
      "type": "modify",
      "old_id": "9d9b1ff0bbb51b65e84a20ff8f6a12fc146c4bf4",
      "old_mode": 33188,
      "old_path": "clang/include/clang/ScalableStaticAnalysis/Core/Serialization/JSONFormat.h",
      "new_id": "d4b6cfc0e1690610b3d0ae03a1ebfff7cc4d1078",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ScalableStaticAnalysis/Core/Serialization/JSONFormat.h"
    },
    {
      "type": "modify",
      "old_id": "ca3ee9ce3362cb0ce3ffaa9ee7b56823fda3a041",
      "old_mode": 33188,
      "old_path": "clang/include/clang/ScalableStaticAnalysis/Core/Serialization/SerializationFormat.h",
      "new_id": "29b662bc0e38000b62cfeb900fecaee2270e3fa0",
      "new_mode": 33188,
      "new_path": "clang/include/clang/ScalableStaticAnalysis/Core/Serialization/SerializationFormat.h"
    },
    {
      "type": "modify",
      "old_id": "b2cde5f2254456b5062273c117aaf7b164b40ec8",
      "old_mode": 33188,
      "old_path": "clang/lib/ScalableStaticAnalysis/Core/CMakeLists.txt",
      "new_id": "0a0ce19d637326d8655122cca7543309ffaf0a93",
      "new_mode": 33188,
      "new_path": "clang/lib/ScalableStaticAnalysis/Core/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "ee1603e50025f0bca2c4d0866059f42a68237782",
      "old_mode": 33188,
      "old_path": "clang/lib/ScalableStaticAnalysis/Core/ModelStringConversions.h",
      "new_id": "8d3c93220574072742705e0c7f87cb895b40cb41",
      "new_mode": 33188,
      "new_path": "clang/lib/ScalableStaticAnalysis/Core/ModelStringConversions.h"
    },
    {
      "type": "modify",
      "old_id": "424d7368cf33f971c66fe1c83029a3db66c15343",
      "old_mode": 33188,
      "old_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/Artifact.cpp",
      "new_id": "e5fc46a8ea9524965cf4401f7790f48c04d0157b",
      "new_mode": 33188,
      "new_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/Artifact.cpp"
    },
    {
      "type": "modify",
      "old_id": "191be83ccb0e5a187374e8f871ea48f72fcd3d6a",
      "old_mode": 33188,
      "old_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/JSONFormatImpl.h",
      "new_id": "e83a8dabac113c682ad0d8a2b8c5cd73306966b0",
      "new_mode": 33188,
      "new_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/JSONFormatImpl.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b34c63b185b0e31acf39f1e898daa26bea1220ee",
      "new_mode": 33188,
      "new_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/StaticLibrary.cpp"
    },
    {
      "type": "modify",
      "old_id": "5a5ab98731c4727f5c04009e3496427324b7af7b",
      "old_mode": 33188,
      "old_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp",
      "new_id": "3ee4f059bd458fcaedf4436700d1b5cd699b5567",
      "new_mode": 33188,
      "new_path": "clang/lib/ScalableStaticAnalysis/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3059d007a2e9e6d7e0f79d1a372a8bcabe9634e9",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/Artifact/Inputs/rt-static-library-empty.json"
    },
    {
      "type": "modify",
      "old_id": "4ddb233940afecc493a6df96b35901321e5e3261",
      "old_mode": 33188,
      "old_path": "clang/test/Analysis/Scalable/ssaf-format/Artifact/round-trip.test",
      "new_id": "d6d67826e48478e27baf50ff1fdddd8cbf4b0780",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/Artifact/round-trip.test"
    },
    {
      "type": "modify",
      "old_id": "904b1dffa7d7b4858ba14e8d8640d84508f0aa7f",
      "old_mode": 33188,
      "old_path": "clang/test/Analysis/Scalable/ssaf-format/Artifact/top-level.test",
      "new_id": "7838f3a90534c6160000796c571cde418e5725de",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/Artifact/top-level.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e3ea75ba7024cef79977cbb241397cf99c37919d",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/duplicate-member.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b0e13f61aa06e2c426e904a30ff8e3bc00568625",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/invalid-syntax.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5134814e4166ad56f7bd31090f25612c29ef48ca",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/member-inner-error.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cf85ec21d0d4ed81aa7cf420b1401946c1d9ed7b",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/member-mismatched-type.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ba536ee869f67bcaa071bc750408544847856bc",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/member-missing-type.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d62af500c4b047aac2f4d4c66b8937e8975998d2",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/member-not-object.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39a8c23970d1d40cbc65db30655439b1721a3d95",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/member-triple-mismatch.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1686e7ac517b40af17a92da637bf8f717470f243",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/members-not-array.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5c754996b18ce328ca90a3577a58f4cbe05d2fdf",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/mismatched-type.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6f5059edaac8535b2882e534e34eeb5860c136ec",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/missing-members.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "59aa554be123c9ac1df2114eea1360f6bbc3f2ce",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/missing-namespace.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6ab76fc69aa0c40916373a5a5bc05adf00658ffa",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/missing-target-triple.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9e470063d786590adf0ff3c30f20226272406d95",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/missing-type.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5e96399f343879084915dc948843de82286bf8c5",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/namespace-invalid-kind.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7aa0a00cdc4a29c07169d99b2b668e4a070eb8a0",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/namespace-missing-kind.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "750e310763ee9d1c64237a347646cc7db732a1e3",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/namespace-missing-name.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "073cd4a505d2fab984226b7e5c17eafe93c6712a",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/namespace-wrong-kind.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0967ef424bce6791893e9a57bb952f80fd536e93",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/not-json-extension.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9b0c3351c0ee35206f63c3a3f3583ec7a4088b9",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/not-normalized-target-triple.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fe51488c7066f6687ef680d6bfaa4f7768ef205c",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/not-object.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3059d007a2e9e6d7e0f79d1a372a8bcabe9634e9",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/rt-empty.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e1636d2740c87690b2d37556b0eab701b62771f",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/rt-multiple-members.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7ad6021fbc447728ae9b2d5b03a7aaa47b56c961",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/rt-single-member.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fb6820ca7a07dd04dfaac031a2f79c6304bcf5e6",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/Inputs/unsorted-members-input.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "22a94dd600ec768ff81dbbb7ce3ddc0875dcd7ff",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/io.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a9455a050c55c2ed23f9aacc6d616beb8884f2fa",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/permissions.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b63dd08a3975b9c842e1bdd499b6550e6075ac9f",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/round-trip.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a27496f2681e65c279d95217fd3e4e46a0892983",
      "new_mode": 33188,
      "new_path": "clang/test/Analysis/Scalable/ssaf-format/StaticLibrary/top-level.test"
    },
    {
      "type": "modify",
      "old_id": "9416b45c974b54ba15b626660caca2f673b14114",
      "old_mode": 33188,
      "old_path": "clang/tools/clang-ssaf-format/SSAFFormat.cpp",
      "new_id": "5b94da384cb7da724c5b84bff251e45352874b51",
      "new_mode": 33188,
      "new_path": "clang/tools/clang-ssaf-format/SSAFFormat.cpp"
    },
    {
      "type": "modify",
      "old_id": "e98efd45ea6b0c315fbfb031349b9a7dadd367d2",
      "old_mode": 33188,
      "old_path": "clang/unittests/ScalableStaticAnalysis/BuildNamespaceTest.cpp",
      "new_id": "5089796a2b0b8cf97a482a885cfb9ab163c26ff9",
      "new_mode": 33188,
      "new_path": "clang/unittests/ScalableStaticAnalysis/BuildNamespaceTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "2d65fb675eec301596568b144a58badd5de431b8",
      "old_mode": 33188,
      "old_path": "clang/unittests/ScalableStaticAnalysis/Frontend/TUSummaryExtractorFrontendActionTest.cpp",
      "new_id": "4baf593f57eef6d8743b387a8091e472ec41d067",
      "new_mode": 33188,
      "new_path": "clang/unittests/ScalableStaticAnalysis/Frontend/TUSummaryExtractorFrontendActionTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "ff24a8358612dc3c67f16e1a0f356fd19dc0f41a",
      "old_mode": 33188,
      "old_path": "clang/unittests/ScalableStaticAnalysis/ModelStringConversionsTest.cpp",
      "new_id": "b0c741d83feaf883896700a0065f32d47a786cbb",
      "new_mode": 33188,
      "new_path": "clang/unittests/ScalableStaticAnalysis/ModelStringConversionsTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "915fe15af832c6964e802dfd46265ed2be124184",
      "old_mode": 33188,
      "old_path": "clang/unittests/ScalableStaticAnalysis/Registries/MockSerializationFormat.cpp",
      "new_id": "4a01248b53ac7c16b83cc0f76fc3717f25cc7966",
      "new_mode": 33188,
      "new_path": "clang/unittests/ScalableStaticAnalysis/Registries/MockSerializationFormat.cpp"
    },
    {
      "type": "modify",
      "old_id": "2ecaab9fb01329e7049a9e80edc77593b647b6ab",
      "old_mode": 33188,
      "old_path": "clang/unittests/ScalableStaticAnalysis/Registries/MockSerializationFormat.h",
      "new_id": "0cadd0b98fe3ab20d5c6144b00b15eb334e2e8e1",
      "new_mode": 33188,
      "new_path": "clang/unittests/ScalableStaticAnalysis/Registries/MockSerializationFormat.h"
    },
    {
      "type": "modify",
      "old_id": "22fbff754fb37e74d78d33f6fd18565ff0bf7fa5",
      "old_mode": 33188,
      "old_path": "clang/unittests/ScalableStaticAnalysis/TestFixture.h",
      "new_id": "e7eed940938ce414076cf2cbc4ccce62ebae655a",
      "new_mode": 33188,
      "new_path": "clang/unittests/ScalableStaticAnalysis/TestFixture.h"
    }
  ]
}
