)]}'
{
  "commit": "904b2566398a143f60ad517926eea17a306f7f24",
  "tree": "91ed9cecf69056a3262d3e983eca3ce64ae25965",
  "parents": [
    "2668ef974c4ce4532b51b3b7011ae73cd98cb881"
  ],
  "author": {
    "name": "dcodeIO",
    "email": "dcode@dcode.io",
    "time": "Fri Aug 21 14:52:22 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Aug 27 12:18:41 2026 -0700"
  },
  "message": "Add Windows conformance runner and testee support (#28130)\n\nAdds Windows support for the conformance runner and C++ conformance testee. For the conformance runner, this splits `ForkPipeRunner` into POSIX and Win32 implementations. The testee is switched to portable `FILE*` I/O, with binary mode on Windows.\n\nAlso makes two related changes:\n* `waitpid(..., WEXITED)` is changed to `waitpid(..., 0)` because `WEXITED` is a `waitid()` flag. `waitpid(..., 0)` already waits for the child to terminate.\n* Adds `protobuf_configure_target` to the CMake conformance targets so they get the necessary target flags, e.g. `/utf-8`, which is important on Windows.\n\nOtherwise wires the change into CI so the Windows target functionally mirrors the existing macOS target.\n\nResolves this existing Windows TODO in `fork_pipe_runner.cc`:\n\n```\n// TODO: make this work on Windows, instead of using these\n// UNIX-specific APIs.\n//\n// There is a platform-agnostic API in\n//    src/google/protobuf/compiler/subprocess.h\n//\n// However that API only supports sending a single message to the subprocess.\n// We really want to be able to send messages and receive responses one at a\n// time:\n//\n// 1. Spawning a new process for each test would take way too long for thousands\n//    of tests and subprocesses like java that can take 100ms or more to start\n//    up.\n//\n// 2. Sending all the tests in one big message and receiving all results in one\n//    big message would take away our visibility about which test(s) caused a\n//    crash or other fatal error.  It would also give us only a single failure\n//    instead of all of them.\n```\n\nCloses #28130\n\n#test-continuous\n\nFUTURE_COPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/protocolbuffers/protobuf/pull/28130 from dcodeIO:windows 4872b82d608dff91672bad47229bb60542a8971a\nPiperOrigin-RevId: 968704895\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "02a8dd2cc537389fbee329c409702027c795e32a",
      "old_mode": 33188,
      "old_path": ".github/workflows/test_cpp.yml",
      "new_id": "df9bead6b3bf1cd30741d8fc539a9ea234cdb182",
      "new_mode": 33188,
      "new_path": ".github/workflows/test_cpp.yml"
    },
    {
      "type": "modify",
      "old_id": "f94a99063a75574983480345378724fab8792b0b",
      "old_mode": 33188,
      "old_path": "conformance/BUILD",
      "new_id": "e462ab2af8d0df3b2471b4b8bcbf470f0dbe7aba",
      "new_mode": 33188,
      "new_path": "conformance/BUILD"
    },
    {
      "type": "modify",
      "old_id": "e2976753b4952cee967d9b2efd523e87f025d8d6",
      "old_mode": 33188,
      "old_path": "conformance/binary_json_conformance_suite.cc",
      "new_id": "ce5a81eb1ad839c72110a4b38c9cb37f0184467a",
      "new_mode": 33188,
      "new_path": "conformance/binary_json_conformance_suite.cc"
    },
    {
      "type": "modify",
      "old_id": "2e7d8675643daca7c920005c172de5d6b7623c35",
      "old_mode": 33188,
      "old_path": "conformance/binary_wireformat_test.cc",
      "new_id": "8400986289bed83ab899a9f3e5e0d70161ea9144",
      "new_mode": 33188,
      "new_path": "conformance/binary_wireformat_test.cc"
    },
    {
      "type": "modify",
      "old_id": "50becc0fc4d5cf89adeecfe32302bbdb062b127e",
      "old_mode": 33188,
      "old_path": "conformance/conformance_cpp.cc",
      "new_id": "08a68f70a5db0a60997da21e0ffbe464686e3af2",
      "new_mode": 33188,
      "new_path": "conformance/conformance_cpp.cc"
    },
    {
      "type": "modify",
      "old_id": "a28862bb6131c44ff29673367ba5308f76ca0d9f",
      "old_mode": 33188,
      "old_path": "conformance/conformance_test_runner.cc",
      "new_id": "9d4a8010e1f83a57efa58c80fd30d0dfda123c56",
      "new_mode": 33188,
      "new_path": "conformance/conformance_test_runner.cc"
    },
    {
      "type": "modify",
      "old_id": "3f447a84a56f9ed9eae1041f66f6ad29490efa20",
      "old_mode": 33188,
      "old_path": "conformance/fork_pipe_runner.cc",
      "new_id": "ecd2dbebce5c31e043f985972ecd404fd9988a21",
      "new_mode": 33188,
      "new_path": "conformance/fork_pipe_runner.cc"
    },
    {
      "type": "modify",
      "old_id": "dea9f1a3ec8ee5a4697f1fd00e5241bb4991be7a",
      "old_mode": 33188,
      "old_path": "conformance/fork_pipe_runner.h",
      "new_id": "f06e871c307c3cdcab577461950f2478a483e115",
      "new_mode": 33188,
      "new_path": "conformance/fork_pipe_runner.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "84a6183c776b224989362c5a8c11d0a4862a1410",
      "new_mode": 33188,
      "new_path": "conformance/fork_pipe_runner_posix.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f30e157d4ac0c89daa6946ab72ba2622fa83493",
      "new_mode": 33188,
      "new_path": "conformance/fork_pipe_runner_win32.cc"
    },
    {
      "type": "modify",
      "old_id": "ffa0f0fb4beeed9093c8047929f3654cbd501cf9",
      "old_mode": 33188,
      "old_path": "conformance/test_manager.cc",
      "new_id": "f46bae18dc409132d7718bca0592f5979d9628f5",
      "new_mode": 33188,
      "new_path": "conformance/test_manager.cc"
    },
    {
      "type": "modify",
      "old_id": "cf02463ed5c5cdca564143b7e226370345417d9b",
      "old_mode": 33188,
      "old_path": "conformance/testee_test.cc",
      "new_id": "29e1fd0a6a052cab9e33deeb1a3e42ec9d6f6439",
      "new_mode": 33188,
      "new_path": "conformance/testee_test.cc"
    },
    {
      "type": "modify",
      "old_id": "2081b8650532457f404aa3ac98cbc27005526959",
      "old_mode": 33188,
      "old_path": "src/file_lists.cmake",
      "new_id": "774b8a9acba299f67099dc47fe4678ea2a2ef7ba",
      "new_mode": 33188,
      "new_path": "src/file_lists.cmake"
    }
  ]
}
