)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "11117398ddca0c3194d972e821921c32612e8de2",
      "tree": "4fcba4033b37e7246652a7695bf4113a9e2504fe",
      "parents": [
        "0258a657432c390f6ca9117cc6a5c2b25a165483"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 15:29:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 15:32:21 2026 -0700"
      },
      "message": "Update CodedInputStream Javadoc regarding exception handling and isAtEnd behavior.\n\nPiperOrigin-RevId: 970118591\n"
    },
    {
      "commit": "0258a657432c390f6ca9117cc6a5c2b25a165483",
      "tree": "eec1da04e181e83fff4f1aa80685857f0e63e2cb",
      "parents": [
        "205d45b629ad3146fc1ff417fb5e50147d05accb"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 15:06:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 15:09:41 2026 -0700"
      },
      "message": "Internal change\n\nPiperOrigin-RevId: 970105512\n"
    },
    {
      "commit": "205d45b629ad3146fc1ff417fb5e50147d05accb",
      "tree": "9bf0a95cc5c5ea1a60a9dc688612f246fe5eea3b",
      "parents": [
        "4d20214ca88dd1b53b93c522f630a1522edac077"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 14:56:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 14:58:47 2026 -0700"
      },
      "message": "Migrate Java(Lite|Mutable|)ProtoLibraryTest.testEmptySrcsForJavaApi to Starlark-based analysis test.\n\nPiperOrigin-RevId: 970099350\n"
    },
    {
      "commit": "4d20214ca88dd1b53b93c522f630a1522edac077",
      "tree": "332fe0b932839c27b30ee609379d97c1daccbc05",
      "parents": [
        "dee117a78747ccb1e44e9efcf2f8f71640f65b8d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 14:14:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 14:21:14 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 970073736\n"
    },
    {
      "commit": "dee117a78747ccb1e44e9efcf2f8f71640f65b8d",
      "tree": "6042f53d09440d77fef9958cd2c72ffc552bdda4",
      "parents": [
        "672eda6f1f8e3c03e7c40a01892f455d1b194e96"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 12:32:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 12:44:01 2026 -0700"
      },
      "message": "Avoid empty byte array allocations in Proto Lite toByteArray().\n\nIn AbstractMessageLite.toByteArray(), check if getSerializedSize() \u003d\u003d 0 and return Internal.EMPTY_BYTE_ARRAY directly instead of allocating a new 0-byte array and CodedOutputStream wrappers.\n\nPiperOrigin-RevId: 970010400\n"
    },
    {
      "commit": "672eda6f1f8e3c03e7c40a01892f455d1b194e96",
      "tree": "dca6afa31e9d4237535ee46352f571aa77e40318",
      "parents": [
        "f1a2ca97f833a6cac89c72321bee81d0bb5a62d1"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 08:39:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:43:17 2026 -0700"
      },
      "message": "Fasttable: Fix overly strict assert.\n\nPiperOrigin-RevId: 969873676\n"
    },
    {
      "commit": "f1a2ca97f833a6cac89c72321bee81d0bb5a62d1",
      "tree": "54c9edf0c795c8f9265e4e895ae6383609bd520f",
      "parents": [
        "a55c302e3f6683eba6f57a9672d19a9c8246e16c"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 24 05:38:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 05:40:20 2026 -0700"
      },
      "message": "Avoid unchecked cast warning in Internal.getDefaultInstance\n\nUse Class.cast instead of an unchecked generic cast to avoid compiler warnings and ensure runtime type safety.\n\nNot a big deal but a nice opportunity to remove a warning.\n\nThis is only used in the full runtime AFAIK, where hotspot has an intrinsic for Class.cast so shouldn\u0027t be a performance issue.\n\nPiperOrigin-RevId: 969794451\n"
    },
    {
      "commit": "a55c302e3f6683eba6f57a9672d19a9c8246e16c",
      "tree": "5144315ace281bd06b07d8626d1b75edbac4e050",
      "parents": [
        "407b27d8da58b3f9914fc361b29c30f0a5e6bb5f"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Sun Aug 23 09:03:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 23 09:06:54 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 969413413\n"
    },
    {
      "commit": "407b27d8da58b3f9914fc361b29c30f0a5e6bb5f",
      "tree": "f68376c0c9f91bfca98408e06ec3ac06ffbaf188",
      "parents": [
        "e712d276bcead35cad45e305463f5e542246351e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Sun Aug 23 07:54:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 23 07:56:27 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 969393499\n"
    },
    {
      "commit": "e712d276bcead35cad45e305463f5e542246351e",
      "tree": "1a97c33bc2d1076408b8bb0ac40e1a72352d8761",
      "parents": [
        "718a3e58b4c7176cb36bfbfb1ac16aa558116650"
      ],
      "author": {
        "name": "Ada Zhang",
        "email": "adazhang@google.com",
        "time": "Fri Aug 21 18:38:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 18:42:09 2026 -0700"
      },
      "message": "Add upb_Message_NextSerializableField and unify field presence checks.\n\nPiperOrigin-RevId: 968809631\n"
    },
    {
      "commit": "718a3e58b4c7176cb36bfbfb1ac16aa558116650",
      "tree": "02583517d47c4a9279d9f3c108018fb5b9973323",
      "parents": [
        "2901ce6db33bbaa9292bb64b6f9459d52676afa3"
      ],
      "author": {
        "name": "Sandy Zhang",
        "email": "sandyzhang@google.com",
        "time": "Fri Aug 21 16:31:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 16:33:49 2026 -0700"
      },
      "message": "Document context and Java runtime guidance on feature extension restriction.\n\nPiperOrigin-RevId: 968759632\n"
    },
    {
      "commit": "2901ce6db33bbaa9292bb64b6f9459d52676afa3",
      "tree": "cfe075bf69777060000b171fe463fc73b8c7e150",
      "parents": [
        "bf50167a855c39961fcbbe092d897eb07531c2cd"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Fri Aug 21 15:28:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 15:34:04 2026 -0700"
      },
      "message": "Handle refcount issues on allocation failure in python\n\nPiperOrigin-RevId: 968724072\n"
    },
    {
      "commit": "bf50167a855c39961fcbbe092d897eb07531c2cd",
      "tree": "3a255642c1b62e72f694c73834092555ef621da8",
      "parents": [
        "39882988a983c2daa215dba7ae2310187c0e6a14"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Fri Aug 21 13:53:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 13:57:24 2026 -0700"
      },
      "message": "Allow disabling lazy parsing in individual `ExtensionRegistryLite` which will signal the parsing whether should parse extension fields lazily.\n\nPiperOrigin-RevId: 968674119\n"
    },
    {
      "commit": "39882988a983c2daa215dba7ae2310187c0e6a14",
      "tree": "5a27c98a342109ce7b8b81d6f3895eb308d696f2",
      "parents": [
        "035554bd86ce157166bc54b6553019b67d24f34e"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Fri Aug 21 10:12:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 10:17:44 2026 -0700"
      },
      "message": "Remove tc_table from MessageInfo.\n\nThis reduces the size of ExtensionInfo.\n\nPiperOrigin-RevId: 968562757\n"
    },
    {
      "commit": "035554bd86ce157166bc54b6553019b67d24f34e",
      "tree": "227e6d2855aa1b558cffc9274f3ca8b7a5ab4f7a",
      "parents": [
        "e29507ff0db6943a226c5c798b79fc4abca847d1"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Fri Aug 21 09:44:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 21 09:52:47 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nRemove TcParser::GetTable and migrate callers to MessageTraits.\n\nPiperOrigin-RevId: 968547835\n"
    },
    {
      "commit": "e29507ff0db6943a226c5c798b79fc4abca847d1",
      "tree": "6c7b480e3dc508217ba87b418cdb75804106139f",
      "parents": [
        "12d69dbd9f15be7db1dc5a03c353aa71fad78265"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 20 16:49:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 16:51:29 2026 -0700"
      },
      "message": "Migrate `upb_Message_NextUnknown` to `upb_Message_NextUnknown2` in `_cel_UnknownFields_FromMessage` to support non-canonical extensions.\n\nPiperOrigin-RevId: 968134008\n"
    },
    {
      "commit": "12d69dbd9f15be7db1dc5a03c353aa71fad78265",
      "tree": "ba9087cf61141ed3e73dfc15abded4a5f0fd3320",
      "parents": [
        "5957f0ecdb96623a6361f72046ea96c2f0b747f3"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Thu Aug 20 14:05:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 14:07:43 2026 -0700"
      },
      "message": "Automated rollback of commit 6b336e70380fd16b1d220f3cad79b7af72e526d6.\n\nPiperOrigin-RevId: 968043364\n"
    },
    {
      "commit": "5957f0ecdb96623a6361f72046ea96c2f0b747f3",
      "tree": "a68f2ec91f8a86d23b6a835e12000730ae79df86",
      "parents": [
        "50c6c24a2bf781c55c46ad02e5ba6c12f0ce22e4"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 20 13:06:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 13:10:05 2026 -0700"
      },
      "message": "Enable FastTable for non-opt builds.\n\nPiperOrigin-RevId: 968007366\n"
    },
    {
      "commit": "50c6c24a2bf781c55c46ad02e5ba6c12f0ce22e4",
      "tree": "e6836dbc5be8d175d80209a47b4f582e08a41087",
      "parents": [
        "60a6b5f352479185f208605395d0bc0c8cf24c0c"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Thu Aug 20 12:05:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 12:09:14 2026 -0700"
      },
      "message": "Remove table prefetching experiment.\n\nIt didn\u0027t pan out and was never turned on.\n\nPiperOrigin-RevId: 967969922\n"
    },
    {
      "commit": "60a6b5f352479185f208605395d0bc0c8cf24c0c",
      "tree": "9657900a45feb19cec80a08c415e548dedfa2132",
      "parents": [
        "03e410d5f762e3af0db212d2a1828f89b0b3a3de"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Thu Aug 20 10:59:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 11:02:19 2026 -0700"
      },
      "message": "Move generated methods specialized by simple bases to `Helpers_`.\n\nPiperOrigin-RevId: 967928105\n"
    },
    {
      "commit": "03e410d5f762e3af0db212d2a1828f89b0b3a3de",
      "tree": "f0e6a593fa19375b95b55357c17bd393795f4274",
      "parents": [
        "f6cd30a44e18464a104f916d69bc0d4292a05a9e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 20 09:24:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 09:30:04 2026 -0700"
      },
      "message": "Migrate JavaProtoLibraryTest.testJavaProtosExposesJavaProvider and lite / mutable counterparts JavaLiteProtoLibraryTest and JavaMutableProtoLibraryTest to Starlark-based analysis test.\n\nPiperOrigin-RevId: 967869339\n"
    },
    {
      "commit": "f6cd30a44e18464a104f916d69bc0d4292a05a9e",
      "tree": "54cbbb02a63ffee4e4ec6d698eeb8d923b49d6c9",
      "parents": [
        "a972dac424f93efebc46d077e4350bdfdb7b8b01"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Thu Aug 20 07:21:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 20 07:25:36 2026 -0700"
      },
      "message": "Enable FastTable for non-opt builds.\n\nPiperOrigin-RevId: 967807696\n"
    },
    {
      "commit": "a972dac424f93efebc46d077e4350bdfdb7b8b01",
      "tree": "c52d59e404972e88e9aee973eda908ce009c3f25",
      "parents": [
        "bca6336df1256335e1366da5f043fc40c713f1c5"
      ],
      "author": {
        "name": "Ada Zhang",
        "email": "adazhang@google.com",
        "time": "Wed Aug 19 21:16:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 21:20:45 2026 -0700"
      },
      "message": "Support printing non-canonical extensions in the text encoder.\n\nPiperOrigin-RevId: 967565448\n"
    },
    {
      "commit": "bca6336df1256335e1366da5f043fc40c713f1c5",
      "tree": "e6e4a0ab92ba421e4eeb94e20101103cae112e13",
      "parents": [
        "8917ad8c48a33b830a53f120bcef3c9f80cddeb6"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Wed Aug 19 18:25:53 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 18:28:39 2026 -0700"
      },
      "message": "Move internal message helper functions into the `Helpers_` struct.\n\nThis change moves internal helper methods (PlacementNew_, InternalNewImpl_, and InternalGenerateClassData_) from the main message class into a nested `Helpers_` struct.\n\nPiperOrigin-RevId: 967513868\n"
    },
    {
      "commit": "8917ad8c48a33b830a53f120bcef3c9f80cddeb6",
      "tree": "791dad72735faae72f7015601a759d7d371b5692",
      "parents": [
        "9996b547f77bc7987939c6f3ec0f9beb095f4b9e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 19 16:11:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 16:15:36 2026 -0700"
      },
      "message": "Fix unused return value warnings in upb call sites and tests.\n\nSeveral functions in upb marked with UPB_NODISCARD had their return values ignored in test and wrapper call sites.\n\nCheck and assert the return values of upb_Message_SetString, upb_Message_SetInt32, upb_ExtensionRegistry_AddArray, _upb_Message_AddUnknown, upb_Array_New, and _upb_Array_ResizeUninitialized across upb and protobuf tests and wrappers.\n\nPiperOrigin-RevId: 967461770\n"
    },
    {
      "commit": "9996b547f77bc7987939c6f3ec0f9beb095f4b9e",
      "tree": "13395de79dd7e86c235fb0dd4b008087354f6833",
      "parents": [
        "229a5289482b7e47c4c313a50a7bd5d25199cdf0"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 19 15:57:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 16:04:34 2026 -0700"
      },
      "message": "Fasttable: fix gaps in malformed tag guarding.\n\nPiperOrigin-RevId: 967454749\n"
    },
    {
      "commit": "229a5289482b7e47c4c313a50a7bd5d25199cdf0",
      "tree": "1c585a572b6e954063311f4314fcb7e9d7f06fc3",
      "parents": [
        "2de70d710510ea7c5ad7ec0c72bfed7f411c7b60"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 19 15:57:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 15:59:03 2026 -0700"
      },
      "message": "Handle more allocation failures\n\nPiperOrigin-RevId: 967454374\n"
    },
    {
      "commit": "2de70d710510ea7c5ad7ec0c72bfed7f411c7b60",
      "tree": "b70b98934c3083aa34dbf98e2e5dc942145c2dea",
      "parents": [
        "bdf71ccdd12c752a63835818f32dc0a702ddd71f"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 19 13:44:36 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 13:46:43 2026 -0700"
      },
      "message": "Add allocation failure tests for unknowns and defbuilder\n\nPiperOrigin-RevId: 967386997\n"
    },
    {
      "commit": "bdf71ccdd12c752a63835818f32dc0a702ddd71f",
      "tree": "64312a33e5fec51e8c576b5e8c7d36d6c4b7e836",
      "parents": [
        "676d7209c3100634e33e7b19d7bcefecf9086d48"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Wed Aug 19 13:38:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 13:41:28 2026 -0700"
      },
      "message": "Move `InternalGenerateParseTable_` to `.pb.cc`.\n\nThis moves `InternalGenerateParseTable_` to the nested `_Internals` class, which is only defined in `.pb.cc`, and renames it to `GenerateParseTable` (now that the `Internal` would be redundant).\n\nPiperOrigin-RevId: 967383875\n"
    },
    {
      "commit": "676d7209c3100634e33e7b19d7bcefecf9086d48",
      "tree": "c174cf6fa11cab291f5c4cc65a974578f85b1b1e",
      "parents": [
        "e12fe75fc71604b55aac6c49845e973970567ef1"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Wed Aug 19 12:52:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 12:55:58 2026 -0700"
      },
      "message": "Internal change\n\nPiperOrigin-RevId: 967359668\n"
    },
    {
      "commit": "e12fe75fc71604b55aac6c49845e973970567ef1",
      "tree": "8d34e9530af76eade7101c5ac2902caeca961e73",
      "parents": [
        "2c1ea6b8c94bff3a2236c07c22a8c3526733d9aa"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Wed Aug 19 11:46:40 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 11:48:44 2026 -0700"
      },
      "message": "Use the enum validation data for dynamic extensions too.\n\nThis removes an unnecessary branch in validation code and will allow reducing\nthe size of ExtensionInfo in a future change.\n\nPiperOrigin-RevId: 967326524\n"
    },
    {
      "commit": "2c1ea6b8c94bff3a2236c07c22a8c3526733d9aa",
      "tree": "04b88f8cf6cc18404b1454ae32e9016dd050e278",
      "parents": [
        "d21931d3982e8786c3187faf84602a4f71443d43"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Wed Aug 19 10:56:09 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 11:00:02 2026 -0700"
      },
      "message": "Hide the synthetic MapEntry class in the pb.cc file.\n\nThis reduces the cost of including the headers.\n\nPiperOrigin-RevId: 967299746\n"
    },
    {
      "commit": "d21931d3982e8786c3187faf84602a4f71443d43",
      "tree": "604ba514fb8975411f59f49ce068f9442f64085f",
      "parents": [
        "7ef3576267f05829d150b7d221e5ef762e6a02a1"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 19 10:34:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 10:38:05 2026 -0700"
      },
      "message": "Remove C23 requirement from FastTable.\n\nProvide dummy argument for variadic macro to satisfy pre-C23 requirements.\n\nRemove trailing `;` that duplicates `;` generated by macro expansion.\n\nPiperOrigin-RevId: 967288052\n"
    },
    {
      "commit": "7ef3576267f05829d150b7d221e5ef762e6a02a1",
      "tree": "97d6e9c9e16fdaa6cfbc7e27878cb64b8d56a4f7",
      "parents": [
        "c1d8a858cd5898f2f62fe22ab85035ca6f2ba737"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Wed Aug 19 10:25:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 10:27:48 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nClean up ExtensionInfo to contain a ClassData* instead.\n\nPiperOrigin-RevId: 967283147\n"
    },
    {
      "commit": "c1d8a858cd5898f2f62fe22ab85035ca6f2ba737",
      "tree": "efd754b7de6f53b766d2acbcdf6c24de08663324",
      "parents": [
        "c5055727eb285384444f80a50711ceb7512971d0"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Wed Aug 19 10:05:25 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 10:08:51 2026 -0700"
      },
      "message": "Short-circuit empty packed fields in CodedInputStream.countPackedVarints\n\n0-length packed fields occur but are fairly rare since our serializers will emit nothing instead of emitting a 0-length packed field. But, there\u0027s little reason to leave inequality case behind since we\u0027re checking against \u003c\u003d0 anyway.\n\nPiperOrigin-RevId: 967271476\n"
    },
    {
      "commit": "c5055727eb285384444f80a50711ceb7512971d0",
      "tree": "75589f8d685681436ab7b462c6ee96e2a9c82ee5",
      "parents": [
        "1a238308815176a92ba177d598cbdc6aa3b3290d"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Wed Aug 19 09:03:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 09:05:21 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nRemove some preprocessor branching in the runtime.\n\nPiperOrigin-RevId: 967240247\n"
    },
    {
      "commit": "1a238308815176a92ba177d598cbdc6aa3b3290d",
      "tree": "a9188d2d25c2ac144ae10a103eda6e0f2f3df641",
      "parents": [
        "2256d8f02841d6446ec9c387d54ebba8de2af979"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Wed Aug 19 08:55:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 19 08:59:26 2026 -0700"
      },
      "message": "[Py/C++] Fixed data race in Python free threading by removing obsolete hack\n\nWe previously had a hack in Python/C++ Protobuf to account for the fact that LazyField did not properly remember a custom DescriptorPool or MessageFactory that was set in the ParseContext at parse time.\n\nThe code has since been fixed to properly handle the case where ParseContext contains a custom DescriptorPool/MessageFactory.  Removing the hack removes the data race under free threading.\n\nPiperOrigin-RevId: 967236272\n"
    },
    {
      "commit": "2256d8f02841d6446ec9c387d54ebba8de2af979",
      "tree": "a22b2fe009b0a17fa94cafee7132a25d1afa09fb",
      "parents": [
        "6165c527939d0f0084f6c50660c4ad2ec119caa2"
      ],
      "author": {
        "name": "Ada Zhang",
        "email": "adazhang@google.com",
        "time": "Tue Aug 18 18:22:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 18:24:53 2026 -0700"
      },
      "message": "Support converting non-canonical extensions in upb message conversion.\n\nPiperOrigin-RevId: 966915077\n"
    },
    {
      "commit": "6165c527939d0f0084f6c50660c4ad2ec119caa2",
      "tree": "0e20a99f9673a05d5966019afcff6209fa7a25b0",
      "parents": [
        "d068b54ba62a2f80ea82110980f456ce3a753dd3"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 16:07:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 16:10:58 2026 -0700"
      },
      "message": "Validate tag match before treating unlinked submessages as unknown fields.\n\nOtherwise colliding fields will incorrectly end up in unknowns.\n\nPiperOrigin-RevId: 966858004\n"
    },
    {
      "commit": "d068b54ba62a2f80ea82110980f456ce3a753dd3",
      "tree": "49388968d2f522b92ab8c887982c0e1054305e91",
      "parents": [
        "37f78578e77590657e0b4fbd9a77d54b0315a89f"
      ],
      "author": {
        "name": "Ada Zhang",
        "email": "adazhang@google.com",
        "time": "Tue Aug 18 15:58:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 16:07:00 2026 -0700"
      },
      "message": "Internal\n\nPiperOrigin-RevId: 966853376\n"
    },
    {
      "commit": "37f78578e77590657e0b4fbd9a77d54b0315a89f",
      "tree": "a8ce395447b30e552bcfeb0772d8b9aee162d47c",
      "parents": [
        "6e4f4ca54a1930fe923f685d2b233bd022563ebd"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 15:58:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 16:01:51 2026 -0700"
      },
      "message": "- Updates DslList and ExtensionList to take a lazy supplier lambda () -\u003e List\u003cE\u003e, retaining secondary constructors for binary backward compatibility with existing compiled proto code.\n\nPiperOrigin-RevId: 966853174\n"
    },
    {
      "commit": "6e4f4ca54a1930fe923f685d2b233bd022563ebd",
      "tree": "1bc5dee86836c16ed666afde69451e5e6dc381e2",
      "parents": [
        "f9f94388a3a44ee5e97f2c117a265c021224f257"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 15:15:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 15:17:19 2026 -0700"
      },
      "message": "Fix UPB_FASTTABLE declaration to avoid errors with recursive C macro expansion.\n\nPlace \"hidden\" attribute behind macro conditioned on compiler support.\n\nDisable UPB_FASTTABLE on Windows, as MSVC doesn\u0027t support required compiler features. (Existing detection can be confounded on Windows for clang-cl, which may run in normal mode during codegen but compile final binaries in MSVC compat mode.)\n\nPiperOrigin-RevId: 966832345\n"
    },
    {
      "commit": "f9f94388a3a44ee5e97f2c117a265c021224f257",
      "tree": "8703846f78bd6f8a6c350a511a886c3f99ce749e",
      "parents": [
        "86c32b72d96135ac2d6887889857d8b8798e1a6b"
      ],
      "author": {
        "name": "Tony Liao",
        "email": "tonyliaoss@google.com",
        "time": "Tue Aug 18 14:53:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 14:57:30 2026 -0700"
      },
      "message": "Additional unit tests for Python handling of custom JSON enum names.\n\nThe unit tests added in the initial implementation in cl/925012500 and\ncl/922729754 were fairly minimal. I took some inspiration from our C++\nand Java unit tests for JSON\u0027s custom enum name parsing to come up with\nthese new test cases.\n\nThis change also adds a python Benchmark that we can use to verify that\nour optimizations in cl/952170251 actually works.\n\nBenchmark results across all three proto implementations (cpp, python, upb):\n\n\u003d\u003d\u003d C++ Extension Protos (json_format_benchmark_cpp_protos) \u003d\u003d\u003d\n[BENCHMARK] ParseJsonDefault:                med 8.70 us/op | p99 9.56 us/op | mean 8.74 ± 0.15 us/op\n[BENCHMARK] ParseJsonCustom:                 med 17.39 us/op | p99 21.64 us/op | mean 17.43 ± 0.51 us/op\n[BENCHMARK] ParseJsonUnknownIgnored:         med 26.97 us/op | p99 32.04 us/op | mean 27.06 ± 0.65 us/op\n[BENCHMARK] ParseRepeatedJsonDefault:        med 1.71 us/item | p99 1.83 us/item | mean 1.71 ± 0.02 us/item\n[BENCHMARK] ParseRepeatedJsonCustom:         med 9.18 us/item | p99 9.88 us/item | mean 9.20 ± 0.11 us/item\n[BENCHMARK] ParseRepeatedJsonUnknownIgnored: med 18.79 us/item | p99 19.19 us/item | mean 18.81 ± 0.13 us/item\n\n\u003d\u003d\u003d UPB Extension Protos (json_format_benchmark_upb_protos) \u003d\u003d\u003d\n[BENCHMARK] ParseJsonDefault:                med 8.70 us/op | p99 9.56 us/op | mean 8.74 ± 0.15 us/op\n[BENCHMARK] ParseJsonCustom:                 med 17.39 us/op | p99 21.64 us/op | mean 17.43 ± 0.51 us/op\n[BENCHMARK] ParseJsonUnknownIgnored:         med 26.97 us/op | p99 32.04 us/op | mean 27.06 ± 0.65 us/op\n[BENCHMARK] ParseRepeatedJsonDefault:        med 1.71 us/item | p99 1.83 us/item | mean 1.71 ± 0.02 us/item\n[BENCHMARK] ParseRepeatedJsonCustom:         med 9.18 us/item | p99 9.88 us/item | mean 9.20 ± 0.11 us/item\n[BENCHMARK] ParseRepeatedJsonUnknownIgnored: med 18.79 us/item | p99 19.19 us/item | mean 18.81 ± 0.13 us/item\n\n\u003d\u003d\u003d Pure Python Protos (json_format_benchmark_python_protos) \u003d\u003d\u003d\n[BENCHMARK] ParseJsonDefault:                med 10.26 us/op | p99 11.20 us/op | mean 10.30 ± 0.25 us/op\n[BENCHMARK] ParseJsonCustom:                 med 16.59 us/op | p99 18.35 us/op | mean 16.70 ± 0.45 us/op\n[BENCHMARK] ParseJsonUnknownIgnored:         med 25.09 us/op | p99 28.22 us/op | mean 25.27 ± 0.65 us/op\n[BENCHMARK] ParseRepeatedJsonDefault:        med 1.94 us/item | p99 3.25 us/item | mean 1.97 ± 0.14 us/item\n[BENCHMARK] ParseRepeatedJsonCustom:         med 7.16 us/item | p99 10.35 us/item | mean 7.24 ± 0.39 us/item\n[BENCHMARK] ParseRepeatedJsonUnknownIgnored: med 15.43 us/item | p99 19.54 us/item | mean 15.54 ± 0.49 us/item\n\nPiperOrigin-RevId: 966820541\n"
    },
    {
      "commit": "86c32b72d96135ac2d6887889857d8b8798e1a6b",
      "tree": "01974bdb8689ea837fe86dedcdbaa56a60543b92",
      "parents": [
        "b9c05c1d72530f87ed1085626cf72859a1e68ccd"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 14:45:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 14:48:59 2026 -0700"
      },
      "message": "Fix fasttable support in Kotlin UPB.\n\nWhen fasttable is enabled, generated minitable headers transitively include internal fasttable headers (such as field_parsers.h / combinations.h / types.h). Adding field_parsers to upb_cinterop\u0027s deps under fasttable_enabled_setting ensures that these declarations are provided centrally by upb_cinterop.klib and not duplicated across individual proto libraries.\n\nPiperOrigin-RevId: 966816120\n"
    },
    {
      "commit": "b9c05c1d72530f87ed1085626cf72859a1e68ccd",
      "tree": "270802e5c9bf64220c13c3558fae0c5cb58c5b9a",
      "parents": [
        "c8cc70ea9b3f859353b9ade082e370f03b53fabc"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 14:16:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 14:19:21 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 966801750\n"
    },
    {
      "commit": "c8cc70ea9b3f859353b9ade082e370f03b53fabc",
      "tree": "e9db971a9e7d70bea26306538bc602f371ca9e8f",
      "parents": [
        "bf0c808084ae558fffa7f347397b52811d3a139c"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Tue Aug 18 14:00:53 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 14:03:17 2026 -0700"
      },
      "message": "Skip RepeatedVarint.Int32Overflow test on aarch64.\n\nPiperOrigin-RevId: 966792622\n"
    },
    {
      "commit": "bf0c808084ae558fffa7f347397b52811d3a139c",
      "tree": "4e5293709d451027a8c4bf1c2a7304b9a97cbf42",
      "parents": [
        "915853d5ef3e7352dda345ad6cfbeac233e41b17"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Tue Aug 18 12:42:23 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 12:44:28 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nMerge ClassDataLite and ClassDataFull into ClassData.\nRemove dead constructor parameters.\n\nPiperOrigin-RevId: 966749162\n"
    },
    {
      "commit": "915853d5ef3e7352dda345ad6cfbeac233e41b17",
      "tree": "f3888f95dc20a4d50abde989cf82fe08d05706e3",
      "parents": [
        "f9306545181f56dee85e550be4af73141eeb8a80"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 09:25:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 09:27:45 2026 -0700"
      },
      "message": "Automated rollback of commit 780ba8c700af70dcbdcd05c3100440331b850019.\n\nPiperOrigin-RevId: 966636867\n"
    },
    {
      "commit": "f9306545181f56dee85e550be4af73141eeb8a80",
      "tree": "ce5d6bb9a960cc4c833451e72b475d66067f646d",
      "parents": [
        "53bc98a9f44615f80be020a745c2c6686fec233c"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Tue Aug 18 08:30:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 08:34:15 2026 -0700"
      },
      "message": "Check consistency of ClassData types of RepeatedPtrField members in the destructor.\n\nThe repeated field destructor caches the element destructor and calls it on each element of a repeated field, rather than going through full dynamic dispatch for each element. Currently, if the elements of a repeated field are of different types, this code may segfault in non-obvious ways (e.g. mismatch size-delete, or memory corruption). The DCHECK gives a better error message when you have repeated fields of mixed element types.\n\nThis code is only active with `enable_custom_vtable`.\n\nPiperOrigin-RevId: 966610091\n"
    },
    {
      "commit": "53bc98a9f44615f80be020a745c2c6686fec233c",
      "tree": "0c9945a94da7f72890d3a5c78bf8f0b313506e11",
      "parents": [
        "42879bb405c02813c3becdcf79c4e740848f9acf"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 06:35:04 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 06:37:04 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 966561020\n"
    },
    {
      "commit": "42879bb405c02813c3becdcf79c4e740848f9acf",
      "tree": "3a27ba8b1f541c7fa48b4c87a6416fb56e15c52d",
      "parents": [
        "cfb934ad482a7e08a87dda07ba20e8998b22b43d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 06:27:36 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 06:34:01 2026 -0700"
      },
      "message": "Delete examples/.bazelversion\n\nThe version number is set to 7.1.0 and the contents of the example would never work on 7.x.\n\nOur CI always sets a version which is why this not mattering, but it appears that if you hold it exactly right bazelisk will use this version if present, but fall back to latest bazel if not. Just deleting the file so we don\u0027t let it rot again.\n\nPiperOrigin-RevId: 966558235\n"
    },
    {
      "commit": "cfb934ad482a7e08a87dda07ba20e8998b22b43d",
      "tree": "7d7f9b142051cdc3bd05097b1d7c810724fa725c",
      "parents": [
        "720e5468cebbb124e23c72080b28f2a41c4134a2"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Tue Aug 18 06:26:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 18 06:29:53 2026 -0700"
      },
      "message": "Optimize Java Protobuf packed varint counting using SWAR bitwise operations.\n\nImplements 64-bit SWAR chunking via ByteBuffer on non-Android devices, falling back to a scalar countdown loop on Android devices. Sub-8 byte inputs bypass 64-bit chunking and fall through to scalar counting.\n\n### JMH Microbenchmark Results (VarintCountingBenchmark)\n\n| Payload Length | Scalar Baseline | SWAR (ByteBuffer) | Speedup |\n| :--- | :--- | :--- | :--- |\n| 1 B | 1.78 ns/op | 1.91 ns/op | 1.0x (parity) |\n| 4 B | 3.75 ns/op | 3.65 ns/op | 1.0x (parity) |\n| 8 B | 6.19 ns/op | 3.44 ns/op | 1.8x faster |\n| 16 B | 9.93 ns/op | 4.00 ns/op | 2.5x faster |\n| 32 B | 18.58 ns/op | 5.06 ns/op | 3.7x faster |\n| 64 B | 35.50 ns/op | 7.51 ns/op | 4.7x faster |\n| 128 B | 74.66 ns/op | 10.92 ns/op | 6.8x faster |\n| 1024 B | 641.02 ns/op | 75.63 ns/op | 8.5x faster |\n\nPiperOrigin-RevId: 966557820\n"
    },
    {
      "commit": "720e5468cebbb124e23c72080b28f2a41c4134a2",
      "tree": "7d8bb787e896f421d42f9e6d06da36fb1df88952",
      "parents": [
        "80d472933a06bf050b471584164be4bf2dee57a3"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 21:01:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 21:03:55 2026 -0700"
      },
      "message": "Migrate Protobuf Python C extensions to rules_python toolchain targets.\n\nUpdate _message to use rules_python\u0027s py_extension macro (which\nautomatically injects required toolchain headers and manages shared library\nextensions across platforms), and update _api_implementation.so to depend\ndirectly on `@rules_python//python/cc:current_py_cc_headers` instead of\n`@system_python`.\n\nUsing `py_extension` and `current_py_cc_headers` decouples Python C\nextensions from the custom system_python.bzl script while maintaining\ncurrent host-interpreter behavior during the migration.\n\n#test-continuous\n\nPiperOrigin-RevId: 966345187\n"
    },
    {
      "commit": "80d472933a06bf050b471584164be4bf2dee57a3",
      "tree": "c5cab24f3eec261972cdcf93962f5ffa2cf67c4a",
      "parents": [
        "857623168c9618400ccd6a498974ecda00d60cc0"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 18 03:47:16 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 18 03:47:16 2026 +0000"
      },
      "message": "Auto-generate files after cl/966337187\n"
    },
    {
      "commit": "857623168c9618400ccd6a498974ecda00d60cc0",
      "tree": "78d1454def2f685cc11403565a229942ee142815",
      "parents": [
        "d5d2b624a6cff1c4d6dc5984cc370facb407d674"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 20:36:53 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 20:39:44 2026 -0700"
      },
      "message": "Automated rollback of commit d46a6ff07444cc7831a542bb2ea4be2d690af702.\n\nPiperOrigin-RevId: 966337187\n"
    },
    {
      "commit": "d5d2b624a6cff1c4d6dc5984cc370facb407d674",
      "tree": "1eb7eda3023099e110c82152135609177261a0d0",
      "parents": [
        "9ff0d2d197a9a5381d6bb4f7ca0b6ee6eb204256"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 17:54:59 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 17:58:02 2026 -0700"
      },
      "message": "Fix TODO(b/364873432) in Bazel cc_proto_library rules.\n\nPiperOrigin-RevId: 966282837\n"
    },
    {
      "commit": "9ff0d2d197a9a5381d6bb4f7ca0b6ee6eb204256",
      "tree": "37b4947d4ef1fb2e281d1e178362537b4b44917f",
      "parents": [
        "c6b856d7853ec85cd0be031db4c4aa9772d09122"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 18 00:27:25 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 18 00:27:25 2026 +0000"
      },
      "message": "Auto-generate files after cl/966266256\n"
    },
    {
      "commit": "c6b856d7853ec85cd0be031db4c4aa9772d09122",
      "tree": "15cb20df1ec7cb33fc1b1ed77a5d003687c6b7f4",
      "parents": [
        "993604ee07a9a508d83492c5665488a5df1ace20"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 17:13:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 17:17:05 2026 -0700"
      },
      "message": "Introduce overflow checking functions for add and multiply in upb to replace error-prone manual checks\n\nPiperOrigin-RevId: 966266256\n"
    },
    {
      "commit": "993604ee07a9a508d83492c5665488a5df1ace20",
      "tree": "da2cb0bd76f1fd34b46c350f1d4cf52a7432e9df",
      "parents": [
        "07eec573f37d51c5c08243b1bd04e3c79422351f"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 18 00:08:38 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Tue Aug 18 00:08:38 2026 +0000"
      },
      "message": "Auto-generate files after cl/966258037\n"
    },
    {
      "commit": "07eec573f37d51c5c08243b1bd04e3c79422351f",
      "tree": "22587e77079e72342a599aacaeebb93c5b7057c5",
      "parents": [
        "4374cbf43b5ebfe7ca706556c517cd74c711aa7a"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Mon Aug 17 16:56:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 16:58:56 2026 -0700"
      },
      "message": "Move static generated message helpers to a new private `Helpers_` class of the message.\n\nThis change eliminates redundant debug info from being generated for `Clear` / `ByteSizeLong` / `_InternalSerialize` outside the TU compiling `.pb.cc` for a message. It does so via [constructor homing](https://blog.llvm.org/posts/2021-04-05-constructor-homing-for-debug-info/) on the `Helpers_` class.\n\nThis is only in effects when `:enable_custom_vtable\u003dtrue`.\n\nPiperOrigin-RevId: 966258037\n"
    },
    {
      "commit": "4374cbf43b5ebfe7ca706556c517cd74c711aa7a",
      "tree": "2c842cab423f9175641ef096afc6623a08ce7e8d",
      "parents": [
        "b43ac42ce03d35da38fbf462ec7c23a01a3e650e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 16:51:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 16:54:30 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 966255809\n"
    },
    {
      "commit": "b43ac42ce03d35da38fbf462ec7c23a01a3e650e",
      "tree": "c48a46a7b58656a6c973ce13831d7cc04e1e5c37",
      "parents": [
        "45aa47c5a1a026467fc92869ea87422d5c27aabf"
      ],
      "author": {
        "name": "Charlie Beattie",
        "email": "cbeattie@google.com",
        "time": "Mon Aug 17 14:20:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 14:23:02 2026 -0700"
      },
      "message": "Protocol buffers support being created from memoryviews.\n\nPiperOrigin-RevId: 966179112\n"
    },
    {
      "commit": "45aa47c5a1a026467fc92869ea87422d5c27aabf",
      "tree": "6ee2aadbdc83b8e1fe1717154b44f503b776475e",
      "parents": [
        "1e1a0a8c76f2e5dc6ed734439fd79ca90cffe96e"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 17 21:00:59 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 17 21:00:59 2026 +0000"
      },
      "message": "Auto-generate files after PR #29130\n"
    },
    {
      "commit": "1e1a0a8c76f2e5dc6ed734439fd79ca90cffe96e",
      "tree": "5f956e1d6f651f4a2464f68128fe5565714d8e67",
      "parents": [
        "4de1634dd110a0906defb3f81b871a104886041d"
      ],
      "author": {
        "name": "BarakSrour",
        "email": "barak@apiiro.com",
        "time": "Mon Aug 17 13:48:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 13:51:19 2026 -0700"
      },
      "message": "Validate php_class_prefix and objc_class_prefix in code generators (#29130)\n\n## Summary\n\nFollow-up to #28667, which added character validation for `php_namespace`, `php_metadata_namespace`, `ruby_package` and `csharp_namespace` because they are emitted directly into generated source without validation.\n\nTwo options in the same family were not covered and are still unvalidated on `main`:\n\n| option | read at | validated before this PR |\n|---|---|---|\n| `php_class_prefix` | `php/names.cc` (`ClassNamePrefixImpl`) | no |\n| `objc_class_prefix` | `objectivec/names.cc` (`FileClassPrefix`) | no |\n\n`php_class_prefix` is easy to miss by inspection: the guard added in #28667 and both of its call sites are in `php_generator.cc`, while `php_class_prefix` is read from `names.cc`.\n\n## What happens today\n\n**PHP.** The generator emits `class \u003cphp_class_prefix\u003e\u003cName\u003e extends ...`, so a prefix that closes the declaration and opens its own is emitted verbatim:\n\n```proto\noption php_class_prefix \u003d \"Pfx{} class Injected { public static function pwn() { return \u0027INJECTED\u0027; } } class \";\n```\n\n`protoc --php_out` exits 0 and the generated file contains:\n\n```php\nclass Pfx{} class Injected { public static function pwn() { return \u0027INJECTED\u0027; } } class M extends \\Google\\Protobuf\\Internal\\Message\n```\n\nThat is valid PHP (`php -l`: no syntax errors), the injected class is defined and its code runs, and `Tp\\M` is still generated correctly — so nothing fails to build and nothing looks wrong.\n\n**Objective-C.** `FileClassPrefix` returns the option verbatim, so with `objc_class_prefix \u003d \"A\\\";void pwn(){}//\"` the value lands in `@interface` / `@implementation` declarations, a `typedef struct` tag and the `.prefix \u003d \"...\"` string literal. I have not built the resulting Objective-C, so I am claiming unvalidated emission here rather than a working payload.\n\nWorth noting separately: a prefix check already exists, but it validates style rather than characters, so it warns about a legitimate short prefix and says nothing about a hostile one:\n\n```\nobjc_class_prefix \u003d \"AB\"                 -\u003e warning: Invalid \u0027option objc_class_prefix \u003d \"AB\";\u0027\nobjc_class_prefix \u003d \"A\\\";void pwn(){}//\" -\u003e no diagnostic at all\n```\n\n## Changes\n\n- **PHP generator** — generalised `IsValidPhpNamespace` to `IsValidPhpOption(value, option_name, error)` so the error names the offending option, and applied it to `php_class_prefix` alongside the two existing options. The message still begins `Invalid character`, so the tests added in #28667 are unaffected.\n- **Objective-C generator** — new `ValidateObjCClassPrefixChars()` rejects prefixes containing anything outside `[A-Za-z0-9_]`, run from `ValidateObjCClassPrefixes()` over every file ahead of the expected-prefixes opt-outs.\n- Tests for both, in the reject/accept pattern used by #28667.\n\n## Notes for review\n\nThree things I\u0027d rather flag than have you find:\n\n1. **The Objective-C check is an allowlist, not a denylist.** The prefix is pasted into C identifiers, where nothing outside `[A-Za-z0-9_]` is ever valid, so an allowlist closes the class rather than chasing characters. I checked every `objc_class_prefix` in this repo (including the deliberately-empty one) and none would be rejected. Happy to switch to the `absl::CharSet` denylist used for PHP/Ruby/C# if you\u0027d prefer consistency over precision.\n\n2. **Placement matters.** The character check runs in `ValidateObjCClassPrefixes()` over every file, ahead of both documented opt-outs (`expected_prefixes_path\u003d-` and `expected_prefixes_suppressions`), since disabling the naming *policy* should not disable a correctness check. There is a regression test per opt-out.\n\n3. **Java is gated, but to a much narrower bar** — `java/file.cc` rejects only `;`, `\\r`, `\\n` and space, and its comment says it checks \"only a subset\". Since Java accepts `/**/` as a whitespace substitute, `java_outer_classname \u003d \"Evil/**/implements/**/Cloneable\"` and `\"Evil/*\"` are both emitted into the class declaration on current `main`. I could not get code execution out of that (`;` blocks statement injection); the demonstrated effect is generated code that will not compile. **Not changed in this PR** — mentioning it in case you want the bar aligned, and happy to do it in a follow-up.\n\nAlso, for whatever it\u0027s worth to release planning: #28667 itself is not in any released binary yet — the validation string is absent from both `protoc 35.1` and `protoc 36.0-rc2`, since it landed after the v36 branch was cut.\n\n## Testing\n\n`src/google/protobuf/compiler/php/generator_unittest.cc` — `InvalidPhpClassPrefixRejected`, `ValidPhpClassPrefixAccepted`.\n\n`src/google/protobuf/compiler/objectivec/generator_unittest.cc` (new file, plus its `cc_test` target) — `InvalidObjCClassPrefixRejected`, `InvalidObjCClassPrefixRejectedWithExpectedPrefixesDisabled`, `InvalidObjCClassPrefixRejectedWhenSuppressed`, `ValidObjCClassPrefixAccepted`, `ObjCClassPrefixWithUnderscoreAccepted`.\n\nThe two opt-out tests fail with the character check in its original location inside `ValidateObjCClassPrefix()`, and pass with it moved.\n\nBoth directions are covered, so the tests fail if the validation is removed *and* if it is made too strict.\n\n---\n\n_Both tests were run locally against this branch (`bazel test //src/google/protobuf/compiler/php:generator_unittest //src/google/protobuf/compiler/objectivec:generator_unittest`), and re-run with the two guards reverted to confirm they fail without the fix._\n\nCloses #29130\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/protocolbuffers/protobuf/pull/29130 from BarakSrour:validate-class-prefix-options a2bbd8f2ea53f1b9958c8d8b310d28277d4979a7\nPiperOrigin-RevId: 966161028\n"
    },
    {
      "commit": "4de1634dd110a0906defb3f81b871a104886041d",
      "tree": "d05d8b93297f4a610432746ebb1b83bb2fe1f4bd",
      "parents": [
        "dc693bc8914d419dc2f99a070d29a95ef1049162"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 13:43:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 13:46:07 2026 -0700"
      },
      "message": "Refactor dense enum cache initialization to use absl::call_once.\n\nPiperOrigin-RevId: 966158391\n"
    },
    {
      "commit": "dc693bc8914d419dc2f99a070d29a95ef1049162",
      "tree": "4dc3d63c2dbb7ff90b687433784a84a6433ed04c",
      "parents": [
        "d46a6ff07444cc7831a542bb2ea4be2d690af702"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 17 20:42:12 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 17 20:42:12 2026 +0000"
      },
      "message": "Auto-generate files after cl/966151323\n"
    },
    {
      "commit": "d46a6ff07444cc7831a542bb2ea4be2d690af702",
      "tree": "9996da7fafddf4cdc171283ccb4fad3035de4067",
      "parents": [
        "b41fd533ea90154218e6eaecc83c7d970af8bc60"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 13:30:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 13:31:56 2026 -0700"
      },
      "message": "Enable FastTable for non-opt builds.\n\nPiperOrigin-RevId: 966151323\n"
    },
    {
      "commit": "b41fd533ea90154218e6eaecc83c7d970af8bc60",
      "tree": "3c4314743c5de944290415d6062c46a105cec867",
      "parents": [
        "ced04955982bd5af9cb9e72a59cf9dd26c326e98"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Mon Aug 17 13:22:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 13:26:28 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 966146891\n"
    },
    {
      "commit": "ced04955982bd5af9cb9e72a59cf9dd26c326e98",
      "tree": "aec4b548614cb71e4520eacdabc28cd76ba98029",
      "parents": [
        "dc32c23f488f5512fcadbd7b62262ed8e001b5b9"
      ],
      "author": {
        "name": "yashanil98",
        "email": "79158725+yashanil98@users.noreply.github.com",
        "time": "Mon Aug 17 08:47:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 08:55:10 2026 -0700"
      },
      "message": "fix(protoc): honor --fatal_warnings in encode/decode mode (#28033)\n\nFixes #10486.\n\nWhen an input message passed to `protoc --encode` or `--decode` is missing required fields, protoc prints `warning: Input message is missing required fields: ...`. That warning was written straight to stderr in `EncodeOrDecode` and never influenced the exit code, so protoc returned 0 even with `--fatal_warnings` set, defeating its `-Werror`-like purpose.\n\nThis makes `EncodeOrDecode` return a non-zero exit when `--fatal_warnings` is set and the message is missing required fields. The check happens after the output is written, matching the compile path (which also produces its output before failing). When `--fatal_warnings` is not set, behavior is unchanged: the output and the warning are still produced and the exit code stays 0.\n\nA maintainer confirmed this is a valid bug and invited a PR on the issue.\n\nTest: added `EncodeDecodeTest.PartialWithFatalWarnings` asserting a non-zero exit (and that the warning is still emitted) when encoding a message with missing required fields under `--fatal_warnings`.\n\n  ./build/tests --gtest_filter\u003d\u0027*EncodeDecodeTest.*\u0027\n\nResult: 18 tests pass, including the new one.\n\nCloses #28033\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/protocolbuffers/protobuf/pull/28033 from yashanil98:fix/issue-10486-fatal-warnings-encode-decode d0bb423371baeca387fa8afbeabed597d8e52060\nPiperOrigin-RevId: 965995070\n"
    },
    {
      "commit": "dc32c23f488f5512fcadbd7b62262ed8e001b5b9",
      "tree": "d1a6905919e98b19bf4072af25bbc24f0f744409",
      "parents": [
        "8fa07c63590714075879a39681ae7b78aed4f10a"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 17 15:31:18 2026 +0000"
      },
      "committer": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-team-bot@google.com",
        "time": "Mon Aug 17 15:31:18 2026 +0000"
      },
      "message": "Auto-generate files after cl/965979781\n"
    },
    {
      "commit": "8fa07c63590714075879a39681ae7b78aed4f10a",
      "tree": "550233da239b97e6272f562389fdfb7819f5ad17",
      "parents": [
        "becdd958d1a9662674cb44706a5bc8de09aae2b6"
      ],
      "author": {
        "name": "Daniel Finnie",
        "email": "danfinnie@google.com",
        "time": "Mon Aug 17 08:16:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 08:19:49 2026 -0700"
      },
      "message": "Clean up some includes in TextFormat.\n\nPiperOrigin-RevId: 965979781\n"
    },
    {
      "commit": "becdd958d1a9662674cb44706a5bc8de09aae2b6",
      "tree": "2a3a9056d479775d8725cca35e297e7442422fe9",
      "parents": [
        "944d9909ce0e3d9da2338878445bd5be8a7db89e"
      ],
      "author": {
        "name": "Samuel Benzaquen",
        "email": "sbenza@google.com",
        "time": "Mon Aug 17 08:11:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 17 08:15:07 2026 -0700"
      },
      "message": "Continue cleaning up after the GLOBALS experiment.\n\nRemove PROTOBUF_MESSAGE_GLOBALS branching in generated code.\n\nPiperOrigin-RevId: 965977817\n"
    },
    {
      "commit": "944d9909ce0e3d9da2338878445bd5be8a7db89e",
      "tree": "a27503d6188e20dba9d5d49c17fcfeee8c8b38e8",
      "parents": [
        "e5c8ffa6cd912f37540f09844942f1d3f2f34723"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Sun Aug 16 23:50:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 16 23:53:48 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 965775373\n"
    },
    {
      "commit": "e5c8ffa6cd912f37540f09844942f1d3f2f34723",
      "tree": "40d45356ce3abf34d05217a1058f9d8460453f33",
      "parents": [
        "169e0f9b475ba01833e9737b142d3b02b432384d"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Sun Aug 16 23:28:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 16 23:31:01 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 965767499\n"
    },
    {
      "commit": "169e0f9b475ba01833e9737b142d3b02b432384d",
      "tree": "19dda51c07622d370f8445e45ec1c8cbd9d200d5",
      "parents": [
        "228537eb47c2f9ef86fde413e8fb861051c2a9a3"
      ],
      "author": {
        "name": "Protobuf Team Bot",
        "email": "protobuf-github-bot@google.com",
        "time": "Sun Aug 16 22:16:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 16 22:18:33 2026 -0700"
      },
      "message": "Automated Code Change\n\nPiperOrigin-RevId: 965744650\n"
    },
    {
      "commit": "228537eb47c2f9ef86fde413e8fb861051c2a9a3",
      "tree": "28bbdd3a2b029cd9debcec6d54bc5ec1dc3def29",
      "parents": [
        "8da17f0e28304817d9c32ecff882b0257ebd6384"
      ],
      "author": {
        "name": "Clayton Knittel",
        "email": "cknittel@google.com",
        "time": "Sun Aug 16 19:32:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Aug 16 19:34:45 2026 -0700"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 965698725\n"
    }
  ],
  "next": "8da17f0e28304817d9c32ecff882b0257ebd6384"
}
