)]}'
{
  "log": [
    {
      "commit": "150b6136bd45b2878dc24e69ab2a9ec4a22202dd",
      "tree": "12f6a899bdb23630c9724c029993d3d938e57170",
      "parents": [
        "1d37931a3b120439b42ab0a676c4585b2d4201b8"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Fri Sep 11 18:59:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 19:01:53 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 980138979\n"
    },
    {
      "commit": "1d37931a3b120439b42ab0a676c4585b2d4201b8",
      "tree": "c2888dec50eb121adbc87e84a5b5dd3e5d9cc458",
      "parents": [
        "68112a6289a24d804ab637b7fb888bab52bcea87"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Fri Sep 11 22:10:20 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Fri Sep 11 22:10:20 2026 +0000"
      },
      "message": "Auto-generate files after cl/980037766\n"
    },
    {
      "commit": "68112a6289a24d804ab637b7fb888bab52bcea87",
      "tree": "31c31392cbfbd5064715682be0e25c5041e865b0",
      "parents": [
        "3d66cb5dd7894a3649ba17c1753fbce43a0c2437"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Fri Sep 11 14:58:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 15:03:58 2026 -0700"
      },
      "message": "In-place reallocate where possible when growing a map with primitive keys. When this triggers, it results in using less then half the peak and retained memory of the existing reallocation behavior.\n\nPiperOrigin-RevId: 980037766\n"
    },
    {
      "commit": "3d66cb5dd7894a3649ba17c1753fbce43a0c2437",
      "tree": "0d2bb990eb566b8f771a8e192e1e0663e5e78542",
      "parents": [
        "731c55e71591ea9c94f8cb0559d1a0c342e6e65e"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Fri Sep 11 12:02:03 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 12:13:47 2026 -0700"
      },
      "message": "Speed up container overflow tests for RepeatedField.\n\nInstead of initializing close to INT_MAX elements in memory, grow the allocation to a small heap buffer and simulate full capacity and size via internal test helpers.\n\nPiperOrigin-RevId: 979943142\n"
    },
    {
      "commit": "731c55e71591ea9c94f8cb0559d1a0c342e6e65e",
      "tree": "9d1c19711df74a785f01381dc7ee04ce4c46ccda",
      "parents": [
        "42daaf634addbfe72c0e5e00a4fe242e276bb6a2"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 10 23:56:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 11 00:02:55 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 979628952\n"
    },
    {
      "commit": "42daaf634addbfe72c0e5e00a4fe242e276bb6a2",
      "tree": "bad417cf88c9b30ae356f0dec3c502483f752d2f",
      "parents": [
        "a5baafe28606b981057e3e16d84978658b00a30e"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Thu Sep 10 16:03:09 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 16:06:46 2026 -0700"
      },
      "message": "Add unit test coverage for ArrayInputStream.\n\nPiperOrigin-RevId: 979447752\n"
    },
    {
      "commit": "a5baafe28606b981057e3e16d84978658b00a30e",
      "tree": "0f1a3930d049636b6f7ba7f9bdbb6a9bc49f1b64",
      "parents": [
        "a6469dd682c1fe23b07e3b809d935501b787924a"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 10 15:35:38 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 15:38:19 2026 -0700"
      },
      "message": "Slightly relax the Mut\u003c\u0027_\u003e lifetime in RepeatedMut get_mut\n\nPiperOrigin-RevId: 979434474\n"
    },
    {
      "commit": "a6469dd682c1fe23b07e3b809d935501b787924a",
      "tree": "7191eab516c065561613091fc888cc47e2efd612",
      "parents": [
        "7f3b73c99caaa0d648eacb5abcc03f724708408e"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Thu Sep 10 15:19:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 15:21:35 2026 -0700"
      },
      "message": "Check EndedAtLimit before BackUp in bounded ZeroCopyInputStream parsing.\n\nOn parse failure, the unused buffer might span more than one chunk from the input stream.\n\nPiperOrigin-RevId: 979426838\n"
    },
    {
      "commit": "7f3b73c99caaa0d648eacb5abcc03f724708408e",
      "tree": "1a23c8f5c6b9032fab5d327cbb48593fb4e6f544",
      "parents": [
        "f202bbdbf0e243e5d2c28d4a2b16c7ffc79b9c42"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Thu Sep 10 14:38:05 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 14:41:45 2026 -0700"
      },
      "message": "Check count in GzipInputStream::BackUp to avoid buffer underflow.\n\nThe contract of BackUp already states that it is UB to pass an invalid count to BackUp, but we should try to avoid the underflow anyway.\n\nAlso, fix bug in ByteCount\u003c-\u003eBackUp interaction.\n\nPiperOrigin-RevId: 979404842\n"
    },
    {
      "commit": "f202bbdbf0e243e5d2c28d4a2b16c7ffc79b9c42",
      "tree": "41c2d33af95367103adce0a7dc75557495c02cd7",
      "parents": [
        "1307e99dea3fbdb197094a53dc99e4b4d5044dcc"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Thu Sep 10 13:19:17 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 13:22:53 2026 -0700"
      },
      "message": "Fix namespaces and qualify SizedDelete in gzip_stream.\n\nWithout it the code breaks if we include code that has an io::internal namespace.\n\nPiperOrigin-RevId: 979358514\n"
    },
    {
      "commit": "1307e99dea3fbdb197094a53dc99e4b4d5044dcc",
      "tree": "5349d9a1357a386c3502f214a4914c1483f2c2b8",
      "parents": [
        "2bcd676eebee3e23f2f6621b2e2767d4eda65335"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 10 12:47:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 12:49:32 2026 -0700"
      },
      "message": "Use more accurate $Msg$Mut\u003c\u0027_\u003e instead of \u003c\u0027msg\u003e\n\nThe trait itself writes: `fn as_mut(\u0026mut self) -\u003e Mut\u003c\u0027_, Self::MutProxied\u003e;`\n\nThe impl was actually claiming a longer lifetime, which might be unsound if it was true. Since the trait lifetime was sound there was no problem exposed to application code, this is just making the trait impl more explicitly match the intended signature of the trait.\n\nPiperOrigin-RevId: 979340800\n"
    },
    {
      "commit": "2bcd676eebee3e23f2f6621b2e2767d4eda65335",
      "tree": "885716b50ec16f8cd7d975a65cbadcadce66c3cd",
      "parents": [
        "01466ef0b2fe2f2ed56dfdf93ada56bd48171b9f"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 10 19:28:59 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 10 19:28:59 2026 +0000"
      },
      "message": "Auto-generate files after cl/979323798\n"
    },
    {
      "commit": "01466ef0b2fe2f2ed56dfdf93ada56bd48171b9f",
      "tree": "c43d5bafa71d75847d36a060eabad10320439d83",
      "parents": [
        "01433a8321895c41d2f0278717d0c793f9cb3a03"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 10 12:15:25 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 12:19:04 2026 -0700"
      },
      "message": "Enable nodiscard for upb\n\nPiperOrigin-RevId: 979323798\n"
    },
    {
      "commit": "01433a8321895c41d2f0278717d0c793f9cb3a03",
      "tree": "b15afc41eba55d35f146b0bbc95a7d1fc9cf9482",
      "parents": [
        "9fb17335ac1bfb0225492c035a296c52aeb7dbcd"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 10 10:59:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 11:02:43 2026 -0700"
      },
      "message": "Fix Java Lite CodedInputStreamReader handling of 0-length packed fields.\n\nPiperOrigin-RevId: 979280446\n"
    },
    {
      "commit": "9fb17335ac1bfb0225492c035a296c52aeb7dbcd",
      "tree": "bad8a6525a75a6cf2b7b854158ed2311853e2ce3",
      "parents": [
        "65a8250399b61bfe6e52695c736f86d8710318cb"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 10 17:31:50 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 10 17:31:50 2026 +0000"
      },
      "message": "Auto-generate files after cl/979257871\n"
    },
    {
      "commit": "65a8250399b61bfe6e52695c736f86d8710318cb",
      "tree": "1e0f1ab35218bc3119d8350c9041001f1a376ba2",
      "parents": [
        "c2a80dc45629c56bb7334497b0bb01b9963b2741"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 10 10:19:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 10:23:06 2026 -0700"
      },
      "message": "Enable nodiscard for upb\n\nPiperOrigin-RevId: 979257871\n"
    },
    {
      "commit": "c2a80dc45629c56bb7334497b0bb01b9963b2741",
      "tree": "c023094a144e63b463e1d7273f7f4639fe8d9371",
      "parents": [
        "df5490ffe4f092e6dd6fb53cf41c39d21fbc1066"
      ],
      "author": {
        "name": "Mike Kruskal",
        "email": "mkruskal@google.com",
        "time": "Thu Sep 10 07:51:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 10 07:58:57 2026 -0700"
      },
      "message": "Don\u0027t specify a date for the timestamp breaking change.\n\nPiperOrigin-RevId: 979183674\n"
    },
    {
      "commit": "df5490ffe4f092e6dd6fb53cf41c39d21fbc1066",
      "tree": "6ac79ff3604ba1126a2506d7721181e9c7c6d6f3",
      "parents": [
        "9990e5083eab6a66b1398172b537cc085270496d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 10 02:37:04 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 10 02:37:04 2026 +0000"
      },
      "message": "Auto-generate files after cl/978884723\n"
    },
    {
      "commit": "9990e5083eab6a66b1398172b537cc085270496d",
      "tree": "73f6be621bcd5ee28828dc753d965664bed4d515",
      "parents": [
        "21829775ae944b4189ab593430a7828a56600c05"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 09 19:24:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 19:28:55 2026 -0700"
      },
      "message": "Fix macro order in alloc.h and check upb_DefPool_AddFile return value in lua/def.c\n\nPiperOrigin-RevId: 978884723\n"
    },
    {
      "commit": "21829775ae944b4189ab593430a7828a56600c05",
      "tree": "25c45c33d7339da5417ae5e0faa9b7b69c156fcc",
      "parents": [
        "06c6ebf019ab547b8dbafdd5dfe35f056b713a8e"
      ],
      "author": {
        "name": "Tony Liao",
        "email": "tonyliaoss@google.com",
        "time": "Wed Sep 09 18:57:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 19:00:19 2026 -0700"
      },
      "message": "Fix silent error-swallowing bug in PHP GitHub Actions workflow (test_php.yml).\n\nIn Bash, set -e (errexit) does not abort when a failing command is part\nof an \u0026\u0026 or || chain, except for the final command in the list. When\nmatrix.command contained \u0026\u0026 chains (e.g. composer test_c \u0026\u0026\ntests/multirequest.sh \u0026\u0026 tests/memory_leak_test.sh) and was interpolated\ninto a multi-line script with subsequent commands (popd, bazel test\n...), a failure in a non-final command would short-circuit the remaining\nchain without triggering set -e termination, causing the workflow step\nto continue and potentially succeed (false positive).\n\n- Replace \u0026\u0026 with ; in matrix.command definitions and in linux-32bit\n  test commands so each command is evaluated independently by set -e.\n- Wrap ${{ matrix.command }} execution in a subshell (${{ matrix.command\n  }}) to ensure any non-zero exit code propagates to the outer shell\n  under set -e.\n\n#test-continuous\n\nPiperOrigin-RevId: 978875781\n"
    },
    {
      "commit": "06c6ebf019ab547b8dbafdd5dfe35f056b713a8e",
      "tree": "e1b1f4546963bf24ddc28a2dbb8819b7a4266bb0",
      "parents": [
        "6d2a85e2ebd70afc2095bb14f50d44c99cd55977"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 09 16:45:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 16:49:28 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 978822802\n"
    },
    {
      "commit": "6d2a85e2ebd70afc2095bb14f50d44c99cd55977",
      "tree": "b5950ffeaef88f5105c6f4adeae0c7e7afedd3ad",
      "parents": [
        "8e70aa93f986bc5706ad494fb8e4eee94ffaf5fb"
      ],
      "author": {
        "name": "Joshua Haberman",
        "email": "haberman@google.com",
        "time": "Wed Sep 09 15:42:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 15:44:21 2026 -0700"
      },
      "message": "Remove flags.bzl and associated targets.\n\nIt has been superseded by the compatibility layer in google3/third_party/protobuf/bazel/private/compat_flag.bzl.\n\nPiperOrigin-RevId: 978792817\n"
    },
    {
      "commit": "8e70aa93f986bc5706ad494fb8e4eee94ffaf5fb",
      "tree": "51bdbb981e9f480b5e82e57b1e3c95eb6e9730ec",
      "parents": [
        "b60ba082c7092f1271bb0e8c1eccca369dfb1593"
      ],
      "author": {
        "name": "Runze Wang",
        "email": "runze@google.com",
        "time": "Wed Sep 09 14:18:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 14:25:06 2026 -0700"
      },
      "message": "Update README to note that the protobuf crate is superseded by google-protobuf.\n\nPiperOrigin-RevId: 978748286\n"
    },
    {
      "commit": "b60ba082c7092f1271bb0e8c1eccca369dfb1593",
      "tree": "9a4c9b864b1a5cc3ef227d828c38f695888aec92",
      "parents": [
        "e3f22181e03a6ce27d136775bd39166f3d97723c"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Sep 09 20:53:57 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Sep 09 20:53:57 2026 +0000"
      },
      "message": "Auto-generate files after cl/978728569\n"
    },
    {
      "commit": "e3f22181e03a6ce27d136775bd39166f3d97723c",
      "tree": "87f2f10fca351d6b5047dab604cfec093b0f5473",
      "parents": [
        "7971b3187bd4addad8330876f3de28db22b51d82"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 09 13:42:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 13:45:27 2026 -0700"
      },
      "message": "Optimize some repeated loads in map encoding\n\nPiperOrigin-RevId: 978728569\n"
    },
    {
      "commit": "7971b3187bd4addad8330876f3de28db22b51d82",
      "tree": "80a0d76c87b328b5406102991ef72fbe2984b047",
      "parents": [
        "5ca1f22395eea3c5776ab48ac5f5ebcdd4b593ef"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 09 09:56:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 09:59:52 2026 -0700"
      },
      "message": "Fix Lua call sites for upb nodiscard enablement\n\nPiperOrigin-RevId: 978606289\n"
    },
    {
      "commit": "5ca1f22395eea3c5776ab48ac5f5ebcdd4b593ef",
      "tree": "83e80e0b7c45379aac6c43fac76b7d959cba8c6f",
      "parents": [
        "3ee8f4dfa8f2720747d4baced0748bdaed7760d9"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 09 03:16:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 09 03:20:36 2026 -0700"
      },
      "message": "Standardize arena target in BUILD.bazel.\n\nAdd copts \u003d COPTS to the arena target in BUILD.bazel to align with other C++ targets.\n\nPiperOrigin-RevId: 978435214\n"
    },
    {
      "commit": "3ee8f4dfa8f2720747d4baced0748bdaed7760d9",
      "tree": "a1540771afa34f24ffad65a937056639641dd177",
      "parents": [
        "b127c2ef8d4aa64315c29556930ca4a2d636ed0b"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Sep 08 11:55:26 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 08 12:03:11 2026 -0700"
      },
      "message": "Refactor upb_Map_DeepConvert to copy the map table.\n\nPiperOrigin-RevId: 978037094\n"
    },
    {
      "commit": "b127c2ef8d4aa64315c29556930ca4a2d636ed0b",
      "tree": "0271b192d945569839f8434fd46a8e6867555116",
      "parents": [
        "e816e3cbab18febb315ef4275c7a8edf7b7fd667"
      ],
      "author": {
        "name": "Mark Hansen CA",
        "email": "markhansen@google.com",
        "time": "Sun Sep 06 17:01:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Sep 06 17:05:01 2026 -0700"
      },
      "message": "Add diamond dependency regression test for Kotlin proto code generation.\n\nThis should catch java one-definition issues like what caused us to have to rollback in cl/962600951, where we were compiling kotlin protos twice with different debug metadata.\n\nAdding this local regression test first ahead of trying again to make kotlin proto exports work.\n\nAdd for both lite and full runtimes.\n\nPiperOrigin-RevId: 977194298\n"
    },
    {
      "commit": "e816e3cbab18febb315ef4275c7a8edf7b7fd667",
      "tree": "57185a594ce985911f778568808b131fccced27c",
      "parents": [
        "ac224adafabfea37978e46e686307d5ad8e688e7"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Sat Sep 05 00:12:41 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Sat Sep 05 00:12:41 2026 +0000"
      },
      "message": "Auto-generate files after cl/976559091\n"
    },
    {
      "commit": "ac224adafabfea37978e46e686307d5ad8e688e7",
      "tree": "903f3a235581f5e3cb936e45a48a7e427a846639",
      "parents": [
        "13e019f6da4e9e41d057d9d8b45adb942880724d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Fri Sep 04 17:01:22 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 04 17:04:53 2026 -0700"
      },
      "message": "Automated rollback of commit 79c92d5a6c1103b21a5632438aca3d1cbd9ac4c6.\n\nPiperOrigin-RevId: 976559091\n"
    },
    {
      "commit": "13e019f6da4e9e41d057d9d8b45adb942880724d",
      "tree": "f1f0db04c9d7b925a47e177d11ca5653bd5fb6df",
      "parents": [
        "889dd941e662fa8cfd26b328daf3765b64237456"
      ],
      "author": {
        "name": "Joshua Haberman",
        "email": "haberman@google.com",
        "time": "Fri Sep 04 10:13:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Sep 04 10:22:19 2026 -0700"
      },
      "message": "Force test failure when requested Python protobuf implementations are unavailable\n\nPrior to this change, the upb tests could succeed even if the upb backend was failing to import properly.  This is because the API switching logic is currently designed to gracefully fall back to pure-Python.  This behavior can sometimes be helpful in prod (maybe going more slowly is better than crashing at startup), but is definitely not what we want in tests.\n\nThis change introduces a PROTOCOL_BUFFERS_PYTHON_INTERNAL_FORCE_IMPLEMENTATION environment variable to prevent falling back to the pure Python implementation when the requested \u0027cpp\u0027 or \u0027upb\u0027 implementation fails to import. The upb/cpp tests are updated to set this variable, ensuring tests fail explicitly if their expected backend is missing.\n\nThe new variable has \"INTERNAL\" in the name so that it is not subject to our breaking change policy.  I wonder if we should consider changing the PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION variable to have this behavior by default, so that users can be assured that their requested backend will be used, or will fail loudly if it is not available.\n\nPiperOrigin-RevId: 976377381\n"
    },
    {
      "commit": "889dd941e662fa8cfd26b328daf3765b64237456",
      "tree": "0f98359cd65e8d6901b096aa66cfee13a6b08de9",
      "parents": [
        "925e0f544891038494ff7ae62b6726c768e6762a"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Thu Sep 03 17:46:53 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 17:50:19 2026 -0700"
      },
      "message": "Remove unused `ReadArenaString` in arenastring.cc.\n\nPiperOrigin-RevId: 976015653\n"
    },
    {
      "commit": "925e0f544891038494ff7ae62b6726c768e6762a",
      "tree": "f5ed0b32b1a4d2d6ae370070e6237f0dd3d26195",
      "parents": [
        "4953db0b0de8875be9cdbeff9f34dfbcf5b18665"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 03 13:35:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 13:37:59 2026 -0700"
      },
      "message": "Harden StreamDecoder in the face of \u003e2 GiB INT_MAX overflow risks.\n\nStreamDecoder intentionally enables customers to handle streams of messages which are net \u003e2 GiB as long as each message is \u003c2 GiB by giving a \u0027resetSizeCounter\u0027 affordance.\n\nHowever, resetSizeCounter does a trick which ends up with totalBytesRetired being negative, which is conceptually very strange and introduces complexity of 2 GiB boundary conditions. By doing a small/cheap arraycopy on resetSizeCounter this complexity is significantly reduced, allowing for simpler hardening against possible overflows.\n\nPiperOrigin-RevId: 975898995\n"
    },
    {
      "commit": "4953db0b0de8875be9cdbeff9f34dfbcf5b18665",
      "tree": "003078d5c1eba38d64660b5d30d16e49067bed36",
      "parents": [
        "065d6fabf7345bd469844f5ed472664602570bc5"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Sep 03 11:28:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Sep 03 11:33:25 2026 -0700"
      },
      "message": "Enable aliasing when parsing lazy fields.\n\nPiperOrigin-RevId: 975834350\n"
    },
    {
      "commit": "065d6fabf7345bd469844f5ed472664602570bc5",
      "tree": "8baa626ad9bd162a01cbcc77d9907496aac2c9b0",
      "parents": [
        "189a4b934c4e060fe571d45f61a9e95098f44587"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 03 04:19:44 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 03 04:19:44 2026 +0000"
      },
      "message": "Auto-generate files after cl/975486716\n"
    },
    {
      "commit": "189a4b934c4e060fe571d45f61a9e95098f44587",
      "tree": "58ecd979208ae9cd2791c26d4e71abc0d1cc8dd7",
      "parents": [
        "cce2e0e83c58324e743ade39e4ed4234583ce984"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 02 21:07:18 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 21:09:16 2026 -0700"
      },
      "message": "Fix call sites for upb nodiscard enablement\n\nSome compilers don\u0027t accept casting to void as a used return value\n\nPiperOrigin-RevId: 975486716\n"
    },
    {
      "commit": "cce2e0e83c58324e743ade39e4ed4234583ce984",
      "tree": "0e8e3819b7c49b382a8f2dee864dc9ca553a0a59",
      "parents": [
        "21e14a7174f46a3200ff86365cdf611bdb56a32c"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 03 00:06:38 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Sep 03 00:06:38 2026 +0000"
      },
      "message": "Auto-generate files after cl/975403988\n"
    },
    {
      "commit": "21e14a7174f46a3200ff86365cdf611bdb56a32c",
      "tree": "660a8094ef1917b419ca7d7e8d685a1f82fb6b7d",
      "parents": [
        "3d3082913b546cdfd853c3850e2282538a6dc1f3"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 02 16:56:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 16:58:53 2026 -0700"
      },
      "message": "Add input validation for map linking in UPB MiniTables\n\nValidate relational constraints during map MiniTable linking:\n- Reject non-repeated, oneof, or extension fields when linking map entry submessages.\n- Reject linking map entry submessages to groups.\n- Reject linking map entry submessages as values when the parent is already a map entry (reject nested maps).\n- Reject linking submessages or subenums to key fields (field 1) of map entries.\n- Reject linking map entry submessages into extension fields.\n- Add unit tests verifying all new rejection paths for SetSubMessage, SetSubEnum, and MiniTable building.\n\nPiperOrigin-RevId: 975403988\n"
    },
    {
      "commit": "3d3082913b546cdfd853c3850e2282538a6dc1f3",
      "tree": "29569fdd546b3efc5bb17a0402d3b1479d765df5",
      "parents": [
        "4459dcff6811274095636c0676bc7a94e06fee85"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 02 14:43:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 14:47:18 2026 -0700"
      },
      "message": "Bazel\u0027s \"Error in fail:\" error message prefix is changing to just \"Error:\"\n\nSee https://github.com/bazelbuild/bazel/commit/bdaf7267800751d2480b0680d84e510e43f9ca5f\n\nPiperOrigin-RevId: 975339381\n"
    },
    {
      "commit": "4459dcff6811274095636c0676bc7a94e06fee85",
      "tree": "18fcbed044e8f6ead91be8fb99e9a5e1525bb90e",
      "parents": [
        "fb2f9a05031986f6daa4481fbdcbf5e853e3ec2b"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 02 14:20:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 14:25:13 2026 -0700"
      },
      "message": "Fix typo in GPBMessage.h comment.\n\nPiperOrigin-RevId: 975325731\n"
    },
    {
      "commit": "fb2f9a05031986f6daa4481fbdcbf5e853e3ec2b",
      "tree": "4b8bba5d3317394fbdda8c1fdc99b7171730c243",
      "parents": [
        "79c92d5a6c1103b21a5632438aca3d1cbd9ac4c6"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Sep 02 20:02:17 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Sep 02 20:02:17 2026 +0000"
      },
      "message": "Auto-generate files after cl/975272369\n"
    },
    {
      "commit": "79c92d5a6c1103b21a5632438aca3d1cbd9ac4c6",
      "tree": "b5579a969c6533343fe19646d03d41e7aa46a460",
      "parents": [
        "9e7eb672747021867d42f27ab04ec9bbfa579fbc"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 02 12:45:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 12:51:53 2026 -0700"
      },
      "message": "Re-enable FastTable for non-opt builds.\n\nPiperOrigin-RevId: 975272369\n"
    },
    {
      "commit": "9e7eb672747021867d42f27ab04ec9bbfa579fbc",
      "tree": "ba1492b3ada6de4a058cd1ecc90a71604d54a615",
      "parents": [
        "a0b9c6469b42d8c1e6d010c50b69b7fc5b0e4d7c"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Sep 02 00:00:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Sep 02 00:04:01 2026 -0700"
      },
      "message": "Check element type and descriptor in Ruby FFI RepeatedField#\u003d\u003d if they aren\u0027t empty.\n\nIt is preexisting that the behavior when comparing of empty RepeatedField\u0027s of different types don\u0027t match between our different impls: this change adds tests which cover those behaviors.\n\nThe only case that is modified by this CL is one that was broken before: comparing two different, non-empty Repeated objects of different underling types on Ruby FFI.\n\nPiperOrigin-RevId: 974938849\n"
    },
    {
      "commit": "a0b9c6469b42d8c1e6d010c50b69b7fc5b0e4d7c",
      "tree": "c05c2e9217a9a3f7dd1483a5b48218e3d760b4ea",
      "parents": [
        "967e3dbb613e6950842bc2d9ea96af701ec83c8e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Sep 01 22:45:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 22:51:13 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 974910104\n"
    },
    {
      "commit": "967e3dbb613e6950842bc2d9ea96af701ec83c8e",
      "tree": "1d4fdfb043e5f4c6bdec75387341bb9176ea75f9",
      "parents": [
        "e4f6e97e0ce9cfabaac0420b7ce2ac73fc08f6c4"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Sep 01 22:44:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 22:47:43 2026 -0700"
      },
      "message": "Migrate the deprecated ABSL_ATTRIBUTE_NORETURN to C++11 [[noreturn]]\n\nPiperOrigin-RevId: 974909624\n"
    },
    {
      "commit": "e4f6e97e0ce9cfabaac0420b7ce2ac73fc08f6c4",
      "tree": "bde1773b0b10e2be35b92974902169902e19df6a",
      "parents": [
        "ff6c62eed7d3993a39d83c29fbacbd0ea77dc949"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Sep 02 00:37:16 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Sep 02 00:37:16 2026 +0000"
      },
      "message": "Auto-generate files after cl/974795762\n"
    },
    {
      "commit": "ff6c62eed7d3993a39d83c29fbacbd0ea77dc949",
      "tree": "5ef73d123b556ba0286e4e7b114fe79eda6e118a",
      "parents": [
        "e25ea67744bb30a7735ace3305c563e9c82b152a"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Sep 01 17:25:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 17:26:43 2026 -0700"
      },
      "message": "Correctly guard the out-param write on upb_Map_Delete on the condition that a value was actually deleted.\n\nPiperOrigin-RevId: 974795762\n"
    },
    {
      "commit": "e25ea67744bb30a7735ace3305c563e9c82b152a",
      "tree": "45aec6db284debe6f40cf755cd0d5ac1c047d99d",
      "parents": [
        "f19d687db17d6040220a35bc0dc433cbb39a232a"
      ],
      "author": {
        "name": "Runze Wang",
        "email": "runze@google.com",
        "time": "Tue Sep 01 13:44:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 13:46:49 2026 -0700"
      },
      "message": "Detects single-crate cross-file symbol collisions and conditionally emits crate-root re-exports.\n\nPiperOrigin-RevId: 974684406\n"
    },
    {
      "commit": "f19d687db17d6040220a35bc0dc433cbb39a232a",
      "tree": "d7e1f08b9cd3833b7e2e719974372229bdc000d9",
      "parents": [
        "e5deac314dac7c7cf9b637fb15d50c1eed1641f6"
      ],
      "author": {
        "name": "Runze Wang",
        "email": "runze@google.com",
        "time": "Tue Sep 01 09:55:25 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 09:57:46 2026 -0700"
      },
      "message": "Add README.md to google-protobuf-codegen release crate\n\nPiperOrigin-RevId: 974553802\n"
    },
    {
      "commit": "e5deac314dac7c7cf9b637fb15d50c1eed1641f6",
      "tree": "42c5fb9690df3449a06c0840985b2d690e4c9f54",
      "parents": [
        "5a2f1f78d073e79703d086caf18e58422a812f2d"
      ],
      "author": {
        "name": "Lukasz Anforowicz",
        "email": "lukasza@google.com",
        "time": "Tue Sep 01 08:48:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Sep 01 08:57:40 2026 -0700"
      },
      "message": "Provide pre-generated lockfiles for Protobuf Rust under Bzlmod.\n\nWhen Protobuf is consumed as a transitive Bzlmod dependency, rules_rust\ncrate_universe requires non-root modules to supply a pre-generated\n`lockfile` for `crate.from_specs()` because dynamic repinning across\nmodule boundaries is disallowed. See rules_rust enforcement at:\nhttps://github.com/bazelbuild/rules_rust/blob/f7f212ad30a58475d6252a8607cf5cdb5f59bbdd/crate_universe/extensions.bzl#L614-L625\n\nAdditionally, rules_rust requires `cargo_lockfile` when `lockfile` is\nspecified to avoid `cargo-bazel generate` failures during non-repin\nevaluation.\n\nThis change adds `rust/Cargo.Bazel.lock` and `rust/Cargo.lock` and\nreferences them in `crate.from_specs()`.\n\nPiperOrigin-RevId: 974521277\n"
    },
    {
      "commit": "5a2f1f78d073e79703d086caf18e58422a812f2d",
      "tree": "17a535e3d643000d1f327a3f4656acc409197942",
      "parents": [
        "8049249cf49b87ea46496f652114d4ba9bb5d1f6"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 31 22:34:52 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 31 22:34:52 2026 +0000"
      },
      "message": "Auto-generate files after cl/974108015\n"
    },
    {
      "commit": "8049249cf49b87ea46496f652114d4ba9bb5d1f6",
      "tree": "1e53fa310777e088451b3d440a174d7d22cd019c",
      "parents": [
        "dcb1cdf0908618dc27810c52b378e61371208ddc"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 31 15:22:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 31 15:24:57 2026 -0700"
      },
      "message": "optimize map copy\n\nPiperOrigin-RevId: 974108015\n"
    },
    {
      "commit": "dcb1cdf0908618dc27810c52b378e61371208ddc",
      "tree": "49651e65dc1f95436337ae19823867791760d328",
      "parents": [
        "30f89bfe7b89250739bc05491cfcc68029a930ca"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 31 18:00:31 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 31 18:00:31 2026 +0000"
      },
      "message": "Auto-generate files after cl/973966485\n"
    },
    {
      "commit": "30f89bfe7b89250739bc05491cfcc68029a930ca",
      "tree": "274b2b78d573eac4be679331ce83c5aa194154d0",
      "parents": [
        "606520391a33c3e223ae1737bf1d900d1332b6d4"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 31 10:47:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 31 10:50:41 2026 -0700"
      },
      "message": "fix: UPB JSON encoding for FieldMask\n\nPiperOrigin-RevId: 973966485\n"
    },
    {
      "commit": "606520391a33c3e223ae1737bf1d900d1332b6d4",
      "tree": "517b1b0b8dde0cd257639811bbd00fee0ada9da9",
      "parents": [
        "9a59883bc21943f3bec2c7e2743294446193dd4d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 31 08:43:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 31 08:46:17 2026 -0700"
      },
      "message": "Updates field.cc and message.cc in the Kotlin Protobuf compiler to generate DslList { _builder.valuesList } and ExtensionList(extension) { _builder.getExtension(extension) }.\nThis avoids freeze/thaw cycles in builder repeated fields that can lead to terrible memory thrashing and OOMs.\nThe side effect of this change is that the builder list is not \"captured\" in the DslList object until the first list method is called.\nIn conventional DSL usage, this should be fine.\nIn unconventional use of retained DslList instances, the behavior could be surprising.\n\nPiperOrigin-RevId: 973902630\n"
    },
    {
      "commit": "9a59883bc21943f3bec2c7e2743294446193dd4d",
      "tree": "66ec7e0b8e8e688a56865e4396bee64a66f4ed3d",
      "parents": [
        "d12123b6ae3d0dc95bb2de5415f4b00f393e76f5"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 31 07:48:04 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 31 07:50:07 2026 -0700"
      },
      "message": "Remove OSS-incompatible log header from descriptor.h\n\nPiperOrigin-RevId: 973878104\n"
    },
    {
      "commit": "d12123b6ae3d0dc95bb2de5415f4b00f393e76f5",
      "tree": "d17c5843a43e5cd864cb72e470eaa304a7e7bfb4",
      "parents": [
        "98fa2c5a4464be9c05f76cb627e31559b272ded6"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 31 06:38:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 31 06:41:52 2026 -0700"
      },
      "message": "Updates field.cc and message.cc in the Kotlin Protobuf compiler to generate DslList { _builder.valuesList } and ExtensionList(extension) { _builder.getExtension(extension) }.\nThis avoids freeze/thaw cycles in builder repeated fields that can lead to terrible memory thrashing and OOMs.\nThe side effect of this change is that the builder list is not \"captured\" in the DslList object until the first list method is called.\nIn conventional DSL usage, this should be fine.\nIn unconventional use of retained DslList instances, the behavior could be surprising.\n\nPiperOrigin-RevId: 973850612\n"
    },
    {
      "commit": "98fa2c5a4464be9c05f76cb627e31559b272ded6",
      "tree": "0c525e90396bbf5700cb38a6f839d13822aa116a",
      "parents": [
        "2f6fae088a2d6e8149153ba7df82e1e6af935b25"
      ],
      "author": {
        "name": "Chris Kennelly CA",
        "email": "ckennelly@google.com",
        "time": "Sun Aug 30 15:51:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 30 15:53:54 2026 -0700"
      },
      "message": "Fix InlinedStringField memory leak when string donation is disabled.\n\nWhen GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE is disabled,\nInlinedStringField allocates std::string heap buffers for strings exceeding SSO\nsize. Since InlinedStringField declares DestructorSkippable_, proto2::Arena\nskips calling its destructor upon arena destruction, leaking heap buffers.\n\nEnsure all mutating methods that operate on an Arena register the underlying\nstring for destruction.\n\nPiperOrigin-RevId: 973560664\n"
    },
    {
      "commit": "2f6fae088a2d6e8149153ba7df82e1e6af935b25",
      "tree": "7ecf64c0de90a288b31cc6836229a59ea1ff0a23",
      "parents": [
        "368c0112d97dc34692ef698000c866f011441643"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Sun Aug 30 20:08:02 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Sun Aug 30 20:08:02 2026 +0000"
      },
      "message": "Auto-generate files after cl/973521845\n"
    },
    {
      "commit": "368c0112d97dc34692ef698000c866f011441643",
      "tree": "a6b56f8d5b615e637a812eb68bfe1265b9071d1d",
      "parents": [
        "5b1c20741838b8359193b97895cb0ff35b4ecf79"
      ],
      "author": {
        "name": "Mikita Belahlazau",
        "email": "nbeloglazov@google.com",
        "time": "Sun Aug 30 12:57:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 30 13:01:03 2026 -0700"
      },
      "message": "Update comments of SourceCodeInfo.Location.path to reflect the recent changes.\n\nPiperOrigin-RevId: 973521845\n"
    },
    {
      "commit": "5b1c20741838b8359193b97895cb0ff35b4ecf79",
      "tree": "cb19d353d974a3206fd5ae5e24b62d8889f3be99",
      "parents": [
        "b4ca610c3810a9881fec3e32879afea98482e3be"
      ],
      "author": {
        "name": "Mikita Belahlazau",
        "email": "nbeloglazov@google.com",
        "time": "Fri Aug 28 13:36:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 13:39:58 2026 -0700"
      },
      "message": "Use negative UninterpretedOption field tags for interpreted option locations.\n\nThis allows us to extend improved SourceCodeInfo support to dot-notation options without breaking backwards compatibility. Dot-notation options like `(my_opt).a \u003d 123` already emit SourceCodeInfo location in a form of `[..., 10101, 1]` where 1 is the tag of field `a`. That location spans the whole option. But these pre-existing locations are limited as they don\u0027t provide granular information about each part of the option (e.g. location of `a`) and don\u0027t provide location for value too.\n\nUsing negative values allows us to create non-overlapping set of locations. For example in the example above we will emit (in future CL):\n\n[..., 10101] - location of the whole `(my_opt).a \u003d 123` option\n[..., 10101, 1] - legacy duplicate location of the whole `(my_opt).a \u003d 123` option\n[..., 10101, -2] - location of `(my_opt)` part\n[..., 10101, -8, 1, -2] - location of `a` part\n[..., 10101, -8, 1, -4] - location of `123` part\n\nPiperOrigin-RevId: 972764591\n"
    },
    {
      "commit": "b4ca610c3810a9881fec3e32879afea98482e3be",
      "tree": "62a52fc2d9d91c750029cade1aef6352f674b6f9",
      "parents": [
        "bc1d321471d91a8b7f65dca0b708696812dda8c3"
      ],
      "author": {
        "name": "Karen Wu",
        "email": "karenwuz@google.com",
        "time": "Fri Aug 28 13:24:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 13:27:51 2026 -0700"
      },
      "message": "Internal change\n\nPiperOrigin-RevId: 972757938\n"
    },
    {
      "commit": "bc1d321471d91a8b7f65dca0b708696812dda8c3",
      "tree": "70cbe812bb34a42a77f2bd09a6f297b91ce81b9f",
      "parents": [
        "c73ae6bfd62bccd74311e47f92a2c699ace5de03"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Fri Aug 28 12:58:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 13:11:28 2026 -0700"
      },
      "message": "Make CodedInputStream.StreamDecoder.tryRefillBuffer iterative\n\nPiperOrigin-RevId: 972744285\n"
    },
    {
      "commit": "c73ae6bfd62bccd74311e47f92a2c699ace5de03",
      "tree": "bd24663a3ad3904d2507a52f92ad87cc8330a477",
      "parents": [
        "c4ac290120d72ef011686123703107a4545063ad"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 27 19:35:40 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 19:37:21 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 972290345\n"
    },
    {
      "commit": "c4ac290120d72ef011686123703107a4545063ad",
      "tree": "d36f385b476d0720524979f67fab1c528ee3fc7e",
      "parents": [
        "54839bd8b7f580866ffb24d60c3a3996f192e70c"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 27 17:08:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 17:11:37 2026 -0700"
      },
      "message": "Use negative UninterpretedOption field tags for interpreted option locations.\n\nThis allows us to extend improved SourceCodeInfo support to dot-notation options without breaking backwards compatibility. Dot-notation options like `(my_opt).a \u003d 123` already emit SourceCodeInfo location in a form of `[..., 10101, 1]` where 1 is the tag of field `a`. That location spans the whole option. But these pre-existing locations are limited as they don\u0027t provide granular information about each part of the option (e.g. location of `a`) and don\u0027t provide location for value too.\n\nUsing negative values allows us to create non-overlapping set of locations. For example in the example above we will emit (in future CL):\n\n[..., 10101] - location of the whole `(my_opt).a \u003d 123` option\n[..., 10101, 1] - legacy duplicate location of the whole `(my_opt).a \u003d 123` option\n[..., 10101, -2] - location of `(my_opt)` part\n[..., 10101, -8, 1, -2] - location of `a` part\n[..., 10101, -8, 1, -4] - location of `123` part\n\nPiperOrigin-RevId: 972235113\n"
    },
    {
      "commit": "54839bd8b7f580866ffb24d60c3a3996f192e70c",
      "tree": "9b9f3c11469160635f73c5cda964201309f2cd35",
      "parents": [
        "37227d63fbb519ed35a7f411fffe84cab3f107ae"
      ],
      "author": {
        "name": "Runze Wang",
        "email": "runze@google.com",
        "time": "Thu Aug 27 16:42:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 16:49:43 2026 -0700"
      },
      "message": "Prepend the file module name to Rust type paths to use canonical paths.\n\nPiperOrigin-RevId: 972224210\n"
    },
    {
      "commit": "37227d63fbb519ed35a7f411fffe84cab3f107ae",
      "tree": "0f522758586c19d6b1765ad901d520c52672ff07",
      "parents": [
        "99f80515acd5b8477cd5f73818d61b1bde409c96"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 27 12:57:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 12:59:24 2026 -0700"
      },
      "message": "internal changes\n\nPiperOrigin-RevId: 972109010\n"
    },
    {
      "commit": "99f80515acd5b8477cd5f73818d61b1bde409c96",
      "tree": "deea15b3f7606ff986d01d527c0fd0d9034f9e77",
      "parents": [
        "2ffd7f055f565b9f905d3cc1664a07fff0b78dbf"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 27 12:33:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 12:42:25 2026 -0700"
      },
      "message": "Clarify that MessageSchema and ForLiteOnly are exclusively for Lite runtime.\n\nPiperOrigin-RevId: 972097118\n"
    },
    {
      "commit": "2ffd7f055f565b9f905d3cc1664a07fff0b78dbf",
      "tree": "f12c0d180aa0c0251df19a7d0af908ac74fb4c49",
      "parents": [
        "2668ef974c4ce4532b51b3b7011ae73cd98cb881"
      ],
      "author": {
        "name": "Runze Wang",
        "email": "runze@google.com",
        "time": "Thu Aug 27 12:32:12 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 12:34:02 2026 -0700"
      },
      "message": "Expose generated per-file Rust proto modules as public.\n\nPiperOrigin-RevId: 972096303\n"
    },
    {
      "commit": "2668ef974c4ce4532b51b3b7011ae73cd98cb881",
      "tree": "5cf1d1fa7fc49278cc255edd9b464fa64844a358",
      "parents": [
        "d9c9d29589781364fb7be012265a56fbea4b5d76"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Thu Aug 27 12:02:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 12:08:46 2026 -0700"
      },
      "message": "Fix subscript access for free threading.\n\nSubscript is a read-only operation and it should not try to do mutable operations.\n\nFix AssureWritable to also work on repeated sub messages. It now keeps an index hint to avoid an O(n) lookup if possible.\n\nFix BuildSubMessageFromPointer to not create MUTABLE messages. It is only taking a non-mutable one.\n\nFix GetItem to not perform mutable operations. This fixes the race in Subscript.\n\nPiperOrigin-RevId: 972081404\n"
    },
    {
      "commit": "d9c9d29589781364fb7be012265a56fbea4b5d76",
      "tree": "a3bb5430c7b5bfa6abe15fc2fba28c97306f2518",
      "parents": [
        "6bd6a5def059b3bce25a9b7280c98412852b4049"
      ],
      "author": {
        "name": "Karen Wu",
        "email": "karenwuz@google.com",
        "time": "Thu Aug 27 10:10:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 10:12:40 2026 -0700"
      },
      "message": "Update protobuf repository to use the newest version (v6) of protobuf-ci. This new version will use our newly combined top level .bazelrc file.\n\nPiperOrigin-RevId: 972018951\n"
    },
    {
      "commit": "6bd6a5def059b3bce25a9b7280c98412852b4049",
      "tree": "5e79c7ba0adf0aa0f363f3ce512a1bfa6027430f",
      "parents": [
        "282a41ced844ee74c6dfc4abcc788f20669adfd7"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Aug 27 14:22:56 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Thu Aug 27 14:22:56 2026 +0000"
      },
      "message": "Auto-generate files after cl/971935082\n"
    },
    {
      "commit": "282a41ced844ee74c6dfc4abcc788f20669adfd7",
      "tree": "e4e89a6a985f48cda84bc9faf1f0c6090490a4c7",
      "parents": [
        "1338411b09cd8176866e3272cf22fbabfa8ccfa3"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 27 07:10:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 07:14:01 2026 -0700"
      },
      "message": "Add UTF-8 validation option levels to upb JSON decoder\n\nThis defaults to a log-err today, but will switch to enforce in the 2027-Q1 breaking change.\n\nThis actually just runs the UTF-8 validate over the entire input buffer at the start. Technically it only needs to run over the contents inside quoted strings, since the other characters have to be a small subset of ascii characters anyway (brackets, quotes, digits, etc). But as JSON is string-heavy (every key is a string) utf8_range simd behavior is happy to be given large ascii buffers. Benchmark results show that the extra cost of this being enabled is within benchmark noise level.\n\nPiperOrigin-RevId: 971935082\n"
    },
    {
      "commit": "1338411b09cd8176866e3272cf22fbabfa8ccfa3",
      "tree": "1bd96cdecf8d6337de98174095cd1ccfcb99b928",
      "parents": [
        "7ddf2ab9c87d60c4e6021789d706508b8b7b2334"
      ],
      "author": {
        "name": "Thomas Köppe",
        "email": "tkoeppe@google.com",
        "time": "Thu Aug 27 06:43:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 06:45:34 2026 -0700"
      },
      "message": "Internal change\n\nPiperOrigin-RevId: 971924393\n"
    },
    {
      "commit": "7ddf2ab9c87d60c4e6021789d706508b8b7b2334",
      "tree": "fbaf09395b252992bdef50175911f1b690a1e86e",
      "parents": [
        "1143aa2cee4f389e9ff310f2a095fc88fbe7fb02"
      ],
      "author": {
        "name": "Mikita Belahlazau",
        "email": "nbeloglazov@google.com",
        "time": "Thu Aug 27 06:22:25 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 06:32:11 2026 -0700"
      },
      "message": "Use negative UninterpretedOption field tags for interpreted option locations.\n\nThis allows us to extend improved SourceCodeInfo support to dot-notation options without breaking backwards compatibility. Dot-notation options like `(my_opt).a \u003d 123` already emit SourceCodeInfo location in a form of `[..., 10101, 1]` where 1 is the tag of field `a`. That location spans the whole option. But these pre-existing locations are limited as they don\u0027t provide granular information about each part of the option (e.g. location of `a`) and don\u0027t provide location for value too.\n\nUsing negative values allows us to create non-overlapping set of locations. For example in the example above we will emit (in future CL):\n\n[..., 10101] - location of the whole `(my_opt).a \u003d 123` option\n[..., 10101, 1] - legacy duplicate location of the whole `(my_opt).a \u003d 123` option\n[..., 10101, -2] - location of `(my_opt)` part\n[..., 10101, -8, 1, -2] - location of `a` part\n[..., 10101, -8, 1, -4] - location of `123` part\n\nPiperOrigin-RevId: 971916056\n"
    },
    {
      "commit": "1143aa2cee4f389e9ff310f2a095fc88fbe7fb02",
      "tree": "a1f7c1e2d6569b779af2698035df0c3a491d44d0",
      "parents": [
        "55795c4bc10d40950eb0429f3b0200e79febf626"
      ],
      "author": {
        "name": "Jason Aragorn Tobias Lunn",
        "email": "jatl@google.com",
        "time": "Wed Aug 26 17:15:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 17:17:36 2026 -0700"
      },
      "message": "Drop testing of 35.x branch\n\nPiperOrigin-RevId: 971590429\n"
    },
    {
      "commit": "55795c4bc10d40950eb0429f3b0200e79febf626",
      "tree": "8738b6beabb49a3dbd14fe74403209080ba0714c",
      "parents": [
        "97258a34b123923a046a9c4a05b8c8fdcae630be"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 26 16:41:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 16:43:25 2026 -0700"
      },
      "message": "internal changes\n\nPiperOrigin-RevId: 971574061\n"
    },
    {
      "commit": "97258a34b123923a046a9c4a05b8c8fdcae630be",
      "tree": "42694115dd7050dcb66499c7549f628d7316ec77",
      "parents": [
        "ff028f2fb402f0dbdcc2b4e80192c032f827065e"
      ],
      "author": {
        "name": "Peter Foley",
        "email": "pefoley@google.com",
        "time": "Wed Aug 26 15:32:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 15:41:55 2026 -0700"
      },
      "message": "Add a newline to the edition support error message.\n\nPiperOrigin-RevId: 971538364\n"
    },
    {
      "commit": "ff028f2fb402f0dbdcc2b4e80192c032f827065e",
      "tree": "a9d074a75f5e1aefc687519bea38659549c0ffce",
      "parents": [
        "7b091ee68eb1b9482197b4b0b79fe6e72d4315fb"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 26 08:05:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 08:11:33 2026 -0700"
      },
      "message": "Allow files for `compat_label_flag()`\u0027s label attributes `default_value`, `runtime` and `_native_target`, staying compatible with the prior `label_flag()` behaviour.\n\nPiperOrigin-RevId: 971288432\n"
    },
    {
      "commit": "7b091ee68eb1b9482197b4b0b79fe6e72d4315fb",
      "tree": "201eaf78701abc3cddfb596a0f9c15e24e482680",
      "parents": [
        "6a212128003b3b902ebd9f91109bee1dd3ad9544"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Aug 26 03:24:01 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Wed Aug 26 03:24:01 2026 +0000"
      },
      "message": "Auto-generate files after cl/970967137\n"
    },
    {
      "commit": "6a212128003b3b902ebd9f91109bee1dd3ad9544",
      "tree": "aa727878f2059c90b0d84168434bbbf0f09b8125",
      "parents": [
        "b6ca8b9fb16129d4ee6057094d003d50049dec4d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 25 20:10:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 20:13:17 2026 -0700"
      },
      "message": "Hopefully final batch of return value checks before UPB_NODISCARD enforcement\n\nPiperOrigin-RevId: 970967137\n"
    },
    {
      "commit": "b6ca8b9fb16129d4ee6057094d003d50049dec4d",
      "tree": "a501571fb0cd906c2edfcbea4954c53776a8def0",
      "parents": [
        "67322442bd245c5a4920567b4c4f502dc5fb820e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 25 16:17:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 16:19:50 2026 -0700"
      },
      "message": "Support non-canonical extensions in Python upb unknown fields.\n\nPiperOrigin-RevId: 970866648\n"
    },
    {
      "commit": "67322442bd245c5a4920567b4c4f502dc5fb820e",
      "tree": "5fd2f5657a05a3d21e8a93e7845f5cd78356f739",
      "parents": [
        "d43953b4b94d51b820e5183a6e649290516014dc"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 23:08:01 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 23:08:01 2026 +0000"
      },
      "message": "Auto-generate files after cl/970851165\n"
    },
    {
      "commit": "d43953b4b94d51b820e5183a6e649290516014dc",
      "tree": "ef1ea333d01d0fa2f53545d6dfb881651664f3b7",
      "parents": [
        "b8ce5dceeade29fcc25be461571dbd94dc7dcba9"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 25 15:53:10 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 15:56:43 2026 -0700"
      },
      "message": "Add `upb_Message_NextWireFormatUnknown` to iterate over unknown fields in wire format.\n\nPiperOrigin-RevId: 970851165\n"
    },
    {
      "commit": "b8ce5dceeade29fcc25be461571dbd94dc7dcba9",
      "tree": "b225ef0e35c5c376b8bca15c28f5cc9780924669",
      "parents": [
        "f1c23cb216347437d0a190a23b9ecf46873db367"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 22:41:40 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 22:41:40 2026 +0000"
      },
      "message": "Auto-generate files after cl/970834999\n"
    },
    {
      "commit": "f1c23cb216347437d0a190a23b9ecf46873db367",
      "tree": "19fb8055cfce693de5eedd095a34c0158355bbd1",
      "parents": [
        "ea0f2968ed09dfdb86581800f343422625704135"
      ],
      "author": {
        "name": "Joshua Haberman",
        "email": "haberman@google.com",
        "time": "Tue Aug 25 15:27:05 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 15:30:42 2026 -0700"
      },
      "message": "Prepare Protobuf for a future version of Bazel which will lack the proto fragment\n\nThe ultimate effect of this change will be that both the native flags and Starlark flags will continue to work with future versions of Bazel that lack the proto fragment, until such time as we deprecate or remove the flags in a Protobuf release.  This decouples Bazel releases from Protobuf behavior changes.\n\n1. Builds on the Bazel 8-compatible abstraction layer we submitted in cl/955468205 by setting `HAS_NATIVE_PROTO_FLAGS` properly in Bazel.  We do this by adding a `rules.has_proto_fragment` setting to the `proto_bazel_features.bzl` mechanism: we know that the fragment no longer needs to be read in Bazel 9+, because we can use `flag_alias()` instead.\n2. Adds `flag_alias()` declarations in MODULE.bazel for all compat layer flags.  This will work in Bazel 9, but is ignored in Bazel 8.\n\nThis leads to a slight inconsistency.  Consider the following set of flags set by a user:\n\n```\n--@protobuf//bazel/flags:protocopt\u003dfoo --protocopt\u003dbar\n```\n\nIn Bazel 9+, where the flag alias is respected, the final value of the flag will be `bar`.  In Bazel 8, where we emulate `flag_alias()` by reconciling the two different values at analysis time, we always prefer the Starlark version (and cannot tell the relative order), so the final value of the flag will be `foo`.\n\nTo avoid this, prefer setting the Starlark version of the flag whenever possible.\n\nPiperOrigin-RevId: 970834999\n"
    },
    {
      "commit": "ea0f2968ed09dfdb86581800f343422625704135",
      "tree": "42a350ed1f0d5b7ee3a481217993b35e7fb70e2e",
      "parents": [
        "ff9440f2ee828e4935abb0c6287aca373a2bae6c"
      ],
      "author": {
        "name": "corpagent-eng-adazhang",
        "email": "corpagent-eng-adazhang@google.com",
        "time": "Tue Aug 25 14:44:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 14:46:43 2026 -0700"
      },
      "message": "Internal change\n\nPiperOrigin-RevId: 970808467\n"
    },
    {
      "commit": "ff9440f2ee828e4935abb0c6287aca373a2bae6c",
      "tree": "0190522859e97037653fc3ed84b8bae86c1f0a7e",
      "parents": [
        "734819d9dc5d96f8ea22186f7590f92cb2b8f912"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 21:29:46 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 21:29:46 2026 +0000"
      },
      "message": "Auto-generate files after cl/970790688\n"
    },
    {
      "commit": "734819d9dc5d96f8ea22186f7590f92cb2b8f912",
      "tree": "8d5c27886dadc83a7a57bc1957f20e4599a0929e",
      "parents": [
        "2d75af0868cd108817846bc264ff2b767cbbcd70"
      ],
      "author": {
        "name": "Joshua Haberman",
        "email": "haberman@google.com",
        "time": "Tue Aug 25 14:18:12 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 14:21:28 2026 -0700"
      },
      "message": "Delete com_google_protobuf_previous_release and associated breaking tests\n\nWhen trying to land https://github.com/protocolbuffers/protobuf/pull/28957, I ran into problems with the `@com_google_protobuf_previous_release` repo.  The root cause of these problems was that this repo combines a previous version of all of our `.bzl` files (like `proto_library.bzl`) with the *current* version of our `MODULE.bazel` file.\n\nThis is a combination that no user will actually encounter, and when skew between the two causes issues, it is very difficult to debug and fix.\n\nIf we want to re-introduce these breaking change tests in the future, an alternative approach that would cause fewer problems is to use the examples module at https://github.com/protocolbuffers/protobuf/tree/main/examples.  That module could include previous versions of the `.proto` files, as well as the breaking change tests to compare against the protos in `@com_google_protobuf`.\n\nSince the examples module does not contain a copy of all our `.bzl` files, this design would avoid the `.bzl` skew that causes problems in the current setup.\n\nPiperOrigin-RevId: 970790688\n"
    },
    {
      "commit": "2d75af0868cd108817846bc264ff2b767cbbcd70",
      "tree": "8d0efbd9dcd5fea702363ad856048948f6c23d4b",
      "parents": [
        "1cf5e73656c0f5b84c91cddb9d190afda6f01f2c"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 20:36:15 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 25 20:36:15 2026 +0000"
      },
      "message": "Auto-generate files after cl/970750490\n"
    },
    {
      "commit": "1cf5e73656c0f5b84c91cddb9d190afda6f01f2c",
      "tree": "33536a55b64b7a9d754765174efcf66b4cd5b4dc",
      "parents": [
        "6836552e2573b833f3375b1a781625897688d1c2"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Tue Aug 25 13:20:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 13:25:37 2026 -0700"
      },
      "message": "Remove version pin from the script.\n\nLet it get the one from .bazeliskrc\n\nThis fixes the autoupdater robot.\n\nPiperOrigin-RevId: 970750490\n"
    },
    {
      "commit": "6836552e2573b833f3375b1a781625897688d1c2",
      "tree": "84d86b8d45f0c06276df7f54a6d4709d8198ebd2",
      "parents": [
        "b445fe13b1e9299abe28ccf457fb278e6a4496b6"
      ],
      "author": {
        "name": "Tony Liao",
        "email": "tonyliaoss@google.com",
        "time": "Tue Aug 25 10:48:17 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 10:50:27 2026 -0700"
      },
      "message": "Allow later enum aliases to overwrite in C# custom JSON enum mapping.\n\nWhen constructing the custom JSON enum name map in C# JsonParser, remove the\nContainsKey check so that subsequent aliased enum values overwrite earlier ones,\naligning with the \"last match wins\" semantics used across C++, Java, PHP, and Python.\n\nPiperOrigin-RevId: 970656172\n"
    },
    {
      "commit": "b445fe13b1e9299abe28ccf457fb278e6a4496b6",
      "tree": "c96ed34848afbe3447ca12ae560a56bcb34ffafb",
      "parents": [
        "3df019d491d3abeb561f011a1f4ab1a0d60b3501"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Tue Aug 25 10:37:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 10:41:13 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nChange registration APIs to take ClassData* instead of prototypes.\n\nPiperOrigin-RevId: 970649058\n"
    },
    {
      "commit": "3df019d491d3abeb561f011a1f4ab1a0d60b3501",
      "tree": "3092c4b06afd9da66cd80ffd6a4b27e66f1b45e2",
      "parents": [
        "d17cf6743414afca09d85ef6c55e1bf850ef8188"
      ],
      "author": {
        "name": "Jason Lunn",
        "email": "jason.lunn@gmail.com",
        "time": "Tue Aug 25 09:05:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 09:08:44 2026 -0700"
      },
      "message": "Forward-port Rust crate swap (#29397)\n\nCherrypick crate fixes from 36.x to main\n\nCloses #29397\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/protocolbuffers/protobuf/pull/29397 from protocolbuffers:forward_port_crate_swap 2b5bb9fe65cf28b139bac1aee07f67c7863ce823\nPiperOrigin-RevId: 970589358\n"
    },
    {
      "commit": "d17cf6743414afca09d85ef6c55e1bf850ef8188",
      "tree": "9ee3cdfd6db776b38eb297cb71766ebe52b66268",
      "parents": [
        "d3daee4c68c7e067c4a9f4ae620a7fa41a4c6428"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 25 07:47:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 07:51:15 2026 -0700"
      },
      "message": "Use monomorphic static dispatch for Java Protobuf submessage parsing\n\nPiperOrigin-RevId: 970550003\n"
    },
    {
      "commit": "d3daee4c68c7e067c4a9f4ae620a7fa41a4c6428",
      "tree": "be8a9d7f65790d239def45abb4dcd74efc197745",
      "parents": [
        "9d98477ca922253e1db5ec213a188927385d25db"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Tue Aug 25 07:22:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 07:25:40 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nRemove branching for MessageGlobalsBase and the trait.\n\nPiperOrigin-RevId: 970537151\n"
    },
    {
      "commit": "9d98477ca922253e1db5ec213a188927385d25db",
      "tree": "6ae1d910793ae070fcd47fe48e1b0978a67b7311",
      "parents": [
        "7f86060aae572ca1aab356712d3d3a433e13565a"
      ],
      "author": {
        "name": "Tony Liao",
        "email": "tonyliaoss@google.com",
        "time": "Tue Aug 25 07:03:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 07:09:41 2026 -0700"
      },
      "message": "Optimize pure Python parse path for custom JSON enum names.\n\nThis implementation is similar to our Java idea in cl/949670944,\nbasically the idea is that we will have a local map (dictionary) that\nwill be populated the very first time we try to parse into an enum\nfield. The lifetime of this dictionary will be tied to the Parser\ninstance, similar to the Java implementation.\n\nBENCHMARKS (baseline stats are recorded at cl/952170250):\n\nPython:\n```\n[BENCHMARK] ParseJsonDefault:                med 10.06 us/op | p99 11.22 us/op | mean 10.10 ± 0.20 us/op\n[BENCHMARK] ParseJsonCustom:                 med 20.33 us/op | p99 22.23 us/op | mean 20.40 ± 0.34 us/op\n[BENCHMARK] ParseJsonUnknownIgnored:         med 24.21 us/op | p99 26.25 us/op | mean 24.31 ± 0.44 us/op\n[BENCHMARK] ParseRepeatedJsonDefault:        med 1.94 us/item | p99 2.05 us/item | mean 1.95 ± 0.03 us/item\n[BENCHMARK] ParseRepeatedJsonCustom:         med 2.26 us/item | p99 2.45 us/item | mean 2.27 ± 0.03 us/item\n[BENCHMARK] ParseRepeatedJsonUnknownIgnored: med 5.31 us/item | p99 5.52 us/item | mean 5.32 ± 0.05 us/item\n```\n\nCpp:\n```\n[BENCHMARK] ParseJsonDefault:                med 8.66 us/op | p99 9.21 us/op | mean 8.70 ± 0.13 us/op\n[BENCHMARK] ParseJsonCustom:                 med 26.33 us/op | p99 29.71 us/op | mean 26.44 ± 0.69 us/op\n[BENCHMARK] ParseJsonUnknownIgnored:         med 28.46 us/op | p99 31.80 us/op | mean 28.59 ± 0.67 us/op\n[BENCHMARK] ParseRepeatedJsonDefault:        med 1.72 us/item | p99 2.19 us/item | mean 1.74 ± 0.06 us/item\n[BENCHMARK] ParseRepeatedJsonCustom:         med 2.12 us/item | p99 2.38 us/item | mean 2.13 ± 0.04 us/item\n[BENCHMARK] ParseRepeatedJsonUnknownIgnored: med 4.61 us/item | p99 4.92 us/item | mean 4.62 ± 0.07 us/item\n```\n\nUPB:\n```\n[BENCHMARK] ParseJsonDefault:                med 11.22 us/op | p99 12.29 us/op | mean 11.27 ± 0.21 us/op\n[BENCHMARK] ParseJsonCustom:                 med 37.54 us/op | p99 39.25 us/op | mean 37.65 ± 0.46 us/op\n[BENCHMARK] ParseJsonUnknownIgnored:         med 41.18 us/op | p99 48.45 us/op | mean 41.30 ± 0.89 us/op\n[BENCHMARK] ParseRepeatedJsonDefault:        med 2.10 us/item | p99 2.19 us/item | mean 2.10 ± 0.02 us/item\n[BENCHMARK] ParseRepeatedJsonCustom:         med 2.58 us/item | p99 2.73 us/item | mean 2.59 ± 0.03 us/item\n[BENCHMARK] ParseRepeatedJsonUnknownIgnored: med 5.70 us/item | p99 5.90 us/item | mean 5.71 ± 0.04 us/item\n```\n\nSeeing these benchmarks, we can see a very noticeable improvement in\n`ParseRepeatedJsonCustom` and `ParseRepeatedJsonUnknownIgnored` cases --\nwhich correspond to the pathological cases that we are worried about.\nSingular fields are taking longer to parse in our microbenchmark because\nthe cache that we\u0027ve added is tied to each Parser instance and must be\nre-instantiated across every `Parse` call.\n\nPiperOrigin-RevId: 970528683\n"
    },
    {
      "commit": "7f86060aae572ca1aab356712d3d3a433e13565a",
      "tree": "0c9372bf9add9853689ba3e87c1acfcff36f9f8b",
      "parents": [
        "44baf91cc1a9eeb8d5492472afef8d117fffa6d6"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 17:01:40 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 17:04:58 2026 -0700"
      },
      "message": "Avoid unchecked cast warnings in TextFormat.parse\n\nUse Class.cast instead of unchecked casts to eliminate @SuppressWarnings(\"unchecked\") in TextFormat.parse overloads.\n\nShouldn\u0027t be a performance problem - this is only available in full runtime (not android) where hotspot has a class.cast intrinsic (and text proto parsing is relatively slow anyway, this won\u0027t be the bottleneck).\n\nPiperOrigin-RevId: 970171466\n"
    },
    {
      "commit": "44baf91cc1a9eeb8d5492472afef8d117fffa6d6",
      "tree": "a98fdac1d12b6ed3dc791df8367fb777bb6c60d2",
      "parents": [
        "11117398ddca0c3194d972e821921c32612e8de2"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 16:49:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 16:54:42 2026 -0700"
      },
      "message": "Improve type safety in ProtobufList.concatenate\n\nUse Collection\u003c?\u003e for the sizing check to eliminate unchecked cast warning and narrow @SuppressWarnings(\"unchecked\") to the specific ProtobufList fast-path assignment.\n\nPiperOrigin-RevId: 970165037\n"
    }
  ],
  "next": "11117398ddca0c3194d972e821921c32612e8de2"
}
