)]}'
{
  "log": [
    {
      "commit": "197da843af4c51a90ca494becbcb0c24c5dd5e4b",
      "tree": "0a80449dfb45f1b1ecfb8272d9a96d7a46e30756",
      "parents": [
        "c5b73f3b13c46054523c60fc65405d1dc311147d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 01 06:14:17 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 22:14:03 2026 +0200"
      },
      "message": "Bump com.diffplug.spotless from 8.2.1 to 8.4.0 in /lib/kotlin\n\nBumps com.diffplug.spotless from 8.2.1 to 8.4.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.diffplug.spotless\n  dependency-version: 8.4.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": "c5b73f3b13c46054523c60fc65405d1dc311147d",
      "tree": "01a07297f94031ea8e1887a6ffbcff00aacdebe4",
      "parents": [
        "3f81e22d4a0f61db24d6baadb21ff1c1f2283950"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 01 06:14:20 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 22:13:53 2026 +0200"
      },
      "message": "Bump com.ncorti.ktfmt.gradle from 0.25.0 to 0.26.0 in /lib/kotlin\n\nBumps com.ncorti.ktfmt.gradle from 0.25.0 to 0.26.0.\n\n---\nupdated-dependencies:\n- dependency-name: com.ncorti.ktfmt.gradle\n  dependency-version: 0.26.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": "3f81e22d4a0f61db24d6baadb21ff1c1f2283950",
      "tree": "ee3414326807584099c6f9cdb9a1a5b6a92c3165",
      "parents": [
        "40d3e78144f446341e328d734d86768e97d31480"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Dec 17 10:17:37 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 01:38:03 2026 +0200"
      },
      "message": "Updated README.md for Ruby [skip ci]\n"
    },
    {
      "commit": "40d3e78144f446341e328d734d86768e97d31480",
      "tree": "b67246672b45e59fc2b15f893a79e975f18ccf24",
      "parents": [
        "43d749517cc903a4f95e367725f74a7a401c4bff"
      ],
      "author": {
        "name": "CJCombrink",
        "email": "carel.combrink@gmail.com",
        "time": "Mon Mar 23 06:09:04 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 01:32:13 2026 +0200"
      },
      "message": "Fix generation of episodic nodejs for services\n\n- Extending services from the episode must also take the episodes into account\n- Remove the reference in the generated ts for imported types since it can\u0027t be relative\n- Extend the tests\n"
    },
    {
      "commit": "43d749517cc903a4f95e367725f74a7a401c4bff",
      "tree": "a4b6e6f50b3ae83b98d251558be363dd1a6fab0b",
      "parents": [
        "0be731cc32bced86dc8b97ef4fd1dac9d531875f"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Wed Mar 25 21:01:51 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 01:26:25 2026 +0200"
      },
      "message": "Remove dependency on docker/login-action\n"
    },
    {
      "commit": "0be731cc32bced86dc8b97ef4fd1dac9d531875f",
      "tree": "2a814d37e820b0be638ca9e4bddeabf1ded18ad8",
      "parents": [
        "27b72088d4585d7e25c2694e567d517e0b6cf5c7"
      ],
      "author": {
        "name": "Pengpeng Hou",
        "email": "pengpeng@iscas.ac.cn",
        "time": "Sun Mar 22 00:26:01 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Apr 01 01:24:48 2026 +0200"
      },
      "message": "THRIFT-5932: bound saferealpath() output on Windows\nClient: cpp\nAuthor: Pengpeng Hou \u003cpengpeng@iscas.ac.cn\u003e\n\nThis closes #3357\n"
    },
    {
      "commit": "27b72088d4585d7e25c2694e567d517e0b6cf5c7",
      "tree": "d39f400bf28b8006d88cabb81254b0c66b73cb9d",
      "parents": [
        "528e093904d1b8a8e415aa2d7037e79f065a77e5"
      ],
      "author": {
        "name": "Pengpeng Hou",
        "email": "pengpeng@iscas.ac.cn",
        "time": "Sun Mar 22 07:48:17 2026 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Apr 01 00:21:37 2026 +0200"
      },
      "message": "THRIFT-5933: c_glib: reject oversized Unix socket paths in thrift_socket_open()\n\nthrift_socket_open() still copies the configured Unix socket path directly into a stack sockaddr_un and then connects it. The path is stored via a GObject property and is not checked against sizeof(pin.sun_path) before the copy.\n\nReject Unix socket paths that do not fit in the local sockaddr_un.sun_path buffer before building the sockaddr and connecting the socket.\n\nSigned-off-by: Pengpeng Hou \u003cpengpeng@iscas.ac.cn\u003e\n"
    },
    {
      "commit": "528e093904d1b8a8e415aa2d7037e79f065a77e5",
      "tree": "2913ad3f886066c6fb189a3f1a877c6389e2a56f",
      "parents": [
        "1e5fa4b9b35ad6bfeb238d19897ace7826eda057"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 27 22:47:33 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 28 14:30:55 2026 +0100"
      },
      "message": "Bump org.codehaus.plexus:plexus-utils in /contrib/thrift-maven-plugin\n\nBumps [org.codehaus.plexus:plexus-utils](https://github.com/codehaus-plexus/plexus-utils) from 3.0.24 to 4.0.3.\n- [Release notes](https://github.com/codehaus-plexus/plexus-utils/releases)\n- [Commits](https://github.com/codehaus-plexus/plexus-utils/compare/plexus-utils-3.0.24...plexus-utils-4.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.plexus:plexus-utils\n  dependency-version: 4.0.3\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "1e5fa4b9b35ad6bfeb238d19897ace7826eda057",
      "tree": "49f9633dd88fcfce78d7e05eb1da9a661c1cd416",
      "parents": [
        "59fc4113e6b6527cd95c3346d49a1197af673e77"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jnsg@apache.org",
        "time": "Fri Mar 27 00:01:45 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 28 00:05:42 2026 +0100"
      },
      "message": "THRIFT-5939: Replace GUID generation with stable UUID algorithm\n\nReplace the Windows-only random CoCreateGuid() GUID generation with\ndeterministic UUIDv8 (RFC 9562) derived from SHA-256 over a namespace\nhierarchy (DNS → thrift.apache.org → program → interface metadata).\n\nUses SHA-256 implementation by Brad Conte (brad AT bradconte.com),\nwhich is explicitly public domain (no copyright claimed).\nSource: https://github.com/B-Con/crypto-algorithms\n\n- sha256.h: Brad Conte\u0027s algorithm verbatim, inlined to a header-only file,\n  macros prefixed THRIFT_SHA256_ to avoid collisions\n- Add generate_guid_v8() for services and structs using a canonical\n  string covering: program namespace UUID, entity name, parent service\n  hash (for inheritance), and function/field signatures with Thrift\n  IDL type names\n- Add type_name_for_guid(), canonical_service_string(),\n  canonical_struct_string(), program_namespace_uuid() helpers\n- Add guid_v4 generator option to fall back to legacy random GUIDs\n  (Windows only, for migration compatibility)\n- GUIDs are now emitted on all platforms, not just Windows\n- Add UuidV8Test.thrift fixture and CI step that validates\n  determinism, UUIDv8 format, field-order sensitivity, and\n  parent-service hash inclusion\n- LICENSE: add attribution section for the third-party public-domain code,\n  following the existing pattern in the file\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "59fc4113e6b6527cd95c3346d49a1197af673e77",
      "tree": "458da27ee1fdbd17a86574a7eac7772b18a091aa",
      "parents": [
        "9e799ff5f5a0f431d6a7536a47845d29ca07fc25"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Mar 27 08:52:36 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 28 00:03:11 2026 +0100"
      },
      "message": "Add AGENTS.md with AI contribution guidelines for the project [skip ci]\n\nCovers ASF legal/licensing compliance, JIRA+GitHub issue tracking,\nPR conventions (THRIFT-NNNN prefix, squash, affected Client languages),\nAI-generated content labelling (Co-Authored-By/Generated-by), and\nlanguage-specific rule hierarchy across /lib, /test, /tutorial.\nCLAUDE.md is a thin wrapper that imports AGENTS.md via @-syntax so\nClaude Code users and other AI tools (e.g. OpenAI Codex) both work.\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "9e799ff5f5a0f431d6a7536a47845d29ca07fc25",
      "tree": "a5a03518e18d3ab5be8ce6b28c6090fb01776533",
      "parents": [
        "d999ed2c3969bca777f4b6cf3aa1de6d9a12ef53"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 26 14:04:47 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Mar 27 01:29:02 2026 +0100"
      },
      "message": "Bump picomatch from 2.3.0 to 2.3.2 in /lib/js\n\nBumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.0 to 2.3.2.\n- [Release notes](https://github.com/micromatch/picomatch/releases)\n- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/picomatch/compare/2.3.0...2.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: picomatch\n  dependency-version: 2.3.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d999ed2c3969bca777f4b6cf3aa1de6d9a12ef53",
      "tree": "0102b15e003d6752981faf472552b1d6929527ec",
      "parents": [
        "373c0ea071e82f6b4fa3aa9f460697942cdf6168"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 26 16:26:48 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Mar 27 01:28:54 2026 +0100"
      },
      "message": "Bump picomatch from 2.3.0 to 2.3.2 in /lib/ts\n\nBumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.0 to 2.3.2.\n- [Release notes](https://github.com/micromatch/picomatch/releases)\n- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/picomatch/compare/2.3.0...2.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: picomatch\n  dependency-version: 2.3.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "373c0ea071e82f6b4fa3aa9f460697942cdf6168",
      "tree": "3c570fe6a6176fbda080b26592d15762e91b157c",
      "parents": [
        "13cdb4441846cec85809991116fddba2344c8a83"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Mar 27 01:27:59 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Mar 27 01:28:22 2026 +0100"
      },
      "message": "Added `Co-Authored-By:` as alternative (see text for rationale)\n"
    },
    {
      "commit": "13cdb4441846cec85809991116fddba2344c8a83",
      "tree": "d8ded5503f5d6e3eea58adccf472a7e20360b8b4",
      "parents": [
        "9f1fb7a6610a89ef3cd927f61173d99b03dbf540"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Tue Mar 17 15:08:29 2026 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Mar 25 22:13:26 2026 +0100"
      },
      "message": "Add test coverage for private_optional + template_streamop combined; fix generator bugs (#14)\n\n\n* Add test coverage for private_optional + template_streamop combined, fix generator bugs\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": "9f1fb7a6610a89ef3cd927f61173d99b03dbf540",
      "tree": "ed978ba08b24b9e2e914b8801ec46bea55d9a6ce",
      "parents": [
        "8f1bfda8177014d158327aadbc9de0dd55ea8f76"
      ],
      "author": {
        "name": "Pavel Kvach",
        "email": "pavel.kvach@gmail.com",
        "time": "Sat Mar 21 20:45:04 2026 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 24 22:04:43 2026 +0100"
      },
      "message": "THRIFT-5934: Fix deprecated usage of ReflectionProperty::setAccessible() in PHP tests\n"
    },
    {
      "commit": "8f1bfda8177014d158327aadbc9de0dd55ea8f76",
      "tree": "c9d7a3782e68dc13188883ccd67d578139a27e9d",
      "parents": [
        "caa4e7866df11091609ee184a5825365ab747a8c"
      ],
      "author": {
        "name": "sarangat_LinkedIn",
        "email": "sarangath@linkedin.com",
        "time": "Mon Mar 16 14:17:16 2026 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 24 22:01:48 2026 +0100"
      },
      "message": "THRIFT-5926: Fix TSaslClientTransport.open() for DIGEST-MD5\n\n- Handle None initial response from sasl.process() with explicit\n  is-not-None check instead of or-coercion\n- Process server\u0027s final challenge on COMPLETE status (rspauth\n  verification for DIGEST-MD5)\n- Add None guard in send_sasl_msg to match Java TSaslTransport\n- Fix recv_sasl_msg to return b\"\" instead of \"\" for zero-length payloads\n- Add unit tests for SASL negotiation including error paths\n"
    },
    {
      "commit": "caa4e7866df11091609ee184a5825365ab747a8c",
      "tree": "2f605964c0c3acc8e8ce87b0680dcc92b6471045",
      "parents": [
        "86b1519a5da05248ee42c702e02e48321030e024"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 22:49:43 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 22:49:43 2026 +0100"
      },
      "message": "disabled broken workflow \u003d\u003e see THRIFT-5936\n"
    },
    {
      "commit": "86b1519a5da05248ee42c702e02e48321030e024",
      "tree": "c4c23cbd18313d5ab0cfb9734fd96240e2ec24f4",
      "parents": [
        "68b9e87639ee6f2bf683aaea1d04cbb5d2b379de"
      ],
      "author": {
        "name": "CJCombrink",
        "email": "carel.combrink@gmail.com",
        "time": "Thu Mar 12 15:10:25 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 22:45:17 2026 +0100"
      },
      "message": "THRIFT-4987: Fix TBinaryProtocol support in XHRConnection\nClient: js\nPatch: CJCombrink\n\nGenerated-By: Co-authored by Claude AI (see file comments)\n\nThis closes #3341\n"
    },
    {
      "commit": "68b9e87639ee6f2bf683aaea1d04cbb5d2b379de",
      "tree": "a0b3044af40a1340dfc929e653009a9399a173f5",
      "parents": [
        "0de53c48a7d101382d17490d265ac2d023938d3a"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 12:43:53 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Mar 22 22:21:39 2026 +0100"
      },
      "message": "cmake workflow improvements\n- Pin action versions to full SHA\n- Add concurrency group\n- Add timeouts to all steps\n- Limit ctest parallelism to prevent resource exhaustion\n\nGenerated-by: OpenCode big-pickle\n"
    },
    {
      "commit": "0de53c48a7d101382d17490d265ac2d023938d3a",
      "tree": "67f299b3c2fd1d533f921b1009676d0fb2753125",
      "parents": [
        "ee261954f0c4cc2b40165e5f088e0d344842bb52"
      ],
      "author": {
        "name": "Pengpeng Hou",
        "email": "pengpeng@iscas.ac.cn",
        "time": "Sun Mar 22 07:25:58 2026 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Mar 22 14:29:07 2026 +0100"
      },
      "message": "THRIFT-5931: c_glib: avoid fixed-size buffers in thrift_ssl_socket_get_ssl_error()\n\nthrift_ssl_socket_get_ssl_error() still builds SSL error messages in a fixed stack buffer while tracking remaining space with a signed counter that is updated by subtracting snprintf() return values.\n\nIf the formatted error text is long enough, that counter can underflow and the later writes can walk past the intended buffer boundaries.\n\nBuild the error message with GString instead so the helper no longer depends on hand-rolled remaining-space arithmetic.\n\nSigned-off-by: Pengpeng Hou \u003cpengpeng@iscas.ac.cn\u003e\n"
    },
    {
      "commit": "ee261954f0c4cc2b40165e5f088e0d344842bb52",
      "tree": "7c6210e0ec8c223122a347436e30750c39377981",
      "parents": [
        "5ff02040fb3c6d7546b560afa169d5a7cd7cc2ac"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Mar 18 16:28:43 2026 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Mar 22 14:28:14 2026 +0100"
      },
      "message": "Fix and expand mergeable label mappings\n"
    },
    {
      "commit": "5ff02040fb3c6d7546b560afa169d5a7cd7cc2ac",
      "tree": "4bb5e6b5f45fff33bd6cf30c30967787fffc2875",
      "parents": [
        "26e23942c7b7ec60252d08d011057dc8fabda2f4"
      ],
      "author": {
        "name": "Pavel Kvach",
        "email": "pavel.kvach@gmail.com",
        "time": "Sun Mar 22 09:52:22 2026 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Mar 22 14:21:33 2026 +0100"
      },
      "message": "THRIFT-5935: Fix deprecated non-canonical casts for PHP 8.5 compatibility\n"
    },
    {
      "commit": "26e23942c7b7ec60252d08d011057dc8fabda2f4",
      "tree": "823a7e62cf9a9e66edead4cf05d699d5699f942f",
      "parents": [
        "f8622a7b35f1df860df35b06d0fe4d2805ac309c"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 13:13:28 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 14:15:36 2026 +0100"
      },
      "message": "fix: remove invalid step-level permissions syntax\n"
    },
    {
      "commit": "f8622a7b35f1df860df35b06d0fe4d2805ac309c",
      "tree": "8ec305654f07806dcbc98de44a3ef56fa2f417a7",
      "parents": [
        "821140cfba71b5d159e888a3c006e739dc5b31f3"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 22 12:35:23 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Mar 22 14:11:23 2026 +0100"
      },
      "message": "msvc build improvements\n- add concurrency group to cancel redundant runs\n- pin GitHub action versions to full SHA\n- add error handling and timeouts to Docker operations\n- Classify pull failures: 404\u003drebuild, auth/registry errors\u003dfail loud\n- Add timeouts: pull(10m), build(60m), push(20m), test(120m)\n- restrict packages:write permission to non-PR runs\n- Remove packages:write from workflow-level permissions\n- Add step-level permissions to GHCR login step\n- Add condition to skip login for pull requests (including forks)\n- Fork PRs now have minimal permissions (contents:read only)\n\nGenerated-by: OpenCode big-pickle\n"
    },
    {
      "commit": "821140cfba71b5d159e888a3c006e739dc5b31f3",
      "tree": "8e1ab7c9488a746953ea1a659416925730c90fd6",
      "parents": [
        "9ffc337cadc3cd4b77bb1b54bf9fa97b94831e54"
      ],
      "author": {
        "name": "Arthur Lazzaretti",
        "email": "alazzaretti@x.ai",
        "time": "Mon Mar 16 17:18:45 2026 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 21 19:56:06 2026 +0100"
      },
      "message": "THRIFT-5928: fix skip() for binary fields with non-UTF-8 bytes\nClient: rs\n\nskip_till_depth() calls read_string() for TType::String fields, which\nperforms String::from_utf8() and fails on binary fields containing raw\nbytes. Since string and binary share the same wire type and skip()\ndiscards the value anyway, use read_bytes() instead.\n\nThis is safe because:\n- The result is discarded immediately via .map(|_| ())\n- read_string() is literally read_bytes() + String::from_utf8()\n- Both consume identical wire bytes (4-byte length + N bytes)\n- No behavioral change for valid UTF-8 string data\n\nThe bug triggers any time a newer schema adds a binary field to a\nstruct that an older binary is still deserializing — the older binary\nhits the skip() path for the unknown field and fails on the raw bytes.\n"
    },
    {
      "commit": "9ffc337cadc3cd4b77bb1b54bf9fa97b94831e54",
      "tree": "fec1c00b0e2e935dc8d60ba237d8a507eb958a5c",
      "parents": [
        "67b4ec7363680a4831735ab8dc00b0b2059b5961"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Mar 11 21:02:28 2026 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 21 19:52:46 2026 +0100"
      },
      "message": "Fix Ruby client seqid handling\n"
    },
    {
      "commit": "67b4ec7363680a4831735ab8dc00b0b2059b5961",
      "tree": "ca1bc456508f9ec0ca573ebe2d8743efa9b4a812",
      "parents": [
        "98034d1f5f9d7a3daea90010689dc73dc6a01cd0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Mar 21 00:00:19 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 21 19:44:04 2026 +0100"
      },
      "message": "Bump flatted from 3.3.2 to 3.4.2\n\nBumps [flatted](https://github.com/WebReflection/flatted) from 3.3.2 to 3.4.2.\n- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.2...v3.4.2)\n\n---\nupdated-dependencies:\n- dependency-name: flatted\n  dependency-version: 3.4.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "98034d1f5f9d7a3daea90010689dc73dc6a01cd0",
      "tree": "59599d63139c96db349c7302690578ff15271ddd",
      "parents": [
        "3b0ab4dfa16ac0dad477db836c60186955f15418"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Mar 19 20:24:46 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Mar 21 00:58:35 2026 +0100"
      },
      "message": "Regression test for THRIFT-4002: Immutable exception deserialization\nClient: py\nPatch: Jens Geyer\nGenerated-by: Opencode big-pickle\n\nThis test verifies that immutable structs (including exceptions, which are immutable by default since Thrift 0.14.0) can be properly deserialized without triggering the __setattr__ TypeError.\n\nThe bug manifests when:\n1. A struct class is marked immutable (has __setattr__ that raises TypeError)\n2. Thrift\u0027s deserialization tries to set attributes via setattr instead of using the kwargs constructor\n\nTest coverage:\n- Immutable exception creation and hashability\n- Immutable exception blocks modification/deletion\n- Round-trip serialization/deserialization with TBinaryProtocol\n- Round-trip serialization/deserialization with TCompactProtocol\n- Accelerated protocol tests (C extension) when available\n\nRelated: THRIFT-4002, THRIFT-5715\n"
    },
    {
      "commit": "3b0ab4dfa16ac0dad477db836c60186955f15418",
      "tree": "230b742e3a52b56d09c4e6beaf3ca68621a01a3a",
      "parents": [
        "dfeab8d57f41c8ca52269181a7be0092383d94ab"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Mar 11 17:46:48 2026 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 17 22:06:26 2026 +0100"
      },
      "message": "Enforce consistent whitespaces around blocks, equal signs, and in parameters in Ruby code\n"
    },
    {
      "commit": "dfeab8d57f41c8ca52269181a7be0092383d94ab",
      "tree": "3aaf18c89167160fed5d5e5c35cbb6ccc35c22d4",
      "parents": [
        "4fc4c46e8ea1e9173789b91ac6e5322b93f3e0bd"
      ],
      "author": {
        "name": "CJCombrink",
        "email": "carel.combrink@gmail.com",
        "time": "Fri Mar 06 07:03:56 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Mar 17 21:53:01 2026 +0100"
      },
      "message": "THRIFT-5924: UUID support for NodeTS\nClient: ts,js\nPatch: CJCombrink\nThis closes #3331\n"
    },
    {
      "commit": "4fc4c46e8ea1e9173789b91ac6e5322b93f3e0bd",
      "tree": "bcd651dbbc331dca189ec9a5e4d79bbe5b771dec",
      "parents": [
        "5bd98f4936f407d8cf5524ca91ec6bb9538d282d"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 17 21:39:02 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 21:39:02 2026 +0100"
      },
      "message": "Added section about AI generated content to CONTRIBUTING.md"
    },
    {
      "commit": "5bd98f4936f407d8cf5524ca91ec6bb9538d282d",
      "tree": "55d676d6bb7034a6bc68e1b61c41827d7a4ad2ac",
      "parents": [
        "1091fe6fa88097248f89529f7278290fa4838d05"
      ],
      "author": {
        "name": "JensG via OpenCode",
        "email": "opencode@local.box",
        "time": "Mon Mar 16 23:29:56 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 17 21:26:28 2026 +0100"
      },
      "message": "fix: flake8 errors\n"
    },
    {
      "commit": "1091fe6fa88097248f89529f7278290fa4838d05",
      "tree": "eadba7bfebc4532c6fd207835e4057cb0cf1518e",
      "parents": [
        "5b5fd3cd62a47338ea46c43655f0c2270fce41ad"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Mar 16 22:43:36 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 17 21:26:28 2026 +0100"
      },
      "message": "THRIFT-5927 Cannot use reserved language keyword \"None\" with target language Python\nClient: py\nPatch: Jens Geyer\nGenerated-by: Opencode big-pickle\n"
    },
    {
      "commit": "5b5fd3cd62a47338ea46c43655f0c2270fce41ad",
      "tree": "d9f4e3e14417ad694b096b142db62b5c838ce7a5",
      "parents": [
        "0564434e0b85a2d7487f1c6f0b129d9697e1134a"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Mar 11 19:50:50 2026 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Tue Mar 17 00:18:42 2026 +0100"
      },
      "message": "Fix crashes caused by unchecked memory allocation in Ruby library\n"
    },
    {
      "commit": "0564434e0b85a2d7487f1c6f0b129d9697e1134a",
      "tree": "918fd74c254a436295bf7472569cb39410df5477",
      "parents": [
        "604179840b49853201cb8b65997b29d165c4f8b5"
      ],
      "author": {
        "name": "Volodymyr Panivko",
        "email": "sveneld300@gmail.com",
        "time": "Sat Mar 07 14:16:50 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Mar 15 22:39:44 2026 +0100"
      },
      "message": "THRIFT-5587: Add UUID support for PHP\nClient: py\nPatch: Volodymyr Panivko\n\nThis closes #3332\n"
    },
    {
      "commit": "604179840b49853201cb8b65997b29d165c4f8b5",
      "tree": "79f3a5331439155b3c6671a75146f116f18d4043",
      "parents": [
        "a715bdffaa805baae5b0b994231556b566ca326c"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sat Mar 14 02:12:29 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 23:12:29 2026 -0700"
      },
      "message": "Implemented Ruby fuzzing (#3339)\n\nThis PR implements fuzzing for Ruby library using https://github.com/trailofbits/ruzzy, a coverage-guided fuzzer for pure Ruby code and Ruby C extensions based on libFuzzer. Implemented binary, compact, and JSON protocol fuzzers.\n\nA separate PR will follow to address OOM and a crash caused by unchecked memory allocation in structs (Edit: #3340)."
    },
    {
      "commit": "a715bdffaa805baae5b0b994231556b566ca326c",
      "tree": "cec57938935b441816402e474c37d1ba1ea25e92",
      "parents": [
        "6f182854d7a5f3cfc110c875d6decd3bafd1689f"
      ],
      "author": {
        "name": "Carel Combrink",
        "email": "carel.combrink@gmail.com",
        "time": "Thu Oct 30 07:44:21 2025 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Mar 11 22:39:49 2026 +0100"
      },
      "message": "THRIFT-5923: UUID python\nClient: py\nPatch: CJCombrink\n\nThis closes #3330\n"
    },
    {
      "commit": "6f182854d7a5f3cfc110c875d6decd3bafd1689f",
      "tree": "a7b0ed184959ca73f3a4853e1f0a1c1431a46d9f",
      "parents": [
        "c701dd4aaf342da5614c1445589acbb6ac415edd"
      ],
      "author": {
        "name": "Santiago Medina Rolong",
        "email": "smedinarolong@twitter.com",
        "time": "Tue Mar 10 18:39:33 2026 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Mar 11 22:28:12 2026 +0100"
      },
      "message": "THRIFT-5927: fix i16 overflow in compact protocol read_field_begin\n\nReplace unchecked +\u003d with checked_add to prevent overflow.\nIn overflow-checked builds this caused a panic; in release builds\nthe accumulator wrapped silently, discarding all subsequent fields.\n"
    },
    {
      "commit": "c701dd4aaf342da5614c1445589acbb6ac415edd",
      "tree": "d28ae7fcead8849b7b6521a11fb7196f6dcd15e2",
      "parents": [
        "f5c80a41d57f46283ee858f445f2e0a84b62f1dd"
      ],
      "author": {
        "name": "Santiago Medina Rolong",
        "email": "smedinarolong@twitter.com",
        "time": "Tue Mar 10 18:40:40 2026 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Mar 11 22:24:34 2026 +0100"
      },
      "message": "THRIFT-5926: fix Rust union deserializer panic on unknown field ID\n\nThe wildcard arm in generated union read_from_in_protocol incremented\nreceived_field_count without setting ret. When exactly one unknown\nfield was received, the count reached 1 with ret still None, causing\nthe else branch to panic via .expect().\n\nRemove the counter increment from the wildcard arm. Unknown fields\nare already discarded by i_prot.skip(); they must not affect the\ncount that drives union validation logic.\n"
    },
    {
      "commit": "f5c80a41d57f46283ee858f445f2e0a84b62f1dd",
      "tree": "f9efe38b47ee8cd9ec430ca6c00d4e457193e585",
      "parents": [
        "df22bb1b1b193c2d9e1ebc2e614b22830dbb7abc"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sun Mar 08 19:09:43 2026 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Mar 11 22:21:53 2026 +0100"
      },
      "message": "Enforce consistent emtpy lines and trailing whitespaces in Ruby code\n"
    },
    {
      "commit": "df22bb1b1b193c2d9e1ebc2e614b22830dbb7abc",
      "tree": "f6e11adbd6d1bfdf05f36e12e4b7035463b29652",
      "parents": [
        "45b6935a80859016862080f97678ac415e758bed"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sat Dec 20 13:41:21 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Mar 11 08:47:12 2026 +0100"
      },
      "message": "Added Rubocop harness to enforce Ruby code style\n"
    },
    {
      "commit": "45b6935a80859016862080f97678ac415e758bed",
      "tree": "773e1dde0251edda6eeadd7fccc76ddce1647bb0",
      "parents": [
        "96b7f21b54889610ebbff864cdb2653d507ebdad"
      ],
      "author": {
        "name": "CJCombrink",
        "email": "carel.combrink@gmail.com",
        "time": "Tue Mar 10 07:32:03 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Mar 11 00:08:25 2026 +0100"
      },
      "message": "THRIFT-5925: Java UUID fix\nClient: Java\nPatch: CJCombrink\n\nThis closes #3334\n\n- Using gradle spotlessApply\n\nAdding a decorator to assist with code that used the uuid field already in Java\n- For those who can\u0027t migrate to new UUID format\n- Also captures the code that was used before\n\nFix UUID implementation in Java to be according to the Thrift UUID specification\n- Don\u0027t do byte swapping when writing to and reading from the wire.\n- This is a breaking change for anyone using UUID between Java servers\n- For users that depends on this behaviour a TProtocolDecorator can be used to get back the old behaviour\n"
    },
    {
      "commit": "96b7f21b54889610ebbff864cdb2653d507ebdad",
      "tree": "8fa13c46fdd7bc59e6011a767a8da3e9bc178a5f",
      "parents": [
        "3346c01d0126b6ed5220fd4b6aaa946cca9e9fe9"
      ],
      "author": {
        "name": "nighmared",
        "email": "jonas.konrath@icloud.com",
        "time": "Tue Mar 03 16:27:06 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 22:38:07 2026 +0100"
      },
      "message": "THRIFT-5922: made http header lookup case insensitive\n\nClient: lua\n"
    },
    {
      "commit": "3346c01d0126b6ed5220fd4b6aaa946cca9e9fe9",
      "tree": "66715fe49ddc367f3b21d92dd321224d50411289",
      "parents": [
        "7e06eb8263c8987841d18ff0283a4a0b4b91b742"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Feb 13 17:40:41 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 22:37:52 2026 +0100"
      },
      "message": "Run static code analysis on GitHub\n"
    },
    {
      "commit": "7e06eb8263c8987841d18ff0283a4a0b4b91b742",
      "tree": "2be818696171548bdb82a4faf869e2c6c974fe80",
      "parents": [
        "85bf85382ac7d9d78810f812e3f127992bf95c91"
      ],
      "author": {
        "name": "haosenwang1018",
        "email": "167664334+haosenwang1018@users.noreply.github.com",
        "time": "Thu Feb 26 01:54:05 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:53:19 2026 +0100"
      },
      "message": "fix: replace 4 bare except clauses with except Exception\n"
    },
    {
      "commit": "85bf85382ac7d9d78810f812e3f127992bf95c91",
      "tree": "a7dc0853e3612e90406ea0a149d4351754e04a31",
      "parents": [
        "2ee7d1160a07b8e9e1ce56910529798bdeae7903"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Mar 01 06:04:08 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:50:38 2026 +0100"
      },
      "message": "Bump jvm from 2.3.0 to 2.3.10 in /lib/kotlin\n\nBumps [jvm](https://github.com/JetBrains/kotlin) from 2.3.0 to 2.3.10.\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.3.0...v2.3.10)\n\n---\nupdated-dependencies:\n- dependency-name: jvm\n  dependency-version: 2.3.10\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2ee7d1160a07b8e9e1ce56910529798bdeae7903",
      "tree": "ee503c70cd55cbc4b9f81716652a591647e0027c",
      "parents": [
        "99e0f6fc37b5e59f07ddbb3ef1739804d49703a9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Mar 01 06:03:04 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:50:30 2026 +0100"
      },
      "message": "Bump actions/download-artifact from 6 to 8\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 8.\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v6...v8)\n\n---\nupdated-dependencies:\n- dependency-name: actions/download-artifact\n  dependency-version: \u00278\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": "99e0f6fc37b5e59f07ddbb3ef1739804d49703a9",
      "tree": "7fb392ff7d8a079eec0a66ff699d564ea09c8a87",
      "parents": [
        "e51271f5388e082864f78fc358d3d35d44abe67c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Mar 01 06:02:57 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:49:59 2026 +0100"
      },
      "message": "Bump actions/upload-artifact from 5 to 7\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v5...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-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": "e51271f5388e082864f78fc358d3d35d44abe67c",
      "tree": "43c63d2a4cb5a604f15eae490cffae28b5883bb9",
      "parents": [
        "b1ed0795e1f28adcce5e016cdc6c2cc24ddf6b9a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 03 11:46:25 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:43:50 2026 +0100"
      },
      "message": "Bump minimatch from 3.1.2 to 3.1.5\n\nBumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.5.\n- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)\n- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)\n\n---\nupdated-dependencies:\n- dependency-name: minimatch\n  dependency-version: 3.1.5\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b1ed0795e1f28adcce5e016cdc6c2cc24ddf6b9a",
      "tree": "6c2cd762eb586b2c90751e7ad9b0fb606f7b6eff",
      "parents": [
        "8a358b8c94bb960fe66c3ad39e6d70fef1ef6439"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 03 18:12:30 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Mar 05 21:37:23 2026 +0100"
      },
      "message": "Bump underscore from 1.13.6 to 1.13.8 in /lib/ts\n\nBumps [underscore](https://github.com/jashkenas/underscore) from 1.13.6 to 1.13.8.\n- [Commits](https://github.com/jashkenas/underscore/compare/1.13.6...1.13.8)\n\n---\nupdated-dependencies:\n- dependency-name: underscore\n  dependency-version: 1.13.8\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8a358b8c94bb960fe66c3ad39e6d70fef1ef6439",
      "tree": "9bcef692a80479c6a7ff0c162a00c81ee4f98e51",
      "parents": [
        "5cc10222d0e1268a5a70be8d8627bc03ec2e42ad"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Sun Feb 22 12:11:12 2026 +0530"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Feb 25 22:49:02 2026 +0100"
      },
      "message": "Use read_nonblock instead of readpartial to account for SSL socket buffer\n"
    },
    {
      "commit": "5cc10222d0e1268a5a70be8d8627bc03ec2e42ad",
      "tree": "2fdc001a8eeabc5df0d220a20941492b474fac3d",
      "parents": [
        "d7c06f68aff53a01f28bdf2fb62ac5af32b9b4e3"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Mon Nov 24 18:01:10 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Feb 25 22:48:23 2026 +0100"
      },
      "message": "Constants demo\n"
    },
    {
      "commit": "d7c06f68aff53a01f28bdf2fb62ac5af32b9b4e3",
      "tree": "9e46d181317d44daf53486cee86528ce9cc08275",
      "parents": [
        "3adaf0d592456250b2627ba8614438fc12f02cb6"
      ],
      "author": {
        "name": "Volodymyr Panivko",
        "email": "sveneld300@gmail.com",
        "time": "Sun Feb 22 20:20:13 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Feb 25 22:47:41 2026 +0100"
      },
      "message": "THRIFT-5921 Ubuntu focal fail to run composer install\n\nSigned-off-by: Volodymyr Panivko \u003csveneld300@gmail.com\u003e\n"
    },
    {
      "commit": "3adaf0d592456250b2627ba8614438fc12f02cb6",
      "tree": "056bb0f3199970d16d43d89c5d6ede5caf984243",
      "parents": [
        "b48ba36cd27493233934f92f029efac92740c2dd"
      ],
      "author": {
        "name": "Shaoyu Zhang",
        "email": "zsy056@users.noreply.github.com",
        "time": "Fri Feb 20 13:28:16 2026 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Feb 25 22:47:17 2026 +0100"
      },
      "message": "Refresh msvc docker build\n"
    },
    {
      "commit": "b48ba36cd27493233934f92f029efac92740c2dd",
      "tree": "5117ef38be51eda99c763355ce14ee952fe675a8",
      "parents": [
        "32776c0f46f5fd79b296391d66236c23b20af072"
      ],
      "author": {
        "name": "Mark Molinaro",
        "email": "mmolinaro@pinterest.com",
        "time": "Wed Feb 25 17:51:37 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Feb 25 22:46:55 2026 +0100"
      },
      "message": "python: add more precise typehints for immutable structs\n"
    },
    {
      "commit": "32776c0f46f5fd79b296391d66236c23b20af072",
      "tree": "07867002f4461ef152060deb8a4e07dd2134102f",
      "parents": [
        "ca0740a0b9cd0a0ddeecdcdaf655f8b336c5ca75"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Tue Feb 10 12:25:07 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 21 10:15:18 2026 +0100"
      },
      "message": "Make sure we always throw ProtocolException(INVALID_DATA) in Ruby\n"
    },
    {
      "commit": "ca0740a0b9cd0a0ddeecdcdaf655f8b336c5ca75",
      "tree": "d819a696471315c624655b6889e011a1aa62ee0d",
      "parents": [
        "1c989cdf6b2a37082667ff13cbe1862e73e43720"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "wang@yuxuan.org",
        "time": "Fri Feb 20 20:05:20 2026 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 21 10:11:39 2026 +0100"
      },
      "message": "go: Modernize codebase with go fix\n"
    },
    {
      "commit": "1c989cdf6b2a37082667ff13cbe1862e73e43720",
      "tree": "d8b31cc26a741c011372e8d5b1c2321e0a53af6c",
      "parents": [
        "e4666f293478e3457898867095105ff2d23b155e"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Feb 13 19:34:40 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 21 10:11:18 2026 +0100"
      },
      "message": "Fixed PHP phpcs offenses\n"
    },
    {
      "commit": "e4666f293478e3457898867095105ff2d23b155e",
      "tree": "0bd71db97427241d2bf732db13de58a9c379386c",
      "parents": [
        "d135ac58514e728159c3baea7f8957765a970aa6"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Feb 20 00:12:57 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 01:08:25 2026 +0100"
      },
      "message": "THRIFT-5917: Rust currently broken and no maintainers around\n"
    },
    {
      "commit": "d135ac58514e728159c3baea7f8957765a970aa6",
      "tree": "51e77e585e75a164c87b97fd726d402d4a151807",
      "parents": [
        "93b1b449d93b747e7b79cfc270ce492f7f4a34e4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Feb 19 22:55:25 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:38:17 2026 +0100"
      },
      "message": "Bump rack from 2.2.21 to 2.2.22 in /test/rb\n\nBumps [rack](https://github.com/rack/rack) from 2.2.21 to 2.2.22.\n- [Release notes](https://github.com/rack/rack/releases)\n- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/rack/rack/compare/v2.2.21...v2.2.22)\n\n---\nupdated-dependencies:\n- dependency-name: rack\n  dependency-version: 2.2.22\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "93b1b449d93b747e7b79cfc270ce492f7f4a34e4",
      "tree": "fbc33e7000e7047f5f1e072584abe11b72869e5c",
      "parents": [
        "acbcf10d91cdea4b5d8c855b8f27acd890ffecc8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Feb 19 22:55:01 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:38:10 2026 +0100"
      },
      "message": "Bump rack from 2.2.21 to 2.2.22 in /lib/rb\n\nBumps [rack](https://github.com/rack/rack) from 2.2.21 to 2.2.22.\n- [Release notes](https://github.com/rack/rack/releases)\n- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/rack/rack/compare/v2.2.21...v2.2.22)\n\n---\nupdated-dependencies:\n- dependency-name: rack\n  dependency-version: 2.2.22\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "acbcf10d91cdea4b5d8c855b8f27acd890ffecc8",
      "tree": "64b625cf9730bff5b92659ed4fe32c213d33d2ca",
      "parents": [
        "96d62dd1700e84293b99546bcf0d4ed17c25728a"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Feb 13 18:25:55 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:17:08 2026 +0100"
      },
      "message": "Fixed Python flake8 offenses\n"
    },
    {
      "commit": "96d62dd1700e84293b99546bcf0d4ed17c25728a",
      "tree": "f7d86692cf0d2c98c2b06eded25e94a15a16b999",
      "parents": [
        "fe43dec2bf11bd0747ac1405acc442b7c097a995"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Feb 13 15:16:16 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:16:48 2026 +0100"
      },
      "message": "Added --server-type argument to Ruby cross-tests integration server\n"
    },
    {
      "commit": "fe43dec2bf11bd0747ac1405acc442b7c097a995",
      "tree": "6fed113c48092c1d57ee58d0d30447d3f71cbcd0",
      "parents": [
        "672124127246bd65c4dd41e5b215cdbe77bf1beb"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Feb 13 20:23:07 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:16:36 2026 +0100"
      },
      "message": "Fixed C++ cppcheck offenses\n"
    },
    {
      "commit": "672124127246bd65c4dd41e5b215cdbe77bf1beb",
      "tree": "22c88eaf9920007f2e540a7c23946378c3e9b565",
      "parents": [
        "c3cdacf1beae8a309a904f27d65850f0b4c3e3d6"
      ],
      "author": {
        "name": "shang",
        "email": "shang@uber.com",
        "time": "Thu Feb 12 10:28:12 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:15:59 2026 +0100"
      },
      "message": "Update the `ProcessFunction::getResult` method to return the _result type instead of a general TBase\n"
    },
    {
      "commit": "c3cdacf1beae8a309a904f27d65850f0b4c3e3d6",
      "tree": "e8f14b0a24cbf3710e61be36071f6e756435b13d",
      "parents": [
        "0b6822804eb4fdeefc6143fbe72478c7309be7b7"
      ],
      "author": {
        "name": "copilot-swe-agent[bot]",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Mon Feb 09 21:30:16 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:15:44 2026 +0100"
      },
      "message": "cpp: add template_streamop generation with runtime/compiler test coverage\n\nAdd template_streamop support in the C++ generator so generated operator\u003c\u003c and printTo can target generic stream-like output types.\nKeep default behavior unchanged when the option is not set (std::ostream signatures remain).\nAdd compiler/runtime coverage for template generation, friend declaration correctness, enums, and collection printing.\n\ndefault:\n```cpp\nstd::ostream\u0026 operator\u003c\u003c(std::ostream\u0026 out, const SimpleStruct\u0026 obj);\n\nclass SimpleStruct {\npublic:\n  void printTo(std::ostream\u0026 out) const;\n};\n```\n\nwith `template_streamop`:\n```cpp\ntemplate \u003ctypename OStream_\u003e\nOStream_\u0026 operator\u003c\u003c(OStream_\u0026 out, const SimpleStruct\u0026 obj);\n\nclass SimpleStruct {\npublic:\n  template \u003ctypename OStream_\u003e\n  void printTo(OStream_\u0026 out) const;\n};\n```\n"
    },
    {
      "commit": "0b6822804eb4fdeefc6143fbe72478c7309be7b7",
      "tree": "345c63f99bc7bb35505c0767d529253831f0ee6a",
      "parents": [
        "697910f23fc5b21d21fad20499e2a43dd0496092"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Feb 04 16:26:46 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:15:37 2026 +0100"
      },
      "message": "Wire TLS keys in Python for cross-tests\n\nConfigure Python test client/server to use shared test keys and CA for SSL.\nRemove Python SSL entries from known failures to re-enable SSL coverage.\n"
    },
    {
      "commit": "697910f23fc5b21d21fad20499e2a43dd0496092",
      "tree": "a35e28fe3df6296c57edc01fa2f4fdfcf7d202f5",
      "parents": [
        "d24b8a0240d49ccbbb318ea7562d0894a410dda7"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Fri Feb 13 14:12:43 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:15:18 2026 +0100"
      },
      "message": "Fixed en error preventing Thrift::NonblockingServer from working with SSL\n"
    },
    {
      "commit": "d24b8a0240d49ccbbb318ea7562d0894a410dda7",
      "tree": "6414282010beaaa4b01c7438f403fb2e5c7c7a5d",
      "parents": [
        "ded241d73207eed94417bb2a457ea03506646480"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Mon Dec 01 18:41:20 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Fri Feb 20 00:14:50 2026 +0100"
      },
      "message": "Cleaned up code supporting Ruby \u003c 2.0\n"
    },
    {
      "commit": "ded241d73207eed94417bb2a457ea03506646480",
      "tree": "75a97ca8483f4e4cfe1bfde0e4a2fdf623b9677e",
      "parents": [
        "fd9756c19d1ea5763ffd8be88fff1db1ccd0d6ba"
      ],
      "author": {
        "name": "HTHou",
        "email": "hhaonan@outlook.com",
        "time": "Fri Feb 13 22:23:51 2026 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Thu Feb 19 23:50:57 2026 +0100"
      },
      "message": "Remove threadsafe warnings in thrift-maven-plugin\n"
    },
    {
      "commit": "fd9756c19d1ea5763ffd8be88fff1db1ccd0d6ba",
      "tree": "cc6e1494ba1f7e48c56caf4d237eae737653815d",
      "parents": [
        "1e09a046e080765567b7125b01fd966c2596ee3f"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "wang@yuxuan.org",
        "time": "Tue Feb 10 17:34:09 2026 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Feb 11 07:18:42 2026 -0800"
      },
      "message": "Update supported go versions to 1.25+1.26\n\nFollow the release of go 1.26.0 today, go 1.24 is no longer supported by\nupstream.\n"
    },
    {
      "commit": "1e09a046e080765567b7125b01fd966c2596ee3f",
      "tree": "0caeb9c86a5416470a35a5a84ffc3d756d5bb38c",
      "parents": [
        "67bfb29af0837eefd32447c186d22aa45b2f1869"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Jan 29 10:36:28 2026 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Feb 08 22:09:37 2026 +0100"
      },
      "message": "Add moveable_types\u003dforward_setter option for perfect forwarding setters\n\nAdds `forward_setter` value to `moveable_types` option, generating perfect forwarding setters for complex types while preserving traditional setters for primitives. Also fixes missing `operator\u003c` implementation that caused link errors when structs are used as map keys.\n\n**Forward Setter Generation** (`compiler/cpp/src/thrift/generate/t_cpp_generator.cc`):\n- Parse `moveable_types\u003dforward_setter` option\n- Complex types (strings, containers, structs) → template setters with `std::forward\u003cT_\u003e`\n- Primitive types → traditional const-ref setters\n- Template implementations in `.tcc` file (auto-included in header)\n- Legacy `moveable_types` behavior unchanged\n\n**Compiler Unit Tests** (`compiler/cpp/tests/cpp/`):\n- New `test_forward_setter.thrift` fixture\n- Dedicated `t_cpp_generator_forward_setter_tests.cc` (91 assertions, 9 test cases)\n- Verify `.tcc` generation and template implementations\n\n**Integration Tests** (`test/cpp/src/`):\n- `ForwardSetterTest.cpp` - validates lvalue/rvalue/temporary/literal setters with move semantics\n- `PrivateOptionalTest.cpp` - SFINAE + static_assert verify optional fields are private\n- `EnumClassTest.cpp` - type_traits + static_assert verify true enum class semantics\n\n**CMakeLists.txt** (`test/cpp/`):\n- Separate gen-cpp-{forward,private,enumclass} directories\n\n**Makefile.am** (`test/cpp/`):\n- Library targets for each option variant\n- Proper `BUILT_SOURCES` dependencies\n- Include path ordering: option-specific directory before standard `gen-cpp`\n\n```cpp\n// Generated with --gen cpp:moveable_types\u003dforward_setter\n\nstruct TestStruct {\n  int32_t primitive_field;\n  std::string complex_field;\n\n  void __set_primitive_field(const int32_t val);  // Traditional\n\n  template \u003ctypename T_\u003e\n  void __set_complex_field(T_\u0026\u0026 val);  // Perfect forwarding\n};\n\n// In .tcc file:\ntemplate \u003ctypename T_\u003e\nvoid TestStruct::__set_complex_field(T_\u0026\u0026 val) {\n  this-\u003ecomplex_field \u003d ::std::forward\u003cT_\u003e(val);\n  __isset.complex_field \u003d true;\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\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\n"
    },
    {
      "commit": "67bfb29af0837eefd32447c186d22aa45b2f1869",
      "tree": "535f17d57dab9d7d73f8db45231374eaa076adda",
      "parents": [
        "84554fa31af2b04a5096546ef43d4f70c6f01506"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Jan 28 11:23:50 2026 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sun Feb 08 22:09:26 2026 +0100"
      },
      "message": "Implemented header protocol for Ruby client library\n"
    },
    {
      "commit": "84554fa31af2b04a5096546ef43d4f70c6f01506",
      "tree": "34c9fecc0d86e7162a723af98f122b71c9471985",
      "parents": [
        "d66874c0be0f050f969ccf081e4ad8b40287d57c"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Nov 19 19:41:05 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 07 01:09:56 2026 +0100"
      },
      "message": "Enable cross tests for Ruby library\n"
    },
    {
      "commit": "d66874c0be0f050f969ccf081e4ad8b40287d57c",
      "tree": "25d9e849cbab96f45b072491eb0293d434f72980",
      "parents": [
        "4966d0748b843dcdafad353aed6b634cce06fb66"
      ],
      "author": {
        "name": "Federico Giovanardi",
        "email": "federico.giovanardi@cnhind.com",
        "time": "Tue Jan 27 14:12:39 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 07 01:09:47 2026 +0100"
      },
      "message": "Do not shutdown() an external server socket\n\nFor the socket-activation use case the external socket should not\nbe shutdown() when the TServerSocket is closed.\n"
    },
    {
      "commit": "4966d0748b843dcdafad353aed6b634cce06fb66",
      "tree": "191b25495a7ee61d16822b421610be411554b268",
      "parents": [
        "4b69d1f47258bfd3db07dd60aa3df51ea233b110"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Feb 01 06:03:00 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 07 00:09:05 2026 +0100"
      },
      "message": "Bump com.diffplug.spotless from 8.1.0 to 8.2.1 in /lib/kotlin\n\nBumps com.diffplug.spotless from 8.1.0 to 8.2.1.\n\n---\nupdated-dependencies:\n- dependency-name: com.diffplug.spotless\n  dependency-version: 8.2.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "4b69d1f47258bfd3db07dd60aa3df51ea233b110",
      "tree": "3200ab62db378241f04960893766f55d5a4917b8",
      "parents": [
        "e01b1b0e5be8fb941b010c9c3868c22c98f52d8c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Feb 04 16:09:54 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 07 00:08:58 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": "e01b1b0e5be8fb941b010c9c3868c22c98f52d8c",
      "tree": "f89e88a948db14b94f65c01786df482274be5a26",
      "parents": [
        "d4cbd787494a9be6c54ffee14caaea9ff530d1c9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Feb 04 16:10:05 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 07 00:08:51 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": "d4cbd787494a9be6c54ffee14caaea9ff530d1c9",
      "tree": "28954f5074ce9417a1d731fcb0577156b0fdf59c",
      "parents": [
        "c99d09a231648d72e05a89d80281b38c9d0d1b9a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Feb 04 16:10:02 2026 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Sat Feb 07 00:08:43 2026 +0100"
      },
      "message": "Bump actions/checkout from 5 to 6\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 5 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/v5...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": "c99d09a231648d72e05a89d80281b38c9d0d1b9a",
      "tree": "a6ed70bf7945be3066df119ad31586e073cb46c9",
      "parents": [
        "62ec929629bed63d968a25a16085080a227a8abf"
      ],
      "author": {
        "name": "Gregg Donovan",
        "email": "gdonovan@etsy.com",
        "time": "Sun Feb 01 08:36:17 2026 -0500"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Feb 04 08:07:01 2026 -0800"
      },
      "message": "THRIFT-5564: Add Python to GitHub Actions cross-test matrix\n\nAdd Python (py) to the cross-language test matrix. Python was never\nincluded in the GitHub Actions cross-test despite being part of the\noriginal migration plan.\n\nChanges:\n- Add precross step to lib-python job (for Python 3.12)\n- Upload Python precross artifacts (lib, gen-py, test scripts)\n- Download Python artifacts in cross-test job\n- Add \u0027py\u0027 to server_lang and client_lang matrix\n- Install Python test dependencies in cross-test job\n- Add 582 known failures based on actual CI results\n- Remove 279 stale py3 entries (never validated in GitHub Actions)\n\nKnown failure categories added:\n- cpp-py: 54 SSL failures\n- go-py: 18 SSL failures\n- java-py: 72 SSL failures\n- py-cpp: 162 protocol incompatibilities\n- py-go: 48 protocol incompatibilities\n- py-java: 171 protocol incompatibilities\n- py-kotlin: 5 SSL failures\n- py-py: 72 SSL failures\n- py-rs: 40 protocol incompatibilities\n"
    },
    {
      "commit": "62ec929629bed63d968a25a16085080a227a8abf",
      "tree": "fe1e5f762936622a1d4f322c3fefcb238715f92b",
      "parents": [
        "dbdb429a8ca338d8b9bb082214a246cc61faca90"
      ],
      "author": {
        "name": "Gregg Donovan",
        "email": "gdonovan@etsy.com",
        "time": "Thu Jan 29 16:51:37 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 13:51:37 2026 -0800"
      },
      "message": "Fix Python 3.12 build issues in thrift Python (#3276)\n\n- Add pyproject.toml with setuptools build requirement for PEP 517 compliance\n- Replace distutils imports with setuptools equivalents\n- Use setuptools error names directly (CompileError, ExecError, PlatformError)\n- Fix macOS header collision with ntohll/htonll macros in endian.h\n- Add a matrix of MacOS versions (macos-15-intel, macos-14, macos-15,\n  macos-26)\n- Add a matrix of non-EOL Python versions for testing\n- Remove MSVC2015 from the test matrix (very old).\n- Support MSVC2022, the latest in AppVeyor.\n- Upgrade tornado, twisted, and zope.interface versions to the first\n  that support Python 3.12.\n- Try to make the test_socket, RunClientServer, and TestServer tests less flaky.\n\nThis fixes the ModuleNotFoundError: No module named \u0027distutils\u0027 error\nwhen building thrift with Python 3.12+."
    },
    {
      "commit": "dbdb429a8ca338d8b9bb082214a246cc61faca90",
      "tree": "4295c4597eee2b1195b80149259624d7b03f75bd",
      "parents": [
        "75a287728a8f68fb76dacc81cfe8d97b81afc362"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jan 28 01:18:18 2026 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 28 02:08:49 2026 +0100"
      },
      "message": "deprecation message\n"
    },
    {
      "commit": "75a287728a8f68fb76dacc81cfe8d97b81afc362",
      "tree": "c24734f688c1888cfec90a47509eed428f0c4d37",
      "parents": [
        "e9ac8e3f2603e0cd006c9395e03c03eddfff1aca"
      ],
      "author": {
        "name": "Dmytro Shteflyuk",
        "email": "kpumuk@kpumuk.info",
        "time": "Wed Dec 17 17:07:27 2025 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "Jens-G@users.noreply.github.com",
        "time": "Wed Jan 28 01:52:06 2026 +0100"
      },
      "message": "Added a special no-extension build to test the code paths without native extensions\n"
    },
    {
      "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"
    }
  ],
  "next": "e0d99c91a8dd096f798ed1270495f5b65e933c5a"
}
