)]}'
{
  "log": [
    {
      "commit": "e9ac8e3f2603e0cd006c9395e03c03eddfff1aca",
      "tree": "6ad1464b3baa316823e93f8b3c48c9fe85af8ac8",
      "parents": [
        "ab178fbf24e88bba05ae2b8f1f9876d783e934f6"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 23:33:23 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 28 01:50:40 2026 +0100"
      },
      "message": "Added UUID support in Ruby library\n"
    },
    {
      "commit": "ab178fbf24e88bba05ae2b8f1f9876d783e934f6",
      "tree": "cbf971b39aece232fc9bde5468873bdc109e87af",
      "parents": [
        "55e86e396e63969e3ee735b202b1c1de59c22c88"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Tue Jan 27 09:46:59 2026 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 28 01:29:06 2026 +0100"
      },
      "message": "Support C++ 11 enum class generation via pure_enums\u003denum_class\n\nAdds C++ 11 `enum class` generation to the C++ code generator. When `pure_enums\u003denum_class` is specified, generates strongly-typed enums with proper scoping and type safety.\n\n## Code Generator Changes\n\n**Modified `t_cpp_generator.cc`:**\n- Added `gen_enum_class_` flag parsed from `pure_enums\u003denum_class` option\n- Modified `generate_enum()` to emit `enum class` when both `gen_pure_enums_` and `gen_enum_class_` are set\n- Fixed enum value scoping: use `static_cast\u003cint\u003e(Color::RED)` for array initialization\n- Fixed map operations: cast enum class to int in `find()` calls (no implicit conversion)\n\n**Test infrastructure:**\n- Created `t_cpp_generator_enum_class_tests.cc` with three test cases validating default, `pure_enums`, and `pure_enums\u003denum_class` behavior\n- Extracted common utilities to `t_cpp_generator_test_utils.h` (shared with `private_optional` tests)\n- Added expected output files: `expected_Color_{default,pure_enums,enum_class}.txt`\n\n**Build system:**\n- Added CMake compile-checks for generated code (both `private_optional` and `enum_class`)\n- Unified compile-check blocks with shared Boost detection\n- Ensures generated code compiles as part of standard test build\n\n## Usage\n\n```thrift\nenum Color {\n  RED \u003d 1,\n  GREEN \u003d 2,\n  BLUE \u003d 3\n}\n```\n\n```bash\nthrift --gen cpp:pure_enums\u003denum_class example.thrift\n```\n\nGenerates:\n```cpp\nenum class Color {\n  RED \u003d 1,\n  GREEN \u003d 2,\n  BLUE \u003d 3\n};\n```\n\nBackward compatible - existing behavior unchanged when option absent.\n\n---\n\n- [ ] Did you create an [Apache Jira](https://issues.apache.org/jira/projects/THRIFT/issues/) ticket?  ([Request account here](https://selfserve.apache.org/jira-account.html), not required for trivial changes)\n- [ ] If a ticket exists: Does your pull request title follow the pattern \"THRIFT-NNNN: describe my issue\"?\n- [x] Did you squash your changes to a single commit?  (not required, but preferred)\n- [x] Did you do your best to avoid breaking changes?  If one was needed, did you label the Jira ticket with \"Breaking-Change\"?\n- [ ] If your change does not involve any code, include `[skip ci]` anywhere in the commit message to free up build resources.\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] \u003c198982749+Copilot@users.noreply.github.com\u003e\nCo-authored-by: zsy056 \u003c1074382+zsy056@users.noreply.github.com\u003e"
    },
    {
      "commit": "55e86e396e63969e3ee735b202b1c1de59c22c88",
      "tree": "0b63d72c2f336307dd0aa3bec7a5bb4347496bec",
      "parents": [
        "bec0234fd81d1bcbac7379ad893cfec757bae681"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jan 25 17:32:33 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 28 01:24:14 2026 +0100"
      },
      "message": "Bump lodash from 4.17.21 to 4.17.23\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.17.23\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "bec0234fd81d1bcbac7379ad893cfec757bae681",
      "tree": "0770aa5b628b8715059e9ceff58ec4245008d264",
      "parents": [
        "10d9272600e3577673c84d43bf0e6c4a64918177"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jan 24 14:41:29 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 28 01:23:58 2026 +0100"
      },
      "message": "Bump lodash from 4.17.21 to 4.17.23 in /lib/ts\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.17.23\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "10d9272600e3577673c84d43bf0e6c4a64918177",
      "tree": "2559cd4c2daf21a5cd6f4686e49d9d5b00a72d89",
      "parents": [
        "6f76573602ab08c1b7ca9f6f6973cd4f1fbb3869"
      ],
      "author": {
        "name": "Hasnain Lakhani",
        "email": "m.hasnain.lakhani@gmail.com",
        "time": "Mon Jan 26 10:37:03 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 26 07:37:03 2026 -0800"
      },
      "message": "THRIFT-5916: Enforce recursion depth limit in Java for C++ parity (#3287)\n\nJava had TConfiguration.recursionLimit (default 64) and\nTProtocolException.DEPTH_LIMIT defined but the limit was not actually\nenforced during struct deserialization. This brings Java in line with\nC++ which already enforces recursion limits.\n\nChanges:\n- Add recursionDepth_ counter and increment/decrement methods to TProtocol\n- Modify Java code generator to emit try-finally depth tracking in\n  generate_standard_reader() and generate_java_struct_tuple_reader()\n\nStructures exceeding the configured recursion limit now throw\nTProtocolException(DEPTH_LIMIT) during deserialization."
    },
    {
      "commit": "6f76573602ab08c1b7ca9f6f6973cd4f1fbb3869",
      "tree": "01262c552813b140ee72b668c8bc13abe63d8212",
      "parents": [
        "4f76c3305e08aa482252aaeaf8906b6820dca9ce"
      ],
      "author": {
        "name": "Hasnain Lakhani",
        "email": "m.hasnain.lakhani@gmail.com",
        "time": "Sun Jan 25 01:06:15 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 24 22:06:15 2026 -0800"
      },
      "message": "[c_glib] Fix code generation for sets with typedef element types (#3285)\n\nResolve typedef to underlying type before checking is_base_type() in\ngenerate_deserialize_set_element(), consistent with how\ngenerate_deserialize_map_element() handles this case."
    },
    {
      "commit": "4f76c3305e08aa482252aaeaf8906b6820dca9ce",
      "tree": "a3a3fb5c5aaf6603723b45af33d0788f9224c0ff",
      "parents": [
        "6e5e18180bfe110921d1b20da31b24200819265f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jan 21 23:02:37 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Jan 22 01:43:26 2026 +0100"
      },
      "message": "Bump lodash from 4.17.21 to 4.17.23 in /lib/js\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.17.23\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "6e5e18180bfe110921d1b20da31b24200819265f",
      "tree": "410f245db6d2146b1c63747279e9d0627e23e722",
      "parents": [
        "c3ced62289cff9c0c9cd537d902f00fae894b22e"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 18:20:45 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Jan 22 01:41:32 2026 +0100"
      },
      "message": "Added Ruby library tests to the GitHub workflow\n"
    },
    {
      "commit": "c3ced62289cff9c0c9cd537d902f00fae894b22e",
      "tree": "62fa324a7517ef1c2fdaa2dfdb1362bac9020bdc",
      "parents": [
        "4413220324d7694f8db128cd989822ff728df030"
      ],
      "author": {
        "name": "copilot-swe-agent[bot]",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Tue Nov 18 18:09:06 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Jan 22 01:40:07 2026 +0100"
      },
      "message": " ## cpp: add `private_optional` support (and wire up tests/CI)\n\nAdd a new `cpp:private_optional` generator option for C++ that emits optional fields as private members and provides const getters, enabling stricter encapsulation while preserving access for generated helpers.\n\nTo keep the feature stable and exercised in automation, add fixture-based compiler tests and the minimal build/CI wiring required for those tests to build and run in the workflow (including MSVC).\n\n ### Example generated code (behavior change only, from `TestStruct`)\n\n #### Default (no `cpp:private_optional`): optional fields stay public\n```cpp\npublic:\n  int32_t required_field;\n  int32_t optional_field;\n  std::string optional_string;\n```\n\nWith cpp:private_optional: optional fields become private + const getters\n\n```cpp\npublic:\n  int32_t required_field;\n\n  const int32_t\u0026 __get_optional_field() const { return optional_field; }\n  const std::string\u0026 __get_optional_string() const { return optional_string; }\n\nprivate:\n  int32_t optional_field;\n  std::string optional_string;\n\n  friend void swap(TestStruct \u0026a, TestStruct \u0026b) noexcept;\n  friend std::ostream\u0026 operator\u003c\u003c(std::ostream\u0026 out, const TestStruct\u0026 obj);\n\n```\n"
    },
    {
      "commit": "4413220324d7694f8db128cd989822ff728df030",
      "tree": "503d60c005d3855a566772bff0fea215ada10618",
      "parents": [
        "7eeb1c1665806f08685a6233eddd2cce0eb7ae03"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Tue Dec 16 18:59:18 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Jan 12 00:46:55 2026 +0100"
      },
      "message": "Fixed make check for Ruby library\n"
    },
    {
      "commit": "7eeb1c1665806f08685a6233eddd2cce0eb7ae03",
      "tree": "fc1e868a112d27bf47b2ccbba4f431a80f2cca56",
      "parents": [
        "0d18fb2e97a00fc56997fa059d6819e54cdff64b"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Jan 12 00:36:08 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Jan 12 00:45:05 2026 +0100"
      },
      "message": "deprecate swift bindings for THRIFT-5864\n"
    },
    {
      "commit": "0d18fb2e97a00fc56997fa059d6819e54cdff64b",
      "tree": "5952e8dc1cdb7355f41cdb6cc4267c43a0b914f6",
      "parents": [
        "098c82722bd8bf021f21eb2fdd80a69a8c4b185b"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sat Dec 20 12:13:46 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:40:45 2026 +0100"
      },
      "message": "Only export Init_thrift_native function from the Ruby binary extension\n"
    },
    {
      "commit": "098c82722bd8bf021f21eb2fdd80a69a8c4b185b",
      "tree": "cf15dc9c74395e56ef6f8c4c69ea0efddfb5dfdd",
      "parents": [
        "d9b4d95a1ff68b7ad3df2b3656e3e1a802dc8334"
      ],
      "author": {
        "name": "HTHou",
        "email": "haonan@apache.org",
        "time": "Mon Jan 05 16:12:52 2026 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:31:52 2026 +0100"
      },
      "message": "fix cross test error\n"
    },
    {
      "commit": "d9b4d95a1ff68b7ad3df2b3656e3e1a802dc8334",
      "tree": "0e1b8ed101666d12db8321540f7a23d4ef69afb2",
      "parents": [
        "b5919dd8f797829e1aed9276994394bb9de085d5"
      ],
      "author": {
        "name": "HTHou",
        "email": "haonan@apache.org",
        "time": "Mon Jan 05 14:37:48 2026 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:31:52 2026 +0100"
      },
      "message": "try to fix kotlin cross tests\n"
    },
    {
      "commit": "b5919dd8f797829e1aed9276994394bb9de085d5",
      "tree": "54a0d211010bcc05b49b46380bf77154ac86f742",
      "parents": [
        "dfa0979ebee93588e46d08cd2529e6857ad62f74"
      ],
      "author": {
        "name": "HTHou",
        "email": "haonan@apache.org",
        "time": "Mon Jan 05 12:17:56 2026 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:31:52 2026 +0100"
      },
      "message": "Add async nonblocking ssl support in java client\n"
    },
    {
      "commit": "dfa0979ebee93588e46d08cd2529e6857ad62f74",
      "tree": "f38405e67fafe05e4f2bd03a889f8613c00dffed",
      "parents": [
        "22ffdc79d004ab22f270870db0c9d407a446e914"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jan 01 06:02:50 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:28:08 2026 +0100"
      },
      "message": "Bump jvm from 2.2.21 to 2.3.0 in /lib/kotlin\n\nBumps [jvm](https://github.com/JetBrains/kotlin) from 2.2.21 to 2.3.0.\n- [Release notes](https://github.com/JetBrains/kotlin/releases)\n- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)\n- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: jvm\n  dependency-version: 2.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "22ffdc79d004ab22f270870db0c9d407a446e914",
      "tree": "0c4ccc8acbd0706b1f6d2750f1acbb38a44743c0",
      "parents": [
        "e0d99c91a8dd096f798ed1270495f5b65e933c5a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jan 01 06:01:58 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:27:49 2026 +0100"
      },
      "message": "Bump actions/download-artifact from 6 to 7\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/download-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "e0d99c91a8dd096f798ed1270495f5b65e933c5a",
      "tree": "23c82948e2b2b07df6316f1a6acbbd05f5fb29bb",
      "parents": [
        "b8f24076cd33fdd32df93ee76b1386a00fbd0be8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jan 01 06:01:55 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:24:29 2026 +0100"
      },
      "message": "Bump actions/checkout from 4 to 6\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b8f24076cd33fdd32df93ee76b1386a00fbd0be8",
      "tree": "9c48c46a7699545ed11b4838ef46a14978918260",
      "parents": [
        "2097ed7898b039b53f1fc32cb94728c9de72de13"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jan 01 06:01:45 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:24:06 2026 +0100"
      },
      "message": "Bump actions/upload-artifact from 4 to 6\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2097ed7898b039b53f1fc32cb94728c9de72de13",
      "tree": "7bcdab9cb58fb86d57b58563d94832a1a4f9b6d8",
      "parents": [
        "09475949b9195c070f428c6c48a77690ff80c3f9"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Dec 17 23:00:37 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:15:47 2026 +0100"
      },
      "message": "Added auto-labeling configuration to .github/mergeable.yml\n"
    },
    {
      "commit": "09475949b9195c070f428c6c48a77690ff80c3f9",
      "tree": "943fc07b2afb0ba2b52163894e7357771ff6a956",
      "parents": [
        "bfeb7df761a7d93627b869a77acf811c29849f47"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 16:23:42 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:14:38 2026 +0100"
      },
      "message": "Add TLS support to the benchmark script\n"
    },
    {
      "commit": "bfeb7df761a7d93627b869a77acf811c29849f47",
      "tree": "1515a4b9a5455e10116809529f7f4066923ac3e0",
      "parents": [
        "b8f7e5b3e79b033115ba536b726508f81a237eb8"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Mon Nov 24 20:05:10 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 07 22:10:56 2026 +0100"
      },
      "message": "Addressed discrepancy between accelerated and non-accelerated union implementation\n\nWhen binary extension is not available (for example, in JRuby), Thrift::Union\nthrows an unexpected NoMethodError instead of the intended error:\n\n  1) Union Thrift::Union should raise for wrong set field when hash initialized and type checking is off\n     Failure/Error: expect { Thrift::Serializer.new.serialize(union) }.to raise_error(RuntimeError, \"set_field is not valid for this union!\")\n\n       expected RuntimeError with \"set_field is not valid for this union!\", got #\u003cNoMethodError: undefined method \u0027[]\u0027 for nil\u003e with backtrace:\n         # ./lib/thrift/union.rb:78:in \u0027write\u0027\n         # ./lib/thrift/serializer/serializer.rb:29:in \u0027serialize\u0027\n         # ./spec/union_spec.rb:54:in \u0027block in \u003cmain\u003e\u0027\n         # ./spec/union_spec.rb:54:in \u0027block in \u003cmain\u003e\u0027\n     # ./spec/union_spec.rb:54:in \u0027block in \u003cmain\u003e\u0027\n"
    },
    {
      "commit": "b8f7e5b3e79b033115ba536b726508f81a237eb8",
      "tree": "bd4c63776ba9a19590e92f958451e53ee1bc967a",
      "parents": [
        "f06db1b067ab31e79b13ba7d0a3827c58d6767e1"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 19:29:09 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Dec 16 23:40:45 2025 +0100"
      },
      "message": "Fixed \u0027#to_io gives NilClass\u0027 error\n\nIn a race condition in Thrift::NonblockingServer, the following sequence could occur:\n\n1. server transport checked for closure (@server_transport.closed?\n   returns false)\n2. another thread calls server.shutdown\n3. yet another thread, scheduled from #shutdown, calls #close on the\n   server transport, which also sets @handle to nil\n4. back in the first thread, #to_io is called on the server transport,\n   which now returns @handle as nil, causing an error:\n\n  1) NonblockingServer Thrift::NonblockingServer should shut down when asked\n     Failure/Error: rd, \u003d select([@server_transport], nil, nil, 0.1)\n\n     TypeError:\n       can\u0027t convert SpecServerSocket to IO (SpecServerSocket#to_io gives NilClass)\n     # ./lib/thrift/server/nonblocking_server.rb:48:in `select\u0027\n     # ./lib/thrift/server/nonblocking_server.rb:48:in `block in serve\u0027\n     # ./lib/thrift/server/nonblocking_server.rb:45:in `loop\u0027\n     # ./lib/thrift/server/nonblocking_server.rb:45:in `serve\u0027\n     # ./spec/nonblocking_server_spec.rb:116:in `block (4 levels) in \u003ctop (required)\u003e\u0027\n\nThis patch changes Thrift::ServerSocket#to_io to raise IOError if\n@handle is nil, which is the expected behavior for closed streams in Ruby:\n\n  require \u0027socket\u0027\n  server \u003d TCPServer.new(\u0027localhost\u0027, 55554)\n  server.close\n  select([server], nil, nil, 0.1)\n  # \u003d\u003e IOError: closed stream\n"
    },
    {
      "commit": "f06db1b067ab31e79b13ba7d0a3827c58d6767e1",
      "tree": "6bd61bef517a00defadc9f0291027cf429b5340f",
      "parents": [
        "c77cbd263aa998cb110c8cbb1bb0dca55e8cac07"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Thu Nov 20 18:09:21 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Dec 16 23:40:19 2025 +0100"
      },
      "message": "Remove Fixnum references to support modern Ruby versions\n\nFixnum type has been deprecated since Ruby 2.4 and removed in Ruby 3.0,\nwhich makes BaseProtocol incompatible with modern Ruby versions.\n\nThis change removes the Fixnum reference, as well as a monkey-patch that\nintroduces Fixnum#ord() to Ruby versions below 1.8.7.\n\n**This change essentially makes it officially required to use Ruby 2.4 or newer.**\n\nFixes the following test failures:\n\n  1) BaseProtocol Thrift::BaseProtocol should write out the different types (deprecated write_type signature)\n     Failure/Error: if field_info.is_a? Fixnum\n\n     NameError:\n       uninitialized constant Thrift::BaseProtocol::Fixnum\n     # ./lib/thrift/protocol/base_protocol.rb:256:in \u0027Thrift::BaseProtocol#write_type\u0027\n     # ./spec/base_protocol_spec.rb:65:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n\n  2) BaseProtocol Thrift::BaseProtocol should write out the different types\n     Failure/Error: if field_info.is_a? Fixnum\n\n     NameError:\n       uninitialized constant Thrift::BaseProtocol::Fixnum\n     # ./lib/thrift/protocol/base_protocol.rb:256:in \u0027Thrift::BaseProtocol#write_type\u0027\n     # ./spec/base_protocol_spec.rb:90:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n\n  3) BaseProtocol Thrift::BaseProtocol should read the different types (deprecated read_type signature)\n     Failure/Error: if field_info.is_a? Fixnum\n\n     NameError:\n       uninitialized constant Thrift::BaseProtocol::Fixnum\n     # ./lib/thrift/protocol/base_protocol.rb:296:in \u0027Thrift::BaseProtocol#read_type\u0027\n     # ./spec/base_protocol_spec.rb:113:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n\n  4) BaseProtocol Thrift::BaseProtocol should read the different types\n     Failure/Error: if field_info.is_a? Fixnum\n\n     NameError:\n       uninitialized constant Thrift::BaseProtocol::Fixnum\n     # ./lib/thrift/protocol/base_protocol.rb:296:in \u0027Thrift::BaseProtocol#read_type\u0027\n     # ./spec/base_protocol_spec.rb:136:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n"
    },
    {
      "commit": "c77cbd263aa998cb110c8cbb1bb0dca55e8cac07",
      "tree": "0616f13c9a24d72fc9195f29736aaa2634ff712d",
      "parents": [
        "312cef913cb10a91fcb41ff1fd73f8654b7cff9f"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sat Nov 22 20:20:02 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Dec 16 23:39:48 2025 +0100"
      },
      "message": "Raise an error when nil is sent to binary protocol write operations\n\nCurrently, when accelerated binary protocol is used, and nil is passed to write operations like write_byte, write_i16, write_i32, write_i64, write_double, write_string, or write_binary, the code raises a StandardError with \u0027nil argument not allowed!\u0027 message. Ruby version (non-accelerated) instead raises random exceptions like NoMethodError or TypeError. This behavior is inconsistent with the expectation that a StandardError with the message \u0027nil argument not allowed!\u0027 should be raised.\n\n  1) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil byte\n     Failure/Error: expect { @prot.write_byte(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cNoMethodError: undefined method \u0027\u003c\u0027 for nil\u003e with backtrace:\n         # ./lib/thrift/protocol/binary_protocol.rb:85:in \u0027Thrift::BinaryProtocol#write_byte\u0027\n         # ./spec/binary_protocol_spec_shared.rb:125:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:125:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:125:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n\n  2) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil i16\n     Failure/Error: expect { @prot.write_i16(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cTypeError: no implicit conversion of nil into Integer\u003e with backtrace:\n         # ./lib/thrift/protocol/binary_protocol.rb:90:in \u0027Thrift::BinaryProtocol#write_i16\u0027\n         # ./spec/binary_protocol_spec_shared.rb:144:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:144:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:144:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n\n  3) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil i32\n     Failure/Error: expect { @prot.write_i32(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cNoMethodError: undefined method \u0027\u003c\u0027 for nil\u003e with backtrace:\n         # ./lib/thrift/protocol/binary_protocol.rb:94:in \u0027Thrift::BinaryProtocol#write_i32\u0027\n         # ./spec/binary_protocol_spec_shared.rb:161:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:161:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:161:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n\n  4) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil i64\n     Failure/Error: expect { @prot.write_i64(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cNoMethodError: undefined method \u0027\u003c\u0027 for nil\u003e with backtrace:\n         # ./lib/thrift/protocol/binary_protocol.rb:99:in \u0027Thrift::BinaryProtocol#write_i64\u0027\n         # ./spec/binary_protocol_spec_shared.rb:184:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:184:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:184:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n\n  5) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil double\n     Failure/Error: expect { @prot.write_double(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cTypeError: can\u0027t convert nil into Float\u003e with backtrace:\n         # ./lib/thrift/protocol/binary_protocol.rb:106:in \u0027Thrift::BinaryProtocol#write_double\u0027\n         # ./spec/binary_protocol_spec_shared.rb:197:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:197:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:197:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n\n  6) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil string\n     Failure/Error: expect { @prot.write_string(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cNoMethodError: undefined method \u0027encoding\u0027 for nil\u003e with backtrace:\n         # ./lib/thrift/bytes.rb:79:in \u0027Thrift::Bytes.convert_to_utf8_byte_buffer\u0027\n         # ./lib/thrift/protocol/binary_protocol.rb:110:in \u0027Thrift::BinaryProtocol#write_string\u0027\n         # ./spec/binary_protocol_spec_shared.rb:250:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:250:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:250:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n\n  7) BinaryProtocol it should behave like a binary protocol should error gracefully when trying to write a nil binary\n     Failure/Error: expect { @prot.write_binary(nil) }.to raise_error(StandardError, \u0027nil argument not allowed!\u0027)\n\n       expected StandardError with \"nil argument not allowed!\", got #\u003cNoMethodError: undefined method \u0027bytesize\u0027 for nil\u003e with backtrace:\n         # ./lib/thrift/protocol/binary_protocol.rb:115:in \u0027Thrift::BinaryProtocol#write_binary\u0027\n         # ./spec/binary_protocol_spec_shared.rb:254:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n         # ./spec/binary_protocol_spec_shared.rb:254:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n     Shared Example Group: \"a binary protocol\" called from ./spec/binary_protocol_spec.rb:25\n     # ./spec/binary_protocol_spec_shared.rb:254:in \u0027block (2 levels) in \u003ctop (required)\u003e\u0027\n"
    },
    {
      "commit": "312cef913cb10a91fcb41ff1fd73f8654b7cff9f",
      "tree": "5422e02a52d0f17fa3884cd7e12e73e336ecd4c0",
      "parents": [
        "6e105bf035a0581a977a0558679be802c58982d9"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sun Nov 23 12:35:09 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Dec 16 23:11:24 2025 +0100"
      },
      "message": "Updated Java keys for cross-platform tests\n\nThe truststore and keystore were regenerated using keys in test/keys:\n\n    # keytool does not support \"replace\" operation:\n    keytool -delete \\\n        -alias localhost \\\n        -keystore lib/java/src/crossTest/resources/.truststore \\\n        -storepass thrift\n    keytool -import \\\n        -alias localhost \\\n        -file test/keys/CA.pem \\\n        -keystore lib/java/src/crossTest/resources/.truststore \\\n        -storepass thrift\n\n    # server keystore\n    keytool -importkeystore \\\n        -srckeystore test/keys/server.p12 \\\n        -srcstoretype PKCS12 \\\n        -srcstorepass thrift \\\n        -destkeystore lib/java/src/crossTest/resources/.serverkeystore \\\n        -deststoretype pkcs12 \\\n        -deststorepass thrift\n\n    # client keystore\n    keytool -importkeystore \\\n        -srckeystore test/keys/client.p12 \\\n        -srcstoretype PKCS12 \\\n        -srcstorepass thrift \\\n        -destkeystore lib/java/src/crossTest/resources/.clientkeystore \\\n        -deststoretype pkcs12 \\\n        -deststorepass thrift\n\nJava tests were updated to use separate keystores for client and server.\n"
    },
    {
      "commit": "6e105bf035a0581a977a0558679be802c58982d9",
      "tree": "4fc9f1d2935ccbd5ccce48de5d64d0de1369ccb6",
      "parents": [
        "a635e68257bb4ddd7b0a4210a0d01d41cae14452"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Thu Dec 04 17:14:59 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Dec 14 23:27:38 2025 +0100"
      },
      "message": "TransportException should be raised when Socket is not open instead of IOError\n"
    },
    {
      "commit": "a635e68257bb4ddd7b0a4210a0d01d41cae14452",
      "tree": "1d1bae8e04f88c563cebb412ea7c1660a303e25b",
      "parents": [
        "eb6eb85c45e823b33a5bb5368f29cebb9db1a8dc"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 18:52:54 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Dec 14 23:20:25 2025 +0100"
      },
      "message": "Removed base64 and added logger as an explicit add_dependency\n\nStarting with Ruby 3.4, base64 is no longer a bundled gem, and now Thrift does not load in modern Ruby versions:\n\n    An error occurred while loading ./spec/types_spec.rb.\n\n    Failure/Error: require \u0027base64\u0027\n\n    LoadError:\n      cannot load such file -- base64\n    # ./lib/thrift/protocol/json_protocol.rb:21:in \u0027\u003ctop (required)\u003e\u0027\n    # ./lib/thrift.rb:45:in \u0027\u003ctop (required)\u003e\u0027\n    # ./spec/spec_helper.rb:30:in \u0027\u003ctop (required)\u003e\u0027\n    # ./spec/types_spec.rb:20:in \u0027\u003ctop (required)\u003e\u0027\n\nRuby already has ability to serialize and deserialize base64 without requiring the base64 gem,\nwhich is a thin wrapper for syntactic sugar.\n\nAdditionally, the code throws a warning at the moment, which will become an error in Ruby 3.5:\n\n    /code/lib/thrift/processor.rb:20: warning: logger was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0.\n    You can add logger to your Gemfile or gemspec to silence this warning.\n\nAdded logger as an explicit dependency to avoid this warning.\n"
    },
    {
      "commit": "eb6eb85c45e823b33a5bb5368f29cebb9db1a8dc",
      "tree": "c6865ca3a7c61c6c16aa7f44984495803fd7881d",
      "parents": [
        "497c1dd82e8c597927f40e376738981d6582aef1"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sat Nov 22 20:03:19 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Dec 14 23:17:57 2025 +0100"
      },
      "message": "Fixed Thrift::TypeError exception in specs\n\nAn error occurs while running specs, that changes the behavior of the system under test, leading to false positive:\n\n   NonblockingServer\n   Thrift::NonblockingServer\n   #\u003cThread:0x0000ffff67b9f138 /code/lib/rb/spec/nonblocking_server_spec.rb:147 run\u003e terminated with exception (report_on_exception is true):\n   /code/lib/rb/lib/thrift/types.rb:69:in \u0027Thrift.check_type\u0027: Expected Types::DOUBLE, received Integer for field seconds (Thrift::TypeError)\n          from /code/lib/rb/lib/thrift/struct.rb:157:in \u0027block in SpecNamespace::NonblockingService::Sleep_args#field_accessor\u0027\n          from /code/lib/rb/lib/thrift/client.rb:41:in \u0027block in Thrift::Client#send_message_args\u0027\n          from /code/lib/rb/lib/thrift/client.rb:40:in \u0027Hash#each\u0027\n          from /code/lib/rb/lib/thrift/client.rb:40:in \u0027Thrift::Client#send_message_args\u0027\n          from /code/lib/rb/lib/thrift/client.rb:30:in \u0027Thrift::Client#send_message\u0027\n          from /code/lib/rb/spec/gen-rb/nonblocking_service.rb:75:in \u0027SpecNamespace::NonblockingService::Client#send_sleep\u0027\n          from /code/lib/rb/spec/gen-rb/nonblocking_service.rb:70:in \u0027SpecNamespace::NonblockingService::Client#sleep\u0027\n          from /code/lib/rb/spec/nonblocking_server_spec.rb:160:in \u0027block in RSpec::ExampleGroups::NonblockingServer::ThriftNonblockingServer#setup_client_thread\u0027\n   should kill active messages when they don\u0027t expire while shutting down\n\nWhen an integer 10 is sent to \"sleep\", instead of actually sleeping an error happens, and the method never called, leading to no record of the method execution recorded in the result. Which is the same expectation is if the method call was aborted in the middle.\n"
    },
    {
      "commit": "497c1dd82e8c597927f40e376738981d6582aef1",
      "tree": "df728263c14b37e6c0576a3ba6555e96bc43fcbf",
      "parents": [
        "b940d1229b2bb2faf4307489bbf9e705e57633b9"
      ],
      "author": {
        "name": "Sutou Kouhei",
        "email": "kou@clear-code.com",
        "time": "Fri Aug 08 16:19:10 2025 +0900"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Dec 11 23:10:08 2025 +0100"
      },
      "message": "THRIFT-3268: Suppress gnu-zero-variadic-macro-arguments warnings\n\nClient: cpp\n\nWe can reproduce these warnings by:\n\n    CC\u003dclang CXX\u003dclang++ \\\n      cmake \\\n        -S . \\\n        -B ../thrift.build \\\n        -DWITH_{AS3,JAVA,JAVASCRIPT,NODEJS,PYTHON,C_GLIB}\u003dOFF \\\n        -DCMAKE_CXX_FLAGS\u003d\"-Wgnu-zero-variadic-macro-arguments\"\n    cmake --build ../thrift.build\n\nSample warning:\n\n    lib/cpp/src/thrift/TLogging.h:119:13: warning: token pasting of \u0027,\u0027 and __VA_ARGS__ is a GNU extension [-Wgnu-zero-variadic-macro-arguments]\n      119 |             ##__VA_ARGS__);                                                                        \\\n          |             ^\n"
    },
    {
      "commit": "b940d1229b2bb2faf4307489bbf9e705e57633b9",
      "tree": "991bc3580ad3bb64c1f0b13503c1919c68fc7770",
      "parents": [
        "230d0a96a2757b978545ebc4b2969a987476b846"
      ],
      "author": {
        "name": "dengzh",
        "email": "dengzhhu653@gmail.com",
        "time": "Mon May 26 09:01:02 2025 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Dec 11 23:08:48 2025 +0100"
      },
      "message": "THRIFT-5863: Make TServerTransport able to customize the max message size\n"
    },
    {
      "commit": "230d0a96a2757b978545ebc4b2969a987476b846",
      "tree": "e794dd489316111eb5c031523d8e69c378f1019f",
      "parents": [
        "56f9772a2663c4113de006122a1d096afe107ebd"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Wed Nov 12 00:08:50 2025 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Dec 10 23:46:25 2025 +0100"
      },
      "message": "Refresh windows docker setup\n"
    },
    {
      "commit": "56f9772a2663c4113de006122a1d096afe107ebd",
      "tree": "1fdb97b68c0da235300b459adfce3c284b715c49",
      "parents": [
        "1eaa9a41f0aa1c3ef9d61a3269ac2a00eeae2f0a"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Tue Nov 25 14:49:23 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Dec 10 23:45:49 2025 +0100"
      },
      "message": "Inconsistent UUID constants compilation for aliased types\nFor aliased types, UUID constants retain their curly braces, while\ndirect UUID constants do not:\n\n    typedef uuid myUUID\n    const uuid GEN_UUID \u003d  \u002700000000-4444-CCCC-ffff-0123456789ab\u0027\n    const uuid GEN_GUID \u003d \u0027{00112233-4455-6677-8899-aaBBccDDeeFF}\u0027\n    const myUUID MY_UUID \u003d  \u002700000000-4444-CCCC-ffff-0123456789ab\u0027\n    const myUUID MY_GUID \u003d \u0027{00112233-4455-6677-8899-aaBBccDDeeFF}\u0027\n\nWhen uuid is compiled, it produces a string without curly braces, but\nfor alias myUUID the curly braces stay:\n\n    GEN_UUID \u003d %q\"00000000-4444-CCCC-ffff-0123456789ab\"\n    GEN_GUID \u003d %q\"00112233-4455-6677-8899-aaBBccDDeeFF\"\n    MY_UUID \u003d %q\"00000000-4444-CCCC-ffff-0123456789ab\"\n    MY_GUID \u003d %q\"{00112233-4455-6677-8899-aaBBccDDeeFF}\"\n\nThis change ensures that the type is properly resolved to its true type\nbefore validation, resulting in consistent handling of UUID constants\nregardless of whether they are defined using the base type or an alias.\n"
    },
    {
      "commit": "1eaa9a41f0aa1c3ef9d61a3269ac2a00eeae2f0a",
      "tree": "2f63f5bdd234136dd14cf0be70588eccd07995e1",
      "parents": [
        "dee782f410c5d20ceb745d2b840ce447f6d4b7b1"
      ],
      "author": {
        "name": "Martin Haimberger",
        "email": "martin.haimberger@gmail.com",
        "time": "Fri Nov 28 23:21:06 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Dec 10 22:57:59 2025 +0100"
      },
      "message": "- THRIFT-5712 - Added Dart 3 Compatibility\n"
    },
    {
      "commit": "dee782f410c5d20ceb745d2b840ce447f6d4b7b1",
      "tree": "5d387d19481f4154d2ae0f0304d86d1d844deea3",
      "parents": [
        "c630d8fb043fc45554c18602e97023feda2d12fc"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 13:18:53 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Dec 10 22:53:01 2025 +0100"
      },
      "message": "THRIFT-5885 Fix enum generation\nClient: py\nPatch: Carel Combrink\n\nThis closes #3232\n"
    },
    {
      "commit": "c630d8fb043fc45554c18602e97023feda2d12fc",
      "tree": "7fcabef79f6e2a45021b781f0e57a0d751229499",
      "parents": [
        "5cb828f4b1a61357894f58f1dbbe429972c914a6"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Nov 21 21:35:02 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Dec 10 22:04:46 2025 +0100"
      },
      "message": "Updated gemspec to include metadata (repository, changelog), and cleaned deprecated properties\n\nRemoved deprecated rubyforge_project property\n  WARNING:  rubyforge_project\u003d is deprecated and ignored. Please remove this from your gemspec to ensure that your gem continues to build in the future.\n  WARNING:  See https://guides.rubygems.org/specification-reference/ for help\n\nAdded metadata fields, displayed on the RubyGems page. See https://rubygems.org/gems/activeadmin for example:\n  - source_code_uri\n  - changelog_uri\n  - bug_tracker_uri\n  - documentation_uri\n  - mailing_list_uri\n  - homepage_uri\n\n[skip ci]\n"
    },
    {
      "commit": "5cb828f4b1a61357894f58f1dbbe429972c914a6",
      "tree": "f8bb64a8f3b4d8503d12f509eb41a3862dd72211",
      "parents": [
        "5c2183db399fdf72d4aab7eb5a4bdb4c82c2d2a0"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 18:40:19 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Dec 02 23:13:18 2025 +0100"
      },
      "message": "Rack response needs to be finished when returned from the Rack application\n\nThis merge request addresses the following test failures:\n\n```\n  1) Thrift::ThinHTTPServer::RackApplication 404 response receives a non-POST\n     Failure/Error: expect(last_response.status).to be 404\n\n       expected #\u003cInteger:809\u003e \u003d\u003e 404\n            got #\u003cInteger:1001\u003e \u003d\u003e 500\n\n       Compared using equal?, which compares object identity,\n       but expected and actual are not the same object. Use\n       `expect(actual).to eq(expected)` if you don\u0027t care about\n       object identity in this example.\n     # ./spec/thin_http_server_spec.rb:102:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n\n  2) Thrift::ThinHTTPServer::RackApplication 404 response receives a header other than application/x-thrift\n     Failure/Error: expect(last_response.status).to be 404\n\n       expected #\u003cInteger:809\u003e \u003d\u003e 404\n            got #\u003cInteger:1001\u003e \u003d\u003e 500\n\n       Compared using equal?, which compares object identity,\n       but expected and actual are not the same object. Use\n       `expect(actual).to eq(expected)` if you don\u0027t care about\n       object identity in this example.\n     # ./spec/thin_http_server_spec.rb:108:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n\n  3) Thrift::ThinHTTPServer::RackApplication 200 response status code 200\n     Failure/Error: expect(last_response.ok?).to be_truthy\n\n       expected: truthy value\n            got: false\n     # ./spec/thin_http_server_spec.rb:135:in \u0027block (3 levels) in \u003ctop (required)\u003e\u0027\n```\n\nFrom the [Rack documentation](https://rack.github.io/rack/2.2/Rack/Response.html),\n\n\u003e Your application’s call should end returning [Response#finish](https://rack.github.io/rack/2.2/Rack/Response.html#method-i-finish).\n\nAdditionally:\n* using identity checks on integers produces weird expectation \"expected #\u003cInteger:809\u003e \u003d\u003e 404\", which is not necessary. Switched to using `eq` matcher\n* `be_truthy` matcher is overly generic and identity matching on `true`/`false` is preferred: \"expected true\" output will be displayed on failure\n"
    },
    {
      "commit": "5c2183db399fdf72d4aab7eb5a4bdb4c82c2d2a0",
      "tree": "3c6b137cbdfb1e28f12920c0965b2715e6b51c31",
      "parents": [
        "9aa75fb5d5e96e8fb0b3afb38bcb057626f9b40b"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Thu Nov 13 13:21:07 2025 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Dec 02 22:57:04 2025 +0100"
      },
      "message": "Make generated C++ code compilable with C++/CLI in MSVC\nClient: cpp\nPatch: Shaoyu Zhang\n\nThis closes #3234\n"
    },
    {
      "commit": "9aa75fb5d5e96e8fb0b3afb38bcb057626f9b40b",
      "tree": "4dfcb621a7a2f911e9cf10621018c2d93b48c9d1",
      "parents": [
        "d92b1ae5d53c65d5dc80caa9fe636fd82acb9c72"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Mon Dec 01 17:15:07 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Dec 02 22:41:20 2025 +0100"
      },
      "message": "Commit Gemfile.lock for reproducible tests\n\nAddressed a syntax error in the thrift.gemspec, and committed\nGemfile.lock files for both the gem and tests. Gems source switched\nto https://rubygems.org.\n\nThis is a strongly recommended approach according to the Bundler team:\n\n\u003e As a result, you SHOULD check your Gemfile.lock into version control,\n\u003e in both applications and gems. If you do not, every machine that\n\u003e checks out your repository (including your production server) will\n\u003e resolve all dependencies again, which will result in different\n\u003e versions of third-party code being used if any of the gems in the\n\u003e Gemfile(5) or any of their dependencies have been updated.\nhttps://bundler.io/man/bundle-install.1.html#THE-GEMFILE-LOCK\n\nAlso helps with Dependabot, which will be able to bump the lock file,\nwhile we can relax version requirements in the gemspec.\n"
    },
    {
      "commit": "d92b1ae5d53c65d5dc80caa9fe636fd82acb9c72",
      "tree": "fec1f7f46de4aa7f48833602b2e20eb9a3396360",
      "parents": [
        "4c5a7b047a124b52831c4942c03679c7e20a178f"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:16:46 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:16:46 2025 +0100"
      },
      "message": "Fix: Error: thrift/simple_server.go:27:2: \"net\" imported and not used\n"
    },
    {
      "commit": "4c5a7b047a124b52831c4942c03679c7e20a178f",
      "tree": "c8048f9c2e303fd816321cd2077e47c20ee4b2c8",
      "parents": [
        "3aab90213385d2911d9932effd84c7e8f35384cd"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:11:12 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:11:12 2025 +0100"
      },
      "message": "Fix Dependabot alert #132\n"
    },
    {
      "commit": "3aab90213385d2911d9932effd84c7e8f35384cd",
      "tree": "bec25d76f57f875cebc12cad1802161f1c62753e",
      "parents": [
        "cadf5117610517dcda71e4b86a6114e78a8d7e0b"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:09:07 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:09:07 2025 +0100"
      },
      "message": "Fix Dependabot alert #140\n"
    },
    {
      "commit": "cadf5117610517dcda71e4b86a6114e78a8d7e0b",
      "tree": "11501e148d7137a7189e5ea35fad1e1970baf08f",
      "parents": [
        "010027bbe77e2ad21e2ca58ebaa131b1279483f3"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:06:42 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 23:06:54 2025 +0100"
      },
      "message": "Fix Dependabot alert #132\n"
    },
    {
      "commit": "010027bbe77e2ad21e2ca58ebaa131b1279483f3",
      "tree": "df1c69d6d22d754093542116dc33e6c9a9e323b3",
      "parents": [
        "6d04f12df6d4a218410639a46b8d902b93f88244"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 22:57:08 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 22:57:33 2025 +0100"
      },
      "message": "Fix for Dependabot alerts #151 and #152\n"
    },
    {
      "commit": "6d04f12df6d4a218410639a46b8d902b93f88244",
      "tree": "53988b2005f8dcfb9b027a2219d2d91d95fa0e9e",
      "parents": [
        "4a21581f78c38ef5077cb8a0d8013727e4d56165"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sun Nov 30 10:14:54 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:52:33 2025 +0100"
      },
      "message": "Fix CMake boost linking issue on AppVeyor MINGW\n"
    },
    {
      "commit": "4a21581f78c38ef5077cb8a0d8013727e4d56165",
      "tree": "acff354e4d5dbba406004910a96b36b16b530faf",
      "parents": [
        "d925d34911b49825727f035e47a9db627fd92e7d"
      ],
      "author": {
        "name": "Jun.S.Shen",
        "email": "jun.s.shen@oracle.com",
        "time": "Fri Nov 17 23:28:25 2023 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 22:40:03 2025 +0100"
      },
      "message": "enforce to close accepted connection after processing\nClient: go\nPatch: Jun.S.Shen \u003cjun.s.shen@oracle.com\n\nThis closes #2883\n"
    },
    {
      "commit": "d925d34911b49825727f035e47a9db627fd92e7d",
      "tree": "eefecbe740c47a5590a3282547c7be7248c4f307",
      "parents": [
        "be7a9e50eeea9315ea17b7fd21fa0a2e357fa402"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sun Nov 30 17:29:12 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:33:35 2025 +0100"
      },
      "message": "Fix spurious wakeups in ThreadManager test sleep\n\nThe ThreadManager load test used Monitor::wait() to sleep, which can return early on spurious wakeups. That occasionally produced zero-duration tasks and tripped the `delta \u003e 0` assertion in CI. Switching the test helper to `std::this_thread::sleep_for` makes the sleep deterministic and stops the intermittent assertion failure.\n"
    },
    {
      "commit": "be7a9e50eeea9315ea17b7fd21fa0a2e357fa402",
      "tree": "ff56014fe5f0fcee5f5678f1238bf5b23c777892",
      "parents": [
        "1646c0492bf09a6a4dc7b7b02fd5d11e64007a7a"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Fri Nov 07 09:27:39 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:30:46 2025 +0100"
      },
      "message": "Put back Windows shared lib building\n"
    },
    {
      "commit": "1646c0492bf09a6a4dc7b7b02fd5d11e64007a7a",
      "tree": "d9fa10d114ffc974819ca64e2ef4f010896a3645",
      "parents": [
        "0835277ec274c300bf8935649132d623a93ab172"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 03 12:59:21 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:30:46 2025 +0100"
      },
      "message": "Moving the body of setManualOpenSSLInitialization() to the cpp file\n\nSee the comment made in here where it was suggested but never done: https://github.com/apache/thrift/pull/1714#issuecomment-2459192022\n"
    },
    {
      "commit": "0835277ec274c300bf8935649132d623a93ab172",
      "tree": "44c34d58946db49ba2b0d1f08b7a37375c9f3456",
      "parents": [
        "58d385eee256e5bd59ed1bc9e5e85aaf3e748cef"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 03 12:15:06 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:30:46 2025 +0100"
      },
      "message": "THRIFT-5898: Replace global variable with a singleton getter\nClient: cpp\n"
    },
    {
      "commit": "58d385eee256e5bd59ed1bc9e5e85aaf3e748cef",
      "tree": "136adeb16aa3dc6dd0f3d3da738f793de9a3d829",
      "parents": [
        "5b53b554a3ac6faff70081d541680fbcec55fbb7"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Sat Aug 29 11:13:41 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Dec 01 22:17:49 2025 +0100"
      },
      "message": "Supplement Jsonprotocol module testcase\nClient: rb\nPatch: Zezeng Wang\n\nThis closes #2223\n"
    },
    {
      "commit": "5b53b554a3ac6faff70081d541680fbcec55fbb7",
      "tree": "5fbbb7a3494f6775c51034ddfda1661c9c90bef1",
      "parents": [
        "3364b4ac563872b40c91d7843f6d0971d84979ec"
      ],
      "author": {
        "name": "Hongxu Jia",
        "email": "hongxu.jia@windriver.com",
        "time": "Thu Nov 20 11:43:45 2025 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:13:30 2025 +0100"
      },
      "message": "support reproducible builds\n\nIn order to support reproducible builds [1], while using bison to generate\nsource code, add COMPILE_FLAGS --file-prefix-map [2] to remove build path\nprefix and source path prefix in the generated header file.\n\n[1] https://reproducible-builds.org/\n[2] https://cgit.git.savannah.gnu.org/cgit/bison.git/commit/?id\u003ddd878d18519689c7bbcd72de4c9f9e53085a3cbf\n\nSigned-off-by: Hongxu Jia \u003chongxu.jia@windriver.com\u003e\n"
    },
    {
      "commit": "3364b4ac563872b40c91d7843f6d0971d84979ec",
      "tree": "3f7957bdb5a6b01a501e8789853f4ae865621044",
      "parents": [
        "724b038b9fbd81a2f0e7c4b66c5c8546bbd99ce9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Dec 01 06:43:18 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:04:33 2025 +0100"
      },
      "message": "Bump com.diffplug.spotless from 8.0.0 to 8.1.0 in /lib/kotlin\n\nBumps com.diffplug.spotless from 8.0.0 to 8.1.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.diffplug.spotless\n  dependency-version: 8.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "724b038b9fbd81a2f0e7c4b66c5c8546bbd99ce9",
      "tree": "1c3a9fe0067d7f45f6caf846beba23a42304c5a9",
      "parents": [
        "d90f2bb1e87252613c642d632395a65d3e8835f6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Dec 01 06:29:44 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:04:10 2025 +0100"
      },
      "message": "Bump actions/setup-python from 3 to 6\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 6.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v3...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d90f2bb1e87252613c642d632395a65d3e8835f6",
      "tree": "5e036ffba9b17f274f8afcfead3a5b68b8e5261b",
      "parents": [
        "55bc35f5d581f61f8dac816eb17493911ff8e75a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Dec 01 06:29:38 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Mon Dec 01 22:03:38 2025 +0100"
      },
      "message": "Bump actions/checkout from 3 to 6\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 3 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v3...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "55bc35f5d581f61f8dac816eb17493911ff8e75a",
      "tree": "fea3daf5c7500bd7d99051e11f95609cbb739e86",
      "parents": [
        "a6ee3c0b1d0e7fcbaa439c573e370fa129e3c7b5"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Tue Nov 25 13:59:16 2025 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Nov 28 22:59:13 2025 +0100"
      },
      "message": "fix py ext windows build\n"
    },
    {
      "commit": "a6ee3c0b1d0e7fcbaa439c573e370fa129e3c7b5",
      "tree": "af234013bdc9a2575d9b7dbfe156e1f62c0d105e",
      "parents": [
        "c5a371280cc89a927e7278486233b16b189c6e9e"
      ],
      "author": {
        "name": "David Heejong Park",
        "email": "hee.jong.park@dnv.com",
        "time": "Tue Nov 04 07:20:28 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Nov 23 14:56:06 2025 +0100"
      },
      "message": "Reset consumed message size after reading from buffer\n"
    },
    {
      "commit": "c5a371280cc89a927e7278486233b16b189c6e9e",
      "tree": "de3393932b6d7b57eae7283923c700aafe8b6588",
      "parents": [
        "ac3feed1b24389efbc0865b742be1854be0406dc"
      ],
      "author": {
        "name": "Lysandros Nikolaou",
        "email": "lisandrosnik@gmail.com",
        "time": "Fri Jul 25 15:11:44 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Nov 23 14:52:12 2025 +0100"
      },
      "message": "THRIFT-5888 Do not dynamically enable the GIL under free-threaded Python\nClient: py\nPatch: Lysandros Nikolaou\n\nThis closes #3180\n"
    },
    {
      "commit": "ac3feed1b24389efbc0865b742be1854be0406dc",
      "tree": "f9d87c81d249645f42086cf62d261413fd04f995",
      "parents": [
        "10d5a65d1a6c0308145352f31157628b9643c942"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Sep 17 09:53:02 2024 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Nov 23 14:43:12 2025 +0100"
      },
      "message": "Fix python compiler generated all_structs with type_hints\n\nCurrently with type_hints enabled, we do not explicitly declare the type\nof generated all_structs. It\u0027s meant to be a list of different types,\nbut that will cause problems, as the generated code is usually like\nthis:\n\n    all_structs \u003d []\n    ...\n    all_structs.append(Type1)\n    ...\n    all_structs.append(Type2)\n    ...\n\nThe first append infers the type of all_struct to be list[Type1], so\nmypyc would start complaining from the 2nd append as the type is\nunexpected.\n\nExplicitly declare all_struct to be list[typing.Any] instead, which\nfixes the issue.\n"
    },
    {
      "commit": "10d5a65d1a6c0308145352f31157628b9643c942",
      "tree": "5f4a890b2ed09b7e82fa739d1bcd8ae2cf5819c3",
      "parents": [
        "120d496dbdb8aa6bd2cbc9586af81946b5b2e057"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 15:24:32 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Nov 21 17:42:52 2025 +0100"
      },
      "message": "ruby: Set TCP_NODELAY on accepted sockets\n"
    },
    {
      "commit": "120d496dbdb8aa6bd2cbc9586af81946b5b2e057",
      "tree": "2b7183f0054ca05c37808573d577155f59d4e245",
      "parents": [
        "5abe53feaf598e40ab84eb259399113a79461791"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Nov 20 22:13:24 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 23:17:42 2025 +0100"
      },
      "message": "Bump js-yaml from 3.14.1 to 3.14.2 in /lib/ts\n\nBumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.\n- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)\n\n---\nupdated-dependencies:\n- dependency-name: js-yaml\n  dependency-version: 3.14.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5abe53feaf598e40ab84eb259399113a79461791",
      "tree": "ba1bfe81c2004d18b072090ef24816cf306151ba",
      "parents": [
        "f274d9891fc042bac06f28f51ab5901b9077a0da"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Thu Nov 13 06:16:41 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 20 23:12:02 2025 +0100"
      },
      "message": "Thrift-5900: Fix Tests for Python 3.14\nClient: py\nPatch: Carel Combrink\n\nThis closes #3239\n\n- Disclaimer: Claude came up with this\n- Python 3.14 made files explicitly unpicklable for reasons\n- The out can\u0027t be pickled in SummaryReporter\n- stop in TestDispatcher is an instance method that should not be captured\n\nDelay the imports to where they are needed\n\n- Claude believes this is due to the way that the server is called vs the client is called and the server does not have enough time to set up completely\n\nAttempt to fix issue with python 3.14\n\n- Looks like python is getting more strict about scoping\n- Decided to go with a local option instead of global or module variable\n"
    },
    {
      "commit": "f274d9891fc042bac06f28f51ab5901b9077a0da",
      "tree": "9452b3a480a762ea8a0dfabd88318f24dd3d74cd",
      "parents": [
        "32b80f6292b591fe2b77d3070dbade91b0fdfd58"
      ],
      "author": {
        "name": "Tdxdxoz",
        "email": "tdxdxoz@gmail.com",
        "time": "Tue Sep 26 12:52:05 2023 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 22:56:34 2025 +0100"
      },
      "message": "enable TCP_NODELAY for rust client channel\n"
    },
    {
      "commit": "32b80f6292b591fe2b77d3070dbade91b0fdfd58",
      "tree": "89d72c060457ec36781f7d25b8533fd401f40af1",
      "parents": [
        "1e17c93555b680d4719ba61965c088590a2053dd"
      ],
      "author": {
        "name": "Amos Bird",
        "email": "amosbird@gmail.com",
        "time": "Fri Jun 30 15:30:28 2023 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 22:55:25 2025 +0100"
      },
      "message": "THRIFT-5720: Encode binary args in Python remote\n"
    },
    {
      "commit": "1e17c93555b680d4719ba61965c088590a2053dd",
      "tree": "1964a9a00a8c0fa87cf886dbd9aae8fcde92ed82",
      "parents": [
        "5b096a00027582983f1ae141a4bbf4eed806c310"
      ],
      "author": {
        "name": "George Koehler",
        "email": "kernigh@gmail.com",
        "time": "Mon Feb 06 18:08:05 2023 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 22:52:36 2025 +0100"
      },
      "message": "rewrite the endian conversion to fix a big-endian host\nClient: py\n\nChange htolell(dub) to htolell(transfer.t) in compact.h, because the\nconversion takes a long long, not a double.  This matters on a\nbig-endian host, where the conversion must swap bytes.\n\nThe big-endian letohll(n) failed because ntohl(n) is just n, doesn\u0027t\nswap n.  Rewrite ntohll(n) and letohll(n) to use the same code with\nboth big-endian and little-endian hosts.  Expect the compiler to\noptimize away one of ntohll(n) or letohll(n) when it doesn\u0027t swap n.\n"
    },
    {
      "commit": "5b096a00027582983f1ae141a4bbf4eed806c310",
      "tree": "fd6cb88d32d3f11e099074e1dafe78153a68bd7f",
      "parents": [
        "4f89bfdeeb900e2d64bf5c5f726b78d8591593cc"
      ],
      "author": {
        "name": "Maarten Pronk",
        "email": "git@evetion.nl",
        "time": "Sun Sep 11 17:36:39 2022 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 20 22:44:28 2025 +0100"
      },
      "message": "Lowercased all MinGW headers.\nPatch: Maarten Pronk\n\nThis closes #2649\n"
    },
    {
      "commit": "4f89bfdeeb900e2d64bf5c5f726b78d8591593cc",
      "tree": "0c5ac7dc955658cf7bad5536c73613ee392a84af",
      "parents": [
        "80279b551a8f86c5085afedd454e26611d5b3cba"
      ],
      "author": {
        "name": "pspeter",
        "email": "peter.schmidbauer@oebb.at",
        "time": "Wed Apr 13 14:44:30 2022 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 20 22:34:53 2025 +0100"
      },
      "message": "Fix bug in Python\u0027s THttpClient proxy handling\nClient: py\nPatch: Peter Schmidbauer\n\nThis closes #2565\n\nFix conversion to str without including quotes\n\nEnsure return type is str in Py2 and 3\n\nIn Python2, str(cr) returns a cr unchanged, since it is already a str. In Python3, \u0027cr\u0027 is a binary array (like str in Python2), but we cannot concat a str with a bin in Py3. Therefore, we convert it to str using str(cr), before concatenating it with \u0027Basic \u0027.\nFix bug in THttpClient proxy handling\n"
    },
    {
      "commit": "80279b551a8f86c5085afedd454e26611d5b3cba",
      "tree": "3914dd15a94455e188e2e60e878143ce39cb1209",
      "parents": [
        "2d8546837cb3f55df4c1724cdfe7b42badbb2dbe"
      ],
      "author": {
        "name": "Francisco Ayala Le Brun",
        "email": "frankxlebrun@gmail.com",
        "time": "Sat Apr 23 15:03:30 2022 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 20 22:32:26 2025 +0100"
      },
      "message": "THRIFT-5559: Make handler public in Rust codegen\nClient: rs\nPatch: Francisco Ayala Le Brun\n\nThis closes #2586\n"
    },
    {
      "commit": "2d8546837cb3f55df4c1724cdfe7b42badbb2dbe",
      "tree": "ee2252494f0415ffb6f66b60fbebbf46378ed444",
      "parents": [
        "0c7833caaa38b0baaf305c047d724dd5b878c93e"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 20 22:20:57 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 20 22:20:57 2025 +0100"
      },
      "message": "Reverted, breaks CI\n\nRevert \"use ok_or_else\"\nThis reverts commit 0c7833caaa38b0baaf305c047d724dd5b878c93e.\n\nRevert \"check overflow on reading field id\"\nThis reverts commit 49fe0e2a7c13417719409e90f65c92ac5ed88ebd.\n"
    },
    {
      "commit": "0c7833caaa38b0baaf305c047d724dd5b878c93e",
      "tree": "f67e93594d1d0a0172cfea89ffab5f28ead37c4e",
      "parents": [
        "49fe0e2a7c13417719409e90f65c92ac5ed88ebd"
      ],
      "author": {
        "name": "Jinpeng",
        "email": "zjpzlz@163.com",
        "time": "Wed Nov 19 23:59:22 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 22:16:20 2025 +0100"
      },
      "message": "use ok_or_else"
    },
    {
      "commit": "49fe0e2a7c13417719409e90f65c92ac5ed88ebd",
      "tree": "448f5ae3845c5735ee1125f11b2f40d933481890",
      "parents": [
        "f8ce26cd422f743493423da58591dd5ef1142bdb"
      ],
      "author": {
        "name": "Jinpeng",
        "email": "zjpzlz@163.com",
        "time": "Thu Dec 12 17:31:29 2024 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 22:16:20 2025 +0100"
      },
      "message": "check overflow on reading field id"
    },
    {
      "commit": "f8ce26cd422f743493423da58591dd5ef1142bdb",
      "tree": "ee2252494f0415ffb6f66b60fbebbf46378ed444",
      "parents": [
        "d804bd1c1fc9d790a0b1cf29a4ffdb24ecd8b1ab"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Wed Nov 12 14:24:55 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Fix issue with deprecated function in test\n\n- assert_   was removed in Python 3 and later removed\n- Fixed the script to error out correctly when the tests fail\n   - The RunClientServer.py test did not fail as expected on this error\n"
    },
    {
      "commit": "d804bd1c1fc9d790a0b1cf29a4ffdb24ecd8b1ab",
      "tree": "fd697c6ca0269dac3469190f2191a5214d336e2b",
      "parents": [
        "20a90bf9ffcbddf9e77dcdefde1182a2d51e986a"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Wed Nov 12 07:16:31 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Reworked the local_libpath() using the code form _import_local_thrift\n\n- Common problem, common code\n"
    },
    {
      "commit": "20a90bf9ffcbddf9e77dcdefde1182a2d51e986a",
      "tree": "030656903dbdd3892021fc18940be622dc8b1fc3",
      "parents": [
        "9f96b485f78b9d5405c57b354b85e99d222646f9"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Nov 11 13:56:57 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Also skip the type_hints and enum tests\n"
    },
    {
      "commit": "9f96b485f78b9d5405c57b354b85e99d222646f9",
      "tree": "683469b52845a6401975ed02627d19e7ba620ca6",
      "parents": [
        "f2534ad343d165ec37201f635002bcb007ba16b3"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Nov 11 13:36:06 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Skip ssl tests\n\n- See https://issues.apache.org/jira/browse/THRIFT-5901\n"
    },
    {
      "commit": "f2534ad343d165ec37201f635002bcb007ba16b3",
      "tree": "74af7b6d76fd6edec40dba562fd71259979ee32b",
      "parents": [
        "eec3fbb10df4e2be89d00f5b5c03b1043bc8bf78"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Nov 11 12:51:21 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Pin python building also to 3.13\n\n- No need for the check in the step any more since not supporting python 2\n"
    },
    {
      "commit": "eec3fbb10df4e2be89d00f5b5c03b1043bc8bf78",
      "tree": "516d4e02d4c0fda5a84a5129881d07bfa3abdf27",
      "parents": [
        "7770d27499b2e8b6ace652275617a006ee02c829"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Nov 11 12:31:11 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Also use the 0.16 file for the makefile\n\n- Same as per the cmake side\n"
    },
    {
      "commit": "7770d27499b2e8b6ace652275617a006ee02c829",
      "tree": "7f7e21713a490b853a3d27ca4cd3a76c42884190",
      "parents": [
        "f9449eacfbdbe150640df46c248393c64f17fce4"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Nov 11 14:07:19 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Put back the actual python tests\n"
    },
    {
      "commit": "f9449eacfbdbe150640df46c248393c64f17fce4",
      "tree": "bf1bced6a6c85c2a84161f5c9ea81328007e9821",
      "parents": [
        "cdd8e3b1e8643812c96e9f0298e62d09cb814d4d"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Nov 11 08:33:41 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Try to force python version\n\n- The change in find_package favours the latest Python\n- Force cmake to use the one specified\n- Put back the echo again since it is needed\n"
    },
    {
      "commit": "cdd8e3b1e8643812c96e9f0298e62d09cb814d4d",
      "tree": "47a6d19adf04067c83a6291bf780bb393b90b124",
      "parents": [
        "3adca0ecfee7dcb70f1bdf844050b5d02ed61d76"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 15:16:18 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Print Python version\n\n- And add message if interpreter not found\n- Remove the QUIET to get some idea of what cmake is doing\n- Trying to debug issue on Appveyor\n"
    },
    {
      "commit": "3adca0ecfee7dcb70f1bdf844050b5d02ed61d76",
      "tree": "7f020f754140e81a04089da95ff0d21a262ee914",
      "parents": [
        "eae1094d399e6d96a76b87ae98686a06dc11db5b"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 14:56:54 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Missed actually using the new variables from the new calls to get Python\n"
    },
    {
      "commit": "eae1094d399e6d96a76b87ae98686a06dc11db5b",
      "tree": "b6ca3336690369186df0575799ba706cb30bd616",
      "parents": [
        "11c960848c86583c85c22cb5e4c50e23068f0435"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 14:19:48 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Use the v0.16 thrift for type_hints also\n\n- Full UUID support not added and this seems to work for some cases but not all, thus removing until full UUID is added\n"
    },
    {
      "commit": "11c960848c86583c85c22cb5e4c50e23068f0435",
      "tree": "720090ee58d577c438bcc64b6062d15c5b2b9374",
      "parents": [
        "5c22d91b435341324e23dc505fe26850ddf3485e"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 14:07:50 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Add option to search the local lib path\n\n- Locally and in Windows actions the second option is needed\n"
    },
    {
      "commit": "5c22d91b435341324e23dc505fe26850ddf3485e",
      "tree": "f9d4382eb8765eb66b8663238f79810c99f684ec",
      "parents": [
        "9aac8ad7aadd7446309dc6d756158cc54c68fe2d"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 14:03:02 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Fix collection test\n\n- collections.abc was added in 3.3 collections.Hashable removed in 3.10\n"
    },
    {
      "commit": "9aac8ad7aadd7446309dc6d756158cc54c68fe2d",
      "tree": "37e2e91fb060a62263b16d31a863c3b51d42153d",
      "parents": [
        "23e29d67f443e8bc1a04120d8b004e9e7b210066"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 14:02:40 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "Fix call to deprecated test methods\n\n- Deprecated in Python 3.2 and removed in 3.11\n"
    },
    {
      "commit": "23e29d67f443e8bc1a04120d8b004e9e7b210066",
      "tree": "d7c4e4431870e5c3b27154a1ab7cf8101b038238",
      "parents": [
        "d6fc79122b7dce9731033b86cc54b2de07e6fa43"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Nov 10 14:00:18 2025 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Nov 20 00:01:57 2025 +0100"
      },
      "message": "FIx cmake warning on CMP0148\n\n- find_package(PythonInterp) and find_package(PythonLibs) were deprecated in 3.12 and removed in 3.27\n- The project minimum is at 3.16 already\n"
    },
    {
      "commit": "d6fc79122b7dce9731033b86cc54b2de07e6fa43",
      "tree": "c1364e987692f2889319f4613e09ea25b53f1c02",
      "parents": [
        "ead302baf8c1cd231f10354b8f75a51499d2283a"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Nov 19 22:04:39 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 23:56:40 2025 +0100"
      },
      "message": "bump nuget packages\n"
    },
    {
      "commit": "ead302baf8c1cd231f10354b8f75a51499d2283a",
      "tree": "cacada6068293014ee2c1aec616a7279c2cdff1c",
      "parents": [
        "d0531c412f12cc1dd71e24650f6f7a408dbdcab6"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Nov 19 23:50:18 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Nov 19 23:50:18 2025 +0100"
      },
      "message": "Revert \"lib: py: remove distutils in favor of setuptools\"\n\nThis reverts commit b4432b8f57aae67ef9ec23e539e973a5e486a48c.\n"
    },
    {
      "commit": "d0531c412f12cc1dd71e24650f6f7a408dbdcab6",
      "tree": "7c1170acf9559aff2d89da629035dbc080dc90ea",
      "parents": [
        "90ba80427dd1b65af846717fd5c16fdcb9ab4078"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Nov 19 16:21:25 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:46:46 2025 +0100"
      },
      "message": "Bump js-yaml from 3.14.1 to 3.14.2 in /lib/js\n\nBumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.\n- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)\n\n---\nupdated-dependencies:\n- dependency-name: js-yaml\n  dependency-version: 3.14.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "90ba80427dd1b65af846717fd5c16fdcb9ab4078",
      "tree": "72af5e1b3d197d88ae5bfd7cbfabf75c7aaa916e",
      "parents": [
        "cfc460213187ed9849c5e56c229668eb80859d50"
      ],
      "author": {
        "name": "James E. King III",
        "email": "jking@apache.org",
        "time": "Mon Apr 04 13:17:57 2022 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:41:42 2025 +0100"
      },
      "message": "THRIFT-5546: automate pypi publishing [ci skip]\n\nWhen a pre-release is created on GitHub for the repo it will publish\nto the TestPyPI service, and if that pre-release is promoted to a\nrelease, it will publish to the PyPI (real) service.\n"
    },
    {
      "commit": "cfc460213187ed9849c5e56c229668eb80859d50",
      "tree": "3695f332ea303e98ee8861ccb25b22d3e0719499",
      "parents": [
        "b4432b8f57aae67ef9ec23e539e973a5e486a48c"
      ],
      "author": {
        "name": "Stan Hu",
        "email": "stanhu@gmail.com",
        "time": "Mon Nov 28 11:29:50 2022 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:38:44 2025 +0100"
      },
      "message": "ruby: fix failing tests with Ruby 3.0\n\nThe tests were previously failing due to keyword argument changes in\nRuby 3.0.\n"
    },
    {
      "commit": "b4432b8f57aae67ef9ec23e539e973a5e486a48c",
      "tree": "b9a344259440506d78ec643f44e6c22467378ec2",
      "parents": [
        "d66ce925513fb3424deaa0ea4bb1a2491970d1dd"
      ],
      "author": {
        "name": "Pyrox",
        "email": "pyrox@pyrox.dev",
        "time": "Fri Jul 19 14:19:04 2024 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:37:01 2025 +0100"
      },
      "message": "lib: py: remove distutils in favor of setuptools\n\nAs distutils is removed in python 3.12, and setuptools provides the same\ninterface, it can be switched in place with minor changes. This allows\nusing the thrift bindings on versions of Python 3.12 or greater.\n"
    },
    {
      "commit": "d66ce925513fb3424deaa0ea4bb1a2491970d1dd",
      "tree": "0d8cef615b069ee5de119ff845703703b6b2e24d",
      "parents": [
        "f17d36cea582b79d3798c2be9520146d7a3fb0af"
      ],
      "author": {
        "name": "bwangelme",
        "email": "bwangel.me@gmail.com",
        "time": "Tue Jul 02 10:40:58 2024 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:36:20 2025 +0100"
      },
      "message": "fix: make timeout error more future\n\nClient: [\"python\"]\n"
    },
    {
      "commit": "f17d36cea582b79d3798c2be9520146d7a3fb0af",
      "tree": "4f18128713c7fa93662f60fe45dca4bfc34cb0db",
      "parents": [
        "52df9d7060387276cf0a5e2af1b4e0660183b38b"
      ],
      "author": {
        "name": "sbrandprog",
        "email": "sbrandprog@gmail.com",
        "time": "Sun Aug 24 17:49:35 2025 +0300"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:35:26 2025 +0100"
      },
      "message": "Expose thriftnb cmake target\nClient: cpp\n"
    },
    {
      "commit": "52df9d7060387276cf0a5e2af1b4e0660183b38b",
      "tree": "fd5ee49719d8ada60f6d73123176a786eeb2c440",
      "parents": [
        "c0caee3847eab836b16c347d9ec9895348ceda71"
      ],
      "author": {
        "name": "Gabe Jones",
        "email": "gabe.jones@emerson.com",
        "time": "Thu Oct 16 22:03:22 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:31:40 2025 +0100"
      },
      "message": "tOutput: Mark args unused when THRIFT_SQUELCH_CONSOLE_OUTPUT\nClient: cpp\n"
    },
    {
      "commit": "c0caee3847eab836b16c347d9ec9895348ceda71",
      "tree": "7c3cff03d062768a54013d8ef2a41ec85c966bad",
      "parents": [
        "17c8b838e1ee1fbcedf8f7b0d16e93380a547b03"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Nov 17 15:22:30 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:20:37 2025 +0100"
      },
      "message": "Bump js-yaml\n\nBumps  and [js-yaml](https://github.com/nodeca/js-yaml). These dependencies needed to be updated together.\n\nUpdates `js-yaml` from 4.1.0 to 4.1.1\n- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)\n\nUpdates `js-yaml` from 3.13.1 to 3.14.2\n- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)\n\n---\nupdated-dependencies:\n- dependency-name: js-yaml\n  dependency-version: 4.1.1\n  dependency-type: indirect\n- dependency-name: js-yaml\n  dependency-version: 3.14.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "17c8b838e1ee1fbcedf8f7b0d16e93380a547b03",
      "tree": "42e9aea26a1ad731cc1b1583dde3a98e4af0d0b6",
      "parents": [
        "0e4abab35a41206b9b7260adbb9c1af1bb3bb434"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Nov 01 06:01:40 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:20:13 2025 +0100"
      },
      "message": "Bump actions/upload-artifact from 4 to 5\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "0e4abab35a41206b9b7260adbb9c1af1bb3bb434",
      "tree": "209ecbbd6e8494e9be5d65a6b415094e67a8b3b0",
      "parents": [
        "87079492f8005409b5c985e0b1782841f54fc9fc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Nov 01 06:01:43 2025 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Nov 19 17:19:57 2025 +0100"
      },
      "message": "Bump actions/download-artifact from 5 to 6\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/download-artifact\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "87079492f8005409b5c985e0b1782841f54fc9fc",
      "tree": "3c17dcf1fd1704f095a39ae91258f07d043abaf9",
      "parents": [
        "822671218dc7df11d7e1d5b100cb81baba97c757"
      ],
      "author": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Fri Nov 14 13:47:42 2025 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Nov 16 12:41:45 2025 +0100"
      },
      "message": "THRIFT-792: Preserve last connect exception\n\nPreserves the last exception when TSocket connect fails to provide more\ncontext to callers. The exceptions are already logged at info level, but\ncallers may suppress that or want to view details in the exception, so\nattach the last as an inner layer of TTransportException, similar to\ngaierror above.\n"
    },
    {
      "commit": "822671218dc7df11d7e1d5b100cb81baba97c757",
      "tree": "3198a7adf888d20a75ce341f93e937a5df5a5dbc",
      "parents": [
        "2f214c28d89a0199a088a3acd0c16b3c6d99fb72"
      ],
      "author": {
        "name": "Carel",
        "email": "Carel.combrink@gmail.com",
        "time": "Sat Nov 15 09:08:21 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 14 23:08:21 2025 -0800"
      },
      "message": "Mark the go-java SSL failures as known (#3237)\n\n"
    }
  ],
  "next": "2f214c28d89a0199a088a3acd0c16b3c6d99fb72"
}
