)]}'
{
  "commit": "66c43f9931f20a40897a406455e0f591c619b62c",
  "tree": "1cb3bdebdd19d0bb580b76d62d006673f3faba0f",
  "parents": [
    "9b38c456f3f0c0f934d08230f339772e1f9ff9aa"
  ],
  "author": {
    "name": "Protobuf Team Bot",
    "email": "protobuf-github-bot@google.com",
    "time": "Wed Oct 14 19:55:03 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 14 20:00:12 2026 -0700"
  },
  "message": "Shrink upb_MiniTableExtension by removing sub member\n\nRemove the `sub` union member from `struct upb_MiniTableExtension` so\nthat extensions without sub-messages or closed enums do not pay for\nunused sub storage. When an extension has a sub, it is stored in trailing\n`upb_MiniTableSubInternal` storage directly after the\n`upb_MiniTableExtension`, described by the new internal\n`upb_MiniTableExtensionWithSub` type.\n\nDetails:\n\n*   The MiniDescriptor decoder computes the trailing sub offset\n    (`submsg_ofs`) for the target platform\u0027s pointer size. The minitable\n    generator emits it via `UPB_SIZE(ofs32, ofs64)`, so 32-bit builds get the\n    correct offset. The decoder writes the sub only when building for the\n    native platform.\n*   The minitable generator declares `\u003cext\u003e_obj` as either\n    `upb_MiniTableExtensionWithSub` or a bare `upb_MiniTableExtension`, and\n    emits a `UPB_STATIC_ASSERT` that the sub\u0027s offset in\n    `upb_MiniTableExtensionWithSub` matches `submsg_ofs` on every platform.\n*   Add `_upb_MiniTableField_Sub()`, which locates a field\u0027s sub from\n    `submsg_ofs`, and use it everywhere that calculation was duplicated\n    (MiniTable sub getters, extension sub setters, `upb_MiniTable_SetSub*()`,\n    and the MiniDescriptor decoder).\n*   Add `_upb_MiniTableField_HasSub()` for the \"sub-message or closed enum\"\n    check used to decide whether a field has a sub.\n*   `upb_FieldDef` builds extension MiniTables with\n    `_upb_MiniTableExtension_Build()` instead of duplicating the\n    \"has sub\" logic and the allocation size.\n\nPiperOrigin-RevId: 999800168\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e3cae4186c06e6cc91885c80b0e40c2b8e9122b1",
      "old_mode": 33188,
      "old_path": "upb/message/promote_test.cc",
      "new_id": "0af789d633762e9f90e9df7e31bb0624487b8aa4",
      "new_mode": 33188,
      "new_path": "upb/message/promote_test.cc"
    },
    {
      "type": "modify",
      "old_id": "d1ac8e3994112f211fda440aeb7c0d332a3ad110",
      "old_mode": 33188,
      "old_path": "upb/mini_descriptor/decode.c",
      "new_id": "08941dcb495c8fa4d3edd9bd6d99f30e6242ba6e",
      "new_mode": 33188,
      "new_path": "upb/mini_descriptor/decode.c"
    },
    {
      "type": "modify",
      "old_id": "5542d5d7a02a1545e6e6c4428a745eb31e2c2373",
      "old_mode": 33188,
      "old_path": "upb/mini_descriptor/decode.h",
      "new_id": "a43c08f6277c5eb913db4ab01b912afa56a791c9",
      "new_mode": 33188,
      "new_path": "upb/mini_descriptor/decode.h"
    },
    {
      "type": "modify",
      "old_id": "cf828293f492ecb589501d12a4ce123e06cad821",
      "old_mode": 33188,
      "old_path": "upb/mini_descriptor/internal/encode_test.cc",
      "new_id": "f54233c70614d7fc7d4b7209bf9b270a79bb3faa",
      "new_mode": 33188,
      "new_path": "upb/mini_descriptor/internal/encode_test.cc"
    },
    {
      "type": "modify",
      "old_id": "6969bf926a7bacdedff0b4c46454508c5e99d9a1",
      "old_mode": 33188,
      "old_path": "upb/mini_descriptor/link.c",
      "new_id": "46a154cdefd7671c4a655dcf38f3c36a3dcec88d",
      "new_mode": 33188,
      "new_path": "upb/mini_descriptor/link.c"
    },
    {
      "type": "modify",
      "old_id": "93031fe6cbec2f42b5f82cc28c4f28c3cd5edc3f",
      "old_mode": 33188,
      "old_path": "upb/mini_table/internal/extension.h",
      "new_id": "cb2f809d8df6187ccf97c55a7064049e229ba841",
      "new_mode": 33188,
      "new_path": "upb/mini_table/internal/extension.h"
    },
    {
      "type": "modify",
      "old_id": "892e3fe4971a37a635eddc77cda4580eb86ef613",
      "old_mode": 33188,
      "old_path": "upb/mini_table/internal/field.h",
      "new_id": "1533283138e66295c7c4d79888c1b7cff13e8b43",
      "new_mode": 33188,
      "new_path": "upb/mini_table/internal/field.h"
    },
    {
      "type": "modify",
      "old_id": "2b27400e7c570b43fdd471950b22a5725d2e95de",
      "old_mode": 33188,
      "old_path": "upb/mini_table/internal/message.h",
      "new_id": "467e23a53bb63be1e600e5900d489784503f4344",
      "new_mode": 33188,
      "new_path": "upb/mini_table/internal/message.h"
    },
    {
      "type": "modify",
      "old_id": "a03a16ad0e77dc5664e934988c1e2c406bba2778",
      "old_mode": 33188,
      "old_path": "upb/reflection/field_def.c",
      "new_id": "e49c95c2a02cef0b2eb60b9a4546c8d57299c1df",
      "new_mode": 33188,
      "new_path": "upb/reflection/field_def.c"
    },
    {
      "type": "modify",
      "old_id": "d644f5d2eb94ae4026d7ad62b56015130a495472",
      "old_mode": 33188,
      "old_path": "upb/reflection/file_def.c",
      "new_id": "cb2c9f2e5c772d7ff836611b04b82a9979b85f86",
      "new_mode": 33188,
      "new_path": "upb/reflection/file_def.c"
    },
    {
      "type": "modify",
      "old_id": "2c088fdb8d3fbfed6f600f9a2205417cf276aee7",
      "old_mode": 33188,
      "old_path": "upb/reflection/internal/file_def.h",
      "new_id": "8f5a740fdc50bab3bd6858ff01857450f3e4107c",
      "new_mode": 33188,
      "new_path": "upb/reflection/internal/file_def.h"
    },
    {
      "type": "modify",
      "old_id": "f22b44de720a2b425b962b68f7a4758b2558975b",
      "old_mode": 33188,
      "old_path": "upb/test/fuzz_util.cc",
      "new_id": "ed39d18f7d2da2d0f4cbc4d48d9066a0ef7928da",
      "new_mode": 33188,
      "new_path": "upb/test/fuzz_util.cc"
    },
    {
      "type": "modify",
      "old_id": "e454ce1701eb5eb999eb68d65d609399af9aa705",
      "old_mode": 33188,
      "old_path": "upb/wire/decode_fast/select.c",
      "new_id": "db7a249b479353da5a7ac3b9e9672b11ac9d7d62",
      "new_mode": 33188,
      "new_path": "upb/wire/decode_fast/select.c"
    },
    {
      "type": "modify",
      "old_id": "c074e724e1a4bcbbae80df5508950d194a31c114",
      "old_mode": 33188,
      "old_path": "upb_generator/minitable/generator.cc",
      "new_id": "0ca530f03b1405a17634c296c52fb93fce41fbd0",
      "new_mode": 33188,
      "new_path": "upb_generator/minitable/generator.cc"
    }
  ]
}
