)]}'
{
  "log": [
    {
      "commit": "452a8aaf2346b9cf11fc276a5f5e80a29659c77c",
      "tree": "66e37532fd409162281dad017170a51bc38af503",
      "parents": [
        "9d682e38022be326b5c8d9ec5a6eeaed3edf5eb1"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Jun 21 11:10:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 11:10:41 2026 +0100"
      },
      "message": "feat: [c++] Add MAP/ROW types, unify complex types under Value handle (#611)\n\n* [c++] Add MAP/ROW types, unify complex types under Value handle\n\n* address review\n\n* add int family tests for nested cases"
    },
    {
      "commit": "9d682e38022be326b5c8d9ec5a6eeaed3edf5eb1",
      "tree": "471ce493131e121d3754fbb99856929656cdd562",
      "parents": [
        "6c1c534fb4a70aeed3e6c37c532864e2001449db"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "anton.borisov@fresha.com",
        "time": "Fri Jun 19 23:33:40 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri Jun 19 23:50:25 2026 +0100"
      },
      "message": "tighten pub visibility for protos\n"
    },
    {
      "commit": "6c1c534fb4a70aeed3e6c37c532864e2001449db",
      "tree": "fa00afe098c3b8d17f5be16a36a20c0f62fdfe07",
      "parents": [
        "bf94c1c731432c8097326b224d632edb9f5bd0d6"
      ],
      "author": {
        "name": "warmbupt",
        "email": "warmbupt@gmail.com",
        "time": "Thu Jun 18 10:11:46 2026 +0800"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri Jun 19 23:50:25 2026 +0100"
      },
      "message": "[rust] Add RPC message wrappers for core DB/table operations\n\nAdd 9 RPC message wrapper types:\n- alter_database, alter_table (DDL operations)\n- get_table_stats (table statistics)\n- list_database_summaries (database listing with summaries)\n- create_acls, list_acls, drop_acls (ACL management)\n- describe_cluster_configs, alter_cluster_configs (cluster configuration)\n\nEach wrapper follows the standard pattern: a request struct wrapping the\nproto-generated type, implementing RequestBody (tying to ApiKey and ResponseBody),\nWriteType, and ReadType.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "bf94c1c731432c8097326b224d632edb9f5bd0d6",
      "tree": "68d9fb00eafe165c6aac7e20f9e122712dd25ad6",
      "parents": [
        "8c108ba408f8be17feff1c3d94a08af052438d57"
      ],
      "author": {
        "name": "Xiaobing Fang",
        "email": "bingxf@qq.com",
        "time": "Sat Jun 20 01:03:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 18:03:43 2026 +0100"
      },
      "message": "[client] Allow bootstrap endpoint with unknown server type (#622)\n\n* fix: allow unknown bootstrap server type\n\n* test: cover tablet bootstrap server endpoint\n\n* fix: align unknown server type mapping with Java client\n\n* docs: align cpp/python binding docs with Unknown server type\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "8c108ba408f8be17feff1c3d94a08af052438d57",
      "tree": "f229bde90057f05a119296481d84c9cf16cfbd4a",
      "parents": [
        "9bf1f4b821fb1c463f2531568dc049bf29ac6f5a"
      ],
      "author": {
        "name": "Pengcheng Huang",
        "email": "futuredaemon@gmail.com",
        "time": "Fri Jun 19 21:12:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 14:12:18 2026 +0100"
      },
      "message": "[rust] Sync Fluss 1.x proto definitions and ApiKey registry (#628)\n\n- Update fluss_api.proto with all 1.x message types (ACLs, KV snapshots,\n  producer offsets, cluster config, rebalance, server tags, etc.)\n- Add optional fields: rack, remote_data_dir, leader_epoch, agg_mode, etc.\n- Register 24 new ApiKey variants (1023-1064) in api_key.rs\n- Update build.rs prost bytes config for new proto fields\n- Add None defaults in convert.rs and partition.rs\n- Update pre-existing message wrappers that reference renamed proto fields /\n  ApiKey variants so the crate still builds:\n    * create_partition.rs: ignore_if_exists -\u003e ignore_if_not_exists\n    * get_latest_lake_snapshot.rs: ApiKey::GetLatestLakeSnapshot -\u003e GetLakeSnapshot\n    * list_databases.rs: populate new include_summary field\n    * lookup.rs: PbLookupReqForBucket.key -\u003e keys; new LookupRequest fields\n\nCo-authored-by: warmbupt \u003cwarmbupt@gmail.com\u003e\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "9bf1f4b821fb1c463f2531568dc049bf29ac6f5a",
      "tree": "04aade5a3cd5b3d966ece45c8e34534f5878f3ce",
      "parents": [
        "b98ab9c3b6444096743adf62bffcdf286658793c"
      ],
      "author": {
        "name": "Junbo Wang",
        "email": "beryllwang@gmail.com",
        "time": "Thu Jun 18 23:23:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 16:23:28 2026 +0100"
      },
      "message": "chore: fix tighten test cluster cleanup matching (#627)"
    },
    {
      "commit": "b98ab9c3b6444096743adf62bffcdf286658793c",
      "tree": "b5edafe900b37bcf1dd314755b95afc6b200366e",
      "parents": [
        "3187eb47d7e8e5a5640e4308e810771ce189ca6c"
      ],
      "author": {
        "name": "Junbo Wang",
        "email": "beryllwang@gmail.com",
        "time": "Thu Jun 18 06:23:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 23:23:30 2026 +0100"
      },
      "message": "chore: fix(test-cluster): manage containers via testcontainers\u0027 Docker client so start/stop share one runtime (#624)"
    },
    {
      "commit": "3187eb47d7e8e5a5640e4308e810771ce189ca6c",
      "tree": "ea5356f620c68d302d19eca97708b1e827d13127",
      "parents": [
        "8e3ed75610ddc282dfe38fde128340c35a62eeac"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Wed Jun 17 23:56:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 22:56:50 2026 +0100"
      },
      "message": "chore: [metrics] Add client metrics and prometheus example (#617)\n\n* Add client metrics and prometheus example\n\n* improvements\n\n* address reviews"
    },
    {
      "commit": "8e3ed75610ddc282dfe38fde128340c35a62eeac",
      "tree": "70cdccfe627c1ac4a5d0800552440668d32fa705",
      "parents": [
        "0f1415afa28bc03a73a94497e132ddb9cdce9c36"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Jun 14 01:40:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 01:40:26 2026 +0100"
      },
      "message": "[c++]  Limit batch scanner (#614)\n\n* [cpp] Limit scan\n\n* add test"
    },
    {
      "commit": "0f1415afa28bc03a73a94497e132ddb9cdce9c36",
      "tree": "6c9305d9cfb1b695e2cf1b38f4632debb2b5db59",
      "parents": [
        "c1e38b932d2fc084b018e2f04d89197349a32793"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 21:15:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 21:15:22 2026 +0100"
      },
      "message": "chore: bump tokio from 1.51.0 to 1.52.3 (#592)\n\nBumps [tokio](https://github.com/tokio-rs/tokio) from 1.51.0 to 1.52.3.\n- [Release notes](https://github.com/tokio-rs/tokio/releases)\n- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.51.0...tokio-1.52.3)\n\n---\nupdated-dependencies:\n- dependency-name: tokio\n  dependency-version: 1.52.3\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c1e38b932d2fc084b018e2f04d89197349a32793",
      "tree": "2fef23c01fb8d2e85d531fd2d24dece85f04659b",
      "parents": [
        "4818f46e7ddaeaa47d64ff2431eb0a68e41a965a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 21:09:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 21:09:15 2026 +0100"
      },
      "message": "chore: bump astral-sh/setup-uv from 7.6.0 to 8.2.0 (#591)\n\nBumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.6.0 to 8.2.0.\n- [Release notes](https://github.com/astral-sh/setup-uv/releases)\n- [Commits](https://github.com/astral-sh/setup-uv/compare/37802adc94f370d6bfd71619e3f0bf239e1f3b78...fac544c07dec837d0ccb6301d7b5580bf5edae39)\n\n---\nupdated-dependencies:\n- dependency-name: astral-sh/setup-uv\n  dependency-version: 8.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4818f46e7ddaeaa47d64ff2431eb0a68e41a965a",
      "tree": "b477adffecade69b6f793bf531172650f0cce7e2",
      "parents": [
        "c6ee4437300114f7665b3731bb9be56ceb73773b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 21:08:19 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 21:08:19 2026 +0100"
      },
      "message": "chore: bump mozilla-actions/sccache-action from 0.0.9 to 0.0.10 (#590)\n\nBumps [mozilla-actions/sccache-action](https://github.com/mozilla-actions/sccache-action) from 0.0.9 to 0.0.10.\n- [Release notes](https://github.com/mozilla-actions/sccache-action/releases)\n- [Commits](https://github.com/mozilla-actions/sccache-action/compare/7d986dd989559c6ecdb630a3fd2557667be217ad...9e7fa8a12102821edf02ca5dbea1acd0f89a2696)\n\n---\nupdated-dependencies:\n- dependency-name: mozilla-actions/sccache-action\n  dependency-version: 0.0.10\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c6ee4437300114f7665b3731bb9be56ceb73773b",
      "tree": "e3833fbf3d4fb74625c8f85cb4be3e9a48aa8fc6",
      "parents": [
        "d071c9066a22fe25009259fa4dbaaca9ee7324e3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 21:06:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 21:06:26 2026 +0100"
      },
      "message": "chore: bump rustler from 0.37.3 to 0.38.0 (#594)\n\nBumps [rustler](https://github.com/rusterlium/rustler) from 0.37.3 to 0.38.0.\n- [Release notes](https://github.com/rusterlium/rustler/releases)\n- [Changelog](https://github.com/rusterlium/rustler/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/rusterlium/rustler/compare/rustler-0.37.3...rustler-0.38.0)\n\n---\nupdated-dependencies:\n- dependency-name: rustler\n  dependency-version: 0.38.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d071c9066a22fe25009259fa4dbaaca9ee7324e3",
      "tree": "906e629b6bc592e2641b1a4c95fc533d4434d8fe",
      "parents": [
        "9cfeda7876929257d0bf1d68911560c971350fbc"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Wed Jun 10 23:31:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 23:31:36 2026 +0100"
      },
      "message": "[python] Limit scan (#613)"
    },
    {
      "commit": "9cfeda7876929257d0bf1d68911560c971350fbc",
      "tree": "ebaa364a64bc478615f0150f5306dc4496819264",
      "parents": [
        "c6d04a32d1d5d8d3e6a1b79453bd9d93ee8806b3"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Wed Jun 10 23:59:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:59:15 2026 +0100"
      },
      "message": "[python] Add stub test to catch pyi drift in CI (#616)\n\n* stub test to catch pyi drift\n\n* update development"
    },
    {
      "commit": "c6d04a32d1d5d8d3e6a1b79453bd9d93ee8806b3",
      "tree": "70cd85e7d9728398519cf9e373e7dfec956b9356",
      "parents": [
        "470c3c6d5864c78e28ac57a82114f9374d7a15d5"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicoleta.lazar@fresha.com",
        "time": "Thu Jun 11 00:45:44 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:45:44 2026 +0100"
      },
      "message": "[elixir] feat: Allow comment and custom_properties on create_database (#597)\n\n* [elixir] feat: Allow comment and custom_properties on create_database\n\nThread an optional DatabaseDescriptor through Fluss.Admin.create_database\nso callers can set a database comment and custom properties at creation\ntime.\n\n* Add missing admin test for create_database/4"
    },
    {
      "commit": "470c3c6d5864c78e28ac57a82114f9374d7a15d5",
      "tree": "e409549de6d447048db10c5d48cd99485d9a1dac",
      "parents": [
        "87303ea7500efd21885a90ea8cb58562474175f4"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Wed Jun 10 00:02:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 23:02:33 2026 +0100"
      },
      "message": "[python] Split examples in Python and enforce executability in CI for python examples (#610)\n\n* enforce executability in CI for python examples\n\n* [python] Add correctness assertions to examples and fix two .pyi stub bugs\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* add more examples with complex types\n\n---------\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "87303ea7500efd21885a90ea8cb58562474175f4",
      "tree": "4e1704ae4afbb0f00180cf16e08e2bd914c18710",
      "parents": [
        "63638eccf292fa1e71ac750c2e82f283af8349a7"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Mon Jun 08 23:34:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 22:34:56 2026 +0100"
      },
      "message": "[metrics] Add writer pipeline metrics (#609)\n\n* add writer pipeline metrics\n\n* Address comments\n\n* lint\n\n* fmt"
    },
    {
      "commit": "63638eccf292fa1e71ac750c2e82f283af8349a7",
      "tree": "9179c12b83ec370dcf24392bb6339c4a9d70cbab",
      "parents": [
        "0d24bddfe5b435750de7bf7e7ea9265098df5b6b"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon Jun 08 00:11:17 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 00:11:17 2026 +0100"
      },
      "message": "[c++] add prefix lookup (#606)\n\n* [c++] add prefix lookup\n\n* reword comment"
    },
    {
      "commit": "0d24bddfe5b435750de7bf7e7ea9265098df5b6b",
      "tree": "d31701f16af1c0d8d11f96aef46b14f5c1b90472",
      "parents": [
        "6242b99ddc99ce769fc48f0eaca5e77508d4a3e4"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon Jun 08 00:10:59 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 00:10:59 2026 +0100"
      },
      "message": "[python] map and row complex types support (#601)\n\n* [python] map and row complex type support\n\n* add additional types to from_arrow_field"
    },
    {
      "commit": "6242b99ddc99ce769fc48f0eaca5e77508d4a3e4",
      "tree": "9843c840be57fd15027b7a0796f1d0a5c43f78a3",
      "parents": [
        "fa80f693bd0d3891dc49674aee5acab5383bc0f8"
      ],
      "author": {
        "name": "Pengcheng Huang",
        "email": "futuredaemon@gmail.com",
        "time": "Sat Jun 06 19:37:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 19:37:20 2026 +0800"
      },
      "message": "docs: comprehensive README update (#600)"
    },
    {
      "commit": "fa80f693bd0d3891dc49674aee5acab5383bc0f8",
      "tree": "9f35511f45279401c3ed33e21a524b0c1daaa794",
      "parents": [
        "4e64847c0bd9824cc77dce65a252ab595e5faa3e"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Thu Jun 04 23:49:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 23:49:55 2026 +0100"
      },
      "message": "[elixir] Optimize CI/CD with proper actions, reusing compiled deps (#598)"
    },
    {
      "commit": "4e64847c0bd9824cc77dce65a252ab595e5faa3e",
      "tree": "dbf1070424efa09a0bf89526e5b7c04b54b38053",
      "parents": [
        "9f3e87781a4ddad70954e1abb882ae9fc6d40ad8"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicoleta.lazar@fresha.com",
        "time": "Wed Jun 03 13:38:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 13:38:36 2026 +0100"
      },
      "message": "[elixir] feat: Add get_database_info admin call (#586)\n\nThis commit adds the `get_database_info` admin call on `Fluss.Admin`,\nreturning a `Fluss.DatabaseInfo` struct that embeds a nested\n`Fluss.DatabaseDescriptor` (comment + custom properties).\n\nThe output-marshaling pattern follows the wrapper convention\nestablished by `get_server_nodes` in #583: bindings-local `Nif*`\nstructs with `from_core` builders, derived `NifStruct` for cross-FFI\nencoding.\n\nPart of #466."
    },
    {
      "commit": "9f3e87781a4ddad70954e1abb882ae9fc6d40ad8",
      "tree": "c50b061a3c09d84f3f2326b376859e050aa4f3a9",
      "parents": [
        "483b2c18b91c4617e02e6296e13fff8ac0c71054"
      ],
      "author": {
        "name": "Hongshun Wang",
        "email": "125648852+loserwang1024@users.noreply.github.com",
        "time": "Tue Jun 02 20:37:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 13:37:45 2026 +0100"
      },
      "message": "[rust] Support paimon key encoder. (#579)"
    },
    {
      "commit": "483b2c18b91c4617e02e6296e13fff8ac0c71054",
      "tree": "5fe9625be0d103a55ba44ebb1a0d6d573cc284b1",
      "parents": [
        "20e30e8fcfe83711c3bb358707423e564e6f3f6a"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Mon Jun 01 21:34:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 20:34:02 2026 +0100"
      },
      "message": "[metrics] Add last_poll_seconds_ago scanner metric (#581)\n\n* add last_poll_seconds_ago scanner metric\n\n* commit"
    },
    {
      "commit": "20e30e8fcfe83711c3bb358707423e564e6f3f6a",
      "tree": "71efe4ca18e8bd2f3281596731d3b48ac291141f",
      "parents": [
        "7d238ec57ee99bcaf6545736679828608200f479"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon Jun 01 20:24:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 20:24:21 2026 +0100"
      },
      "message": "feat: [rust] typed column-vector dispatch (#578)\n\n* [rust][row] typed column-vector dispatch with lazy nested ARRAY/MAP/ROW views\n\n* address comments"
    },
    {
      "commit": "7d238ec57ee99bcaf6545736679828608200f479",
      "tree": "b9961102c12db7a5edb7b26e9704bbb0fab1dff0",
      "parents": [
        "7848aaa9d735265416a6eb308b1de618f5d9cacc"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicoleta.lazar@fresha.com",
        "time": "Mon Jun 01 02:30:29 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 02:30:29 2026 +0100"
      },
      "message": "[elixir] feat: Add first batch of admin calls (#583)\n\nThis commit adds three admin methods on `Fluss.Admin` for:\n- checking whether a database exists\n- checking whether a table exists\n- retrieving the server nodes"
    },
    {
      "commit": "7848aaa9d735265416a6eb308b1de618f5d9cacc",
      "tree": "24b646e4d070e40f01d3493560bf99349dd06c94",
      "parents": [
        "7d71d6ba3f59e96da7d39ec7eab3227295a45af5"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicoleta.lazar@fresha.com",
        "time": "Sun May 31 03:39:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 03:39:51 2026 +0100"
      },
      "message": "[elixir] chore: Add dialyzer and tighten Fluss.Config setter guards (#582)"
    },
    {
      "commit": "7d71d6ba3f59e96da7d39ec7eab3227295a45af5",
      "tree": "f34f05aff98207b94552c7b0324c3581066c9eb0",
      "parents": [
        "1697ac29b693c14ec5b50681db68cb5ac81dbc6c"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicoleta.lazar@fresha.com",
        "time": "Fri May 29 00:36:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 00:36:13 2026 +0100"
      },
      "message": "[elixir] feat: Extend Fluss.Config with security, SASL and connect timeout options (#577)\n\n* feat(elixir): Extend NifConfig with security \u0026 connect timeout fields\n\nThis commit adds 5 fields to NifConfig: connect timeout ms and\nsecurity_* settings (protocol, sasl mechanism, usernama and password)\n\n* feat(elixir): Expose security opts and connect timeout in Fluss.Config\n\nThis commit adds 5 fields to Fluss.Config with the corresponding\nsetters: connect timeout, security protocol, sasl mechanism, username\nand password.\n\nTo ensure that the password is redacted, we add a custom Inspect impl,\nessentially mirroring the upstream rust debug redaction."
    },
    {
      "commit": "1697ac29b693c14ec5b50681db68cb5ac81dbc6c",
      "tree": "215ab04d5b3ad5bcae020c05a1db340dd614c262",
      "parents": [
        "5d90a4d2dcdefbe73e655962057fd76773869a45"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Thu May 28 22:51:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 21:51:31 2026 +0100"
      },
      "message": "chore: [ci] Fix rustdoc warning and promote warning to error in CI (#576)\n\n* fix rustdoc and promote warning to error in ci\n\n* address comments"
    },
    {
      "commit": "5d90a4d2dcdefbe73e655962057fd76773869a45",
      "tree": "9ceb731ddc1d43327898dc6e1875c2466a977214",
      "parents": [
        "426bb1a2803460aa9d583c034351fe03cecfcebd"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicoleta.lazar@fresha.com",
        "time": "Thu May 28 17:38:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 17:38:56 2026 +0100"
      },
      "message": "[elixir] feat: Extend Fluss.Config with scanner tuning options (#574)\n\n* feat(elixir): Extend NifConfig with scanner tuning fields\n\nThis commit adds 8 more scanner-tuning fields to NifConfig, covering the\nremote log prefetch, download concurrency, max poll records and fetch\nsize/time limits.\n\n* feat(elixir): Expose scanner tuning options on Fluss.Config\n\nThis commit adds 8 scanner-tuning fields to Fluss.Config with\ncorresponding set_* setters: remote prefetch count, remote log read\nconcurrency, file download thread count, max poll records and fetch\nsize/time bounds."
    },
    {
      "commit": "426bb1a2803460aa9d583c034351fe03cecfcebd",
      "tree": "28f83e1871cae053adbae141c100a9f7a1f7ed46",
      "parents": [
        "1aa24acb50d68e425cd1ea4e68d9715372e3d240"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "anton.borisov@fresha.com",
        "time": "Wed May 27 01:31:55 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Thu May 28 09:57:12 2026 +0100"
      },
      "message": "[client] Fix KV limit-scan decode + enforce limit, support schema evolution\n"
    },
    {
      "commit": "1aa24acb50d68e425cd1ea4e68d9715372e3d240",
      "tree": "e7569ee2076297f714fe63cfb9dc8a34c971e0de",
      "parents": [
        "9f69ae46529d8d82b65fd74dcd00315b02074ab8"
      ],
      "author": {
        "name": "Arnav-Panjla",
        "email": "arnavpanjla@gmail.com",
        "time": "Wed May 27 00:35:26 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Thu May 28 09:57:12 2026 +0100"
      },
      "message": "[client] Implement BatchScanner with limit-based scan\n\nImplements a one-shot bounded BatchScanner backed by a single\nLimitScanRequest RPC (fixes #316):\n- adds TableScan::limit and create_batch_scanner\n- eager RPC with leader resolution (mirrors Lookuper)\n- Arrow IPC (log) and KV -\u003e RecordBatch (PK) decoding\n- projection support\n\nSquashed from PR #515.\n"
    },
    {
      "commit": "9f69ae46529d8d82b65fd74dcd00315b02074ab8",
      "tree": "102c42bbcdc3f1326a1531889c88e0f52a593b8f",
      "parents": [
        "2e664e1118e8c43e9858c649c0928b07569d7aba"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Thu May 28 15:54:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 08:54:53 2026 +0100"
      },
      "message": "[tests] replace fixed tokio::time::sleep workarounds with wait_for_table_ready helper. (#564)\n\n* [tests] replace fixed tokio::time::sleep workarounds with wait_for_table_ready helper.\n\n* [tests] replace fixed tokio::time::sleep workarounds with wait_for_table_ready helper.\n\n* [tests] replace fixed tokio::time::sleep workarounds with wait_for_table_ready helper."
    },
    {
      "commit": "2e664e1118e8c43e9858c649c0928b07569d7aba",
      "tree": "d3335529a8c3de122902020871d98d1b44d7a0f5",
      "parents": [
        "9eee50021ca457ab0daffc2a050cc3e56f61ec66"
      ],
      "author": {
        "name": "Nicoleta Lazar",
        "email": "nicolazar91@gmail.com",
        "time": "Wed May 27 09:03:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 09:03:36 2026 +0100"
      },
      "message": " [elixir] feat: Extend Fluss.Config with writer tuning options (#566)\n\n* feat(elixir): Extend NifConfig with writer tuning fields\n\nThis commit adds eight new fields to NifConfig covering writer tuning, such\nas: acks, retries, request max size, idempotence, buffer memory / wait\ntimeout, max in flight requests per bucket, and the bucket-assigner enum\n(:sticky or :round_robin atoms via NifUnitEnum)\n\n* feat(elixir): Expose writer tuning options on Fluss.Config\n\nThis commit adds eight writer-tuning fields to Fluss.Config and exposes\nthe corresponding setters: acks, retries, request max size, idempotence,\nbuffer, memory/wait timeout, max inflight requests per bucket, and\nbucket-assigner enum."
    },
    {
      "commit": "9eee50021ca457ab0daffc2a050cc3e56f61ec66",
      "tree": "b2660d6942827a46560ee05fd529756735177419",
      "parents": [
        "4ca24ea03492c412bc3f7912dae081acf8e00b22"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Tue May 26 23:11:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 22:11:17 2026 +0100"
      },
      "message": "feat: [metrics] Add database and table labels for scanner metrics (#565)\n\n* add database and table label to scanner metrics\n\n* revert dropped comments\n\n* revert dropped comments\n\n* refactor to avoid clones many times\n\n* optimize tests"
    },
    {
      "commit": "4ca24ea03492c412bc3f7912dae081acf8e00b22",
      "tree": "83c6a41f02ff258377f7bf4352c5c4d48db1ac59",
      "parents": [
        "4a836eaeeae49c0bb9fa9057a89f88e6cdd960a3"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Tue May 26 16:42:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 15:42:56 2026 +0100"
      },
      "message": "[metrics] Add scanner poll-timing metrics (#555)\n\n* Add scanner poll timing metrics\n\n* cargo fmt\n\n* improve overlapping polls scenario\n\n* address feedback"
    },
    {
      "commit": "4a836eaeeae49c0bb9fa9057a89f88e6cdd960a3",
      "tree": "2d0aa9cc93c2b738d3c808bb621557c12dc5c74c",
      "parents": [
        "840a41a94e2e4a9b68bc1b436b0450db6000656a"
      ],
      "author": {
        "name": "slfan1989",
        "email": "55643692+slfan1989@users.noreply.github.com",
        "time": "Tue May 26 01:14:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 18:14:25 2026 +0100"
      },
      "message": "[test] Add Rust integration coverage for RecordBatchLogReader bounded reads. (#559)"
    },
    {
      "commit": "840a41a94e2e4a9b68bc1b436b0450db6000656a",
      "tree": "ae1faaeee50223796a485d66ead424dcbfffdab3",
      "parents": [
        "a1712bb346f5b0850180b77e1e85cddb3b687ab8"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon May 25 09:39:45 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 09:39:45 2026 +0100"
      },
      "message": "[rust] integration tests for MAP dt + restructure ITs for complex dts (#560)\n\n* [rust] integration tests for MAP dt + restructure tests around complex types (#549)\n\n* address comments"
    },
    {
      "commit": "a1712bb346f5b0850180b77e1e85cddb3b687ab8",
      "tree": "93fb6a01f07b9f7da0d6dc2d3e107a04197b443c",
      "parents": [
        "15bf742d2c42d93e894a44e973307a246ffab6e6"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sat May 23 23:46:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 23 23:46:42 2026 +0100"
      },
      "message": "[ci] scope rust integration job to test_fluss target only (#561)"
    },
    {
      "commit": "15bf742d2c42d93e894a44e973307a246ffab6e6",
      "tree": "9d1a3ff679a883246abbd05bc60e0b2fe87af92d",
      "parents": [
        "b090e50e2b2b93e828f0274acba912193231ab13"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "anton.borisov@fresha.com",
        "time": "Sat May 23 20:27:09 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sat May 23 20:40:36 2026 +0100"
      },
      "message": "[chore] improve ergonomics for MAP dt, docs additions\n"
    },
    {
      "commit": "b090e50e2b2b93e828f0274acba912193231ab13",
      "tree": "72d188bd61d221b7636b1641e29baf4f09687e0a",
      "parents": [
        "3bbfa95db04e5be002d42dce600a2ce22f115a07"
      ],
      "author": {
        "name": "Jared Yu",
        "email": "qzyu999@gmail.com",
        "time": "Mon May 18 20:02:55 2026 -0700"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sat May 23 20:40:36 2026 +0100"
      },
      "message": "docs: add documentation for MAP dtype (#556)\n"
    },
    {
      "commit": "3bbfa95db04e5be002d42dce600a2ce22f115a07",
      "tree": "19290a0ad325cce7851b66ba00c8cc97bdd5fa9d",
      "parents": [
        "97231ea0ab366f0d0f6d98eb8fcbc3756b13e962"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Tue May 19 02:46:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 01:46:33 2026 +0100"
      },
      "message": "[metrics] Add scanner fetch and remote download metrics (#553)\n\n* add scanner fetch and remote download metrics\n\n* add scanner fetch and remote download metrics"
    },
    {
      "commit": "97231ea0ab366f0d0f6d98eb8fcbc3756b13e962",
      "tree": "f1d483f786ab0212d8103e76cda6ba2fc5b7d056",
      "parents": [
        "c475f895fb537889362d204316b1954ae03c646f"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri May 15 14:23:57 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 14:23:57 2026 +0100"
      },
      "message": "chore: fix main broken due to new clippy useless_conversion (#548)"
    },
    {
      "commit": "c475f895fb537889362d204316b1954ae03c646f",
      "tree": "376fb60f8b5b5c46ece5bc587c6dae8a92867a3e",
      "parents": [
        "d88df5dab04aa3065005e3f5724178647ed4014c"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "anton.borisov@fresha.com",
        "time": "Fri May 15 12:56:38 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri May 15 13:53:47 2026 +0100"
      },
      "message": "fix: close Arrow read-path gaps for MAP\n"
    },
    {
      "commit": "d88df5dab04aa3065005e3f5724178647ed4014c",
      "tree": "d951ced8526094b8c56f4cf3c322bdf70f4ab64f",
      "parents": [
        "350d9362249914daa9e60f2ff57012702b408d20"
      ],
      "author": {
        "name": "Jared Yu",
        "email": "qzyu999@gmail.com",
        "time": "Fri May 15 12:56:38 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri May 15 13:53:47 2026 +0100"
      },
      "message": "feat: implement MAP data type support\n"
    },
    {
      "commit": "350d9362249914daa9e60f2ff57012702b408d20",
      "tree": "239c05effed1c131fc6b0b12575381d3acc8c203",
      "parents": [
        "2b719f1152b9288d4a2c65bf5f6700ff992c3f65"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Thu May 14 11:11:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 10:11:14 2026 +0100"
      },
      "message": "feat: Add RecordBatchLogReader for bounded log reading (#446)\n\n* Add RecordBatchLogReader for bounded log reading\n\n* address comments\n\n* update doc\n\n* update doc and inline comments\n\n* rebase and follow up after rebase of new changes, and fix a corner issue\n\n* feedback\n\n* run tests in thread to avoid asyncio event loop starvation\n\n* address feedback"
    },
    {
      "commit": "2b719f1152b9288d4a2c65bf5f6700ff992c3f65",
      "tree": "e291dd46ac00eba9e5d1d2a8dd742a17c5390ecf",
      "parents": [
        "d4a0bb6c784568183f6ddac10a7ba493fb37cfb4"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "anton.borisov@fresha.com",
        "time": "Sun May 10 19:14:32 2026 +0100"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Wed May 13 12:53:05 2026 +0100"
      },
      "message": "fixes and improvements\n"
    },
    {
      "commit": "d4a0bb6c784568183f6ddac10a7ba493fb37cfb4",
      "tree": "b2ab9a1eb291b484ffd456f2cce1e0634cd99fa4",
      "parents": [
        "e6e19af97955f4e2a1954e8792cd9f497ccb7d7d"
      ],
      "author": {
        "name": "hemanthsavasere",
        "email": "hemanth.savasere@gmail.com",
        "time": "Sun Mar 15 18:27:30 2026 +0000"
      },
      "committer": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Wed May 13 12:53:05 2026 +0100"
      },
      "message": "feat: add end-to-end ROW (nested struct) column serialization support\n\n- Add `Datum::Row(Box\u003cGenericRow\u003e)` variant with `as_row()` accessor\n- Add `get_row()` to `InternalRow` trait with default error impl\n- Implement `GenericRow::get_row()` and `CompactedRow::get_row()` delegation\n- Implement `ColumnarRow::get_row()` with Arrow StructArray extraction + OnceLock caching\n- Add `InnerValueWriter::Row(RowType)` and write path via nested CompactedRowWriter\n- Add `DataType::Row` arm in `CompactedRowDeserializer` for eager nested decode\n- Add `InnerFieldGetter::Row` and hook up FieldGetter/ValueWriter pipeline\n- Handle `Datum::Row` in `resolve_row_types` (C++ bindings)\n- Add round-trip tests: simple nesting, deep nesting, nullable fields, ROW as primary key\n\nWire format matches Java: varint-length-prefixed blob of a complete CompactedRow.\n"
    },
    {
      "commit": "e6e19af97955f4e2a1954e8792cd9f497ccb7d7d",
      "tree": "681f723f3c360db5ae65d707b154ddc1d1477e8a",
      "parents": [
        "3cd76f348b891ad25980f717650065fc46a63b1a"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun May 10 21:13:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 20:13:52 2026 +0100"
      },
      "message": "capture cluster container logs as CI artifact (#542)"
    },
    {
      "commit": "3cd76f348b891ad25980f717650065fc46a63b1a",
      "tree": "759ce1eb51d78aaef8cbf623818330928e0c093a",
      "parents": [
        "be1588053ca968cf6e51ea86f0b401ad21f3c7c8"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun May 10 15:11:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 14:11:40 2026 +0100"
      },
      "message": "[python] Add prefix lookup support in python (#540)\n\n* add prefix lookup support in python\n\n* add more tests"
    },
    {
      "commit": "be1588053ca968cf6e51ea86f0b401ad21f3c7c8",
      "tree": "01c311a5bfa33b86ebb3166e8abb5a178e5a72e8",
      "parents": [
        "3b9a0f3674d1ed757403503ea48ed83eb1db740c"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun May 10 13:52:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 12:52:32 2026 +0100"
      },
      "message": "[tests] Add integration tests for array data type (#523)\n\n* Add integration tests for array data type\n\n* Address review comments\n\n* Consolidate tests\n\n* Conslidate tests\n\n* resolve conflicts"
    },
    {
      "commit": "3b9a0f3674d1ed757403503ea48ed83eb1db740c",
      "tree": "f88a82e93c77fbb48c896e5bd21c0df995fef911",
      "parents": [
        "90d7f724135725df8a7828f1b55545992e63affc"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun May 10 12:08:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 12:08:21 2026 +0100"
      },
      "message": "[rust][writer] Add DynamicWriteBatchSizeEstimator (#532)\n\n* [rust][writer] Add DynamicWriteBatchSizeEstimator\n\n* [rust][writer] Match Java defaults and key shape\n\n* address feedback"
    },
    {
      "commit": "90d7f724135725df8a7828f1b55545992e63affc",
      "tree": "a3465053bd9b7162338f2585080c007fbcd8e786",
      "parents": [
        "dbbaf9b8c398d019cef3bca1065a83e8d5eaea0a"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sat May 09 22:46:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 21:46:53 2026 +0100"
      },
      "message": "Support FixedSizeBinary in python (#538)"
    },
    {
      "commit": "dbbaf9b8c398d019cef3bca1065a83e8d5eaea0a",
      "tree": "e11d5dc24d41c884bc35d4bbbcae296d977a331d",
      "parents": [
        "860be9e4877a4714489757904c7544315bfb2d7b"
      ],
      "author": {
        "name": "Hongshun Wang",
        "email": "125648852+loserwang1024@users.noreply.github.com",
        "time": "Sat May 09 16:53:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 09:53:13 2026 +0100"
      },
      "message": "[rust] Support API_VERSION in rust client. (#531)\n\n* [rust] Support API_VERSION in rust client\n\n* remove useless write_version_type and read_version_type which is same as java client does.\n\n* Add test about kv_format_v2.\n\n* return apiKey.highestSupportedVersion as default.\n\n* check whether server type mismatch.\n\n* add test about unknown server type"
    },
    {
      "commit": "860be9e4877a4714489757904c7544315bfb2d7b",
      "tree": "90ef39fb020f03ef3a713ea1526d290730453581",
      "parents": [
        "db824d751488ec618d77bc3b4866725d403b6867"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Fri May 08 13:52:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 12:52:45 2026 +0100"
      },
      "message": "[c++] Add nullability support for data type in c++ (#525)\n\n* Add nullability support for data type in c++\n\n* add comment to explain nullability setup\n\n* split scalar and array\n\n* rephrase since behavriour change fater this PR\n\n* rephrase since behavriour change fater this PR\n\n* format"
    },
    {
      "commit": "db824d751488ec618d77bc3b4866725d403b6867",
      "tree": "043c53d372bd8fa27638f4225cfbf9b6423b0f0d",
      "parents": [
        "e48a8a78bb7e6ded229020c7cb9d175102b85cb5"
      ],
      "author": {
        "name": "Prajwal banakar",
        "email": "prajwal.banakara@gmail.com",
        "time": "Wed May 06 13:27:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 08:57:28 2026 +0100"
      },
      "message": "chore: Add validation for numeric config fields (#449)\n\n* Add validation for numeric config fields\n\n* improved\n\n* Added issue comments\n\n* fix: resolve clippy empty-line-after-doc-comments warning"
    },
    {
      "commit": "e48a8a78bb7e6ded229020c7cb9d175102b85cb5",
      "tree": "e22687d92ef19106624dbc495eefe7358655f0d5",
      "parents": [
        "f7e9cb90ce96a6992715d7e32cbf4982fc98d1fc"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun May 03 22:53:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 21:53:02 2026 +0100"
      },
      "message": "chore: fix python CI - reduce workers to 2 with loadfile distribution (#529)"
    },
    {
      "commit": "f7e9cb90ce96a6992715d7e32cbf4982fc98d1fc",
      "tree": "d3f97bf8801659cc759067072cd35eebeecc907d",
      "parents": [
        "093b31e0b5344d66c79391c54dc55bbdf8c3042c"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun May 03 15:25:10 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 15:25:10 2026 +0100"
      },
      "message": "[rust] lookup decoding schema id  (#517)"
    },
    {
      "commit": "093b31e0b5344d66c79391c54dc55bbdf8c3042c",
      "tree": "354e4e52d159a3c897f52553c79578cd4c996028",
      "parents": [
        "f23fd87f6578bf8960f9397a5c2c0fc041c51c88"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun May 03 15:29:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 14:29:35 2026 +0100"
      },
      "message": "feat: Add nullability support in python (#522)"
    },
    {
      "commit": "f23fd87f6578bf8960f9397a5c2c0fc041c51c88",
      "tree": "4d1a47e0f5609d012721ef7b2dc9218418e55cb4",
      "parents": [
        "92a614fc630c3936920cf0684f478d8df83eb532"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun May 03 14:14:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 14:14:22 2026 +0100"
      },
      "message": "chore: fix context_manager in python for async handling (#527)"
    },
    {
      "commit": "92a614fc630c3936920cf0684f478d8df83eb532",
      "tree": "ff042d48cd00a5abaca389bf86aef07bd49ce3f9",
      "parents": [
        "a3a3a50b15b8b63824301c02718d32f95b70e2a8"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun May 03 13:13:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 13:13:58 2026 +0100"
      },
      "message": "feat: make LogScanner poll methods async to prevent event loop blocking (#495)\n\nConvert poll(), poll_record_batch(), poll_arrow(), to_arrow(), to_pandas()\nfrom sync (py.detach + block_on) to async (future_into_py).\n\nThe sync methods blocked the asyncio event loop thread, preventing\nconcurrent future_into_py tasks from delivering results. This caused\ndeadlocks when users ran multiple async operations simultaneously.\n\nBreaking change: these methods now return awaitables instead of direct values."
    },
    {
      "commit": "a3a3a50b15b8b63824301c02718d32f95b70e2a8",
      "tree": "7e360c40a92dec6d4c77c5b2c9a437694d19238d",
      "parents": [
        "c70e2e360c7ae012d934bc0de554df32fff011d0"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun May 03 12:58:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 12:58:55 2026 +0100"
      },
      "message": "fix: [bindings] map RpcError to NetworkException for Java parity (#519)"
    },
    {
      "commit": "c70e2e360c7ae012d934bc0de554df32fff011d0",
      "tree": "782ab4f2d012e313fe9fe0242ef853d231440bc8",
      "parents": [
        "0c21fa5f381f1d00190412240c55a91e12860852"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 03 11:54:37 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 11:54:37 2026 +0100"
      },
      "message": "chore: bump rustls-webpki from 0.103.10 to 0.103.13 (#513)\n\nBumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.10 to 0.103.13.\n- [Release notes](https://github.com/rustls/webpki/releases)\n- [Commits](https://github.com/rustls/webpki/compare/v/0.103.10...v/0.103.13)\n\n---\nupdated-dependencies:\n- dependency-name: rustls-webpki\n  dependency-version: 0.103.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0c21fa5f381f1d00190412240c55a91e12860852",
      "tree": "659198879532859f5288ae5199282908c4e9c3bf",
      "parents": [
        "ea6d6c7adcada74d5d658234b2a31fc0a1ad20eb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 03 11:53:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 11:53:36 2026 +0100"
      },
      "message": "chore: bump actions/upload-artifact from 4 to 7 (#521)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...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\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ea6d6c7adcada74d5d658234b2a31fc0a1ad20eb",
      "tree": "cf9509d099736935243351fbcc57b9bd011c2db3",
      "parents": [
        "116dc25a92f4791bfc3297eed32b2c0e0af04026"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 03 11:52:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 11:52:41 2026 +0100"
      },
      "message": "chore: bump rand from 0.9.2 to 0.9.3 (#512)\n\nBumps [rand](https://github.com/rust-random/rand) from 0.9.2 to 0.9.3.\n- [Release notes](https://github.com/rust-random/rand/releases)\n- [Changelog](https://github.com/rust-random/rand/blob/0.9.3/CHANGELOG.md)\n- [Commits](https://github.com/rust-random/rand/compare/rand_core-0.9.2...0.9.3)\n\n---\nupdated-dependencies:\n- dependency-name: rand\n  dependency-version: 0.9.3\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "116dc25a92f4791bfc3297eed32b2c0e0af04026",
      "tree": "585bc69042d13a851732616d3494b6795648f2c5",
      "parents": [
        "88c2ee5399f6a660a0ef53c2791e9e4fa87fa569"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sat May 02 18:38:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:38:05 2026 +0300"
      },
      "message": "chore: regenerate Cargo.lock for declared metrics deps (#518)"
    },
    {
      "commit": "88c2ee5399f6a660a0ef53c2791e9e4fa87fa569",
      "tree": "9a6f8e92da395c0e8e48e200ee9810dd431aaad8",
      "parents": [
        "012ec4f58d036e811a2fd70e3a10737e07c7db04"
      ],
      "author": {
        "name": "Jared Yu (余启正)",
        "email": "qzyu999@gmail.com",
        "time": "Thu Apr 30 00:34:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 08:34:48 2026 +0100"
      },
      "message": "feat: (Python) Add async context manager (#487)\n\n* feat: implement async context manager support for connection, writers, and scanners in Python bindings\n\n* feat: expand python context manager test coverage for scanners and connections\n\n* refactor: adjust indentation and clean up Python example code structure\n\n* fix: Add self.close()?; to __aexit__ in connection.rs\n\n* fix: Cleanup docstring\n\n* feat: implement graceful connection shutdown with async close and update Python bindings accordingly\n\n* feat: add optional timeout parameter to Python connection close method\n\n* feat: revert python example indentation and add example for async context manager\n\n* fix: revert changes to original example.py\n\n* fix: revert changes to example.py (again)\n\n* fix: always flush writers on context manager exit\n\n* refactor: polish connection signature and clean up tests\n\n* fix: prevent flush errors from masking in-flight exceptions\n\n* fix: update dictionary in append to include all 9 fields in the schema\n\n* refactor: update the __aexit__ to use is_exc_none for FlussConnection\n\n* fix: move the async context manager demo to avoid the dropped table issue\n\n* refactor: update is_exc_none to use is_none_or instead of map_or in compliance with clippy linting standards\n\n* test: replace static sleep intervals with wait_for_table_ready fixture for robust table initialization\n\n* docs: update Python examples and API reference to reflect async connection and context manager usage\n\n* test: include \"not leader or follower\" in retryable error conditions within test suite"
    },
    {
      "commit": "012ec4f58d036e811a2fd70e3a10737e07c7db04",
      "tree": "22ae5d42acd7e702be52c729b90f6f63f34f7d7d",
      "parents": [
        "69941d5d926009e18bca7bd0cdf602ad665d29cc"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Wed Apr 29 20:14:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 20:14:58 2026 +0100"
      },
      "message": "feat: [elixir] fine-grained errors (#507)"
    },
    {
      "commit": "69941d5d926009e18bca7bd0cdf602ad665d29cc",
      "tree": "59850e3dfc1897821020a979b4a6c71c5c94159d",
      "parents": [
        "2009592d636551de3d11284ff58da29b56805dee"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 26 20:43:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 19:43:04 2026 +0100"
      },
      "message": "feat: Basic CI/CD for elixir (#497)\n\n* [elixir] Basic CI/CD for elixir\n\n* plain install approach\n\n* use now allowlisted action"
    },
    {
      "commit": "2009592d636551de3d11284ff58da29b56805dee",
      "tree": "348199f32432202ab2a34ec6ca67e090b8f93866",
      "parents": [
        "9212b26937b10312130d4b048bf5d9c8a09436e1"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun Apr 26 04:00:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 10:00:58 2026 +0800"
      },
      "message": "feat: [metrics] Create metrics framework and add connection metrics (#407)"
    },
    {
      "commit": "9212b26937b10312130d4b048bf5d9c8a09436e1",
      "tree": "fc319f5501f6e5aec769ac1e88201679f400d9dd",
      "parents": [
        "85b3a3c2a94b20d8328e6c8afbf6ec68ec63d879"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Apr 25 10:37:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 10:37:02 2026 +0800"
      },
      "message": "build(deps): bump actions/download-artifact from 4 to 8 (#408)"
    },
    {
      "commit": "85b3a3c2a94b20d8328e6c8afbf6ec68ec63d879",
      "tree": "cfb1d9ecf8cc85ff1ee596ab9604434a2f1d8bc3",
      "parents": [
        "d46fa05a1ea9a6595b08b7b93d6ce3e165e2d36d"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Fri Apr 24 01:15:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 07:15:46 2026 +0800"
      },
      "message": "[c++] Add c++ support for Array data type (#501)"
    },
    {
      "commit": "d46fa05a1ea9a6595b08b7b93d6ce3e165e2d36d",
      "tree": "52b534ff234a4bde1ae844eb09b426ffd013934d",
      "parents": [
        "d4505d248743c21ad6757379cdc079f29e48b9f1"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon Apr 20 00:40:59 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 00:40:59 2026 +0100"
      },
      "message": "chore: use the same cache in rust integration tests (#506)\n\n* [ci] chore: use the same cache in rust integration tests\n\n* further optimizations"
    },
    {
      "commit": "d4505d248743c21ad6757379cdc079f29e48b9f1",
      "tree": "30950008e2c26f5965a9aa8add490c73286539c4",
      "parents": [
        "d29940603df31a30c0a4262aec4d2d5d63fa6c3b"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 19 20:55:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 20:55:15 2026 +0100"
      },
      "message": "feat: [rust] prefix lookup support (#500)\n\n* [rust] prefix lookup support\n\n* fix fmt\n\n* address comments\n\n* address comments\n\n* Address comments 2"
    },
    {
      "commit": "d29940603df31a30c0a4262aec4d2d5d63fa6c3b",
      "tree": "fb9f7abb1f815dcc5ea947e6c8d24a85790b7a90",
      "parents": [
        "81545c6a4c2fd221e0a9f52a490c982a3db85fab"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 19 20:44:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 20:44:01 2026 +0100"
      },
      "message": "[rust][chore] fix unknow error code lost for forward compatibility path (#509)"
    },
    {
      "commit": "81545c6a4c2fd221e0a9f52a490c982a3db85fab",
      "tree": "02261807a8ddc85cd0f8dd5ca78f757d4ea935b3",
      "parents": [
        "b13295854ea833bb9dd715775d04b9c1e4da7953"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 19 03:32:00 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 10:32:00 2026 +0800"
      },
      "message": "[ci] cache C++ build with sccache (#505)"
    },
    {
      "commit": "b13295854ea833bb9dd715775d04b9c1e4da7953",
      "tree": "82303834f51fdcd132e2a3bffcb83c368619135f",
      "parents": [
        "95ad7574d91977d79b01afc338106b75d150cc7c"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 19 02:38:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 09:38:51 2026 +0800"
      },
      "message": "[ci] optimize check_license_and_formatting (#503)"
    },
    {
      "commit": "95ad7574d91977d79b01afc338106b75d150cc7c",
      "tree": "519ef43dcd991e76e16fd01dea19c48989c63ddc",
      "parents": [
        "be4e2d1270b94a2e01c68d5ce407f5571e28d97f"
      ],
      "author": {
        "name": "SkylerLin",
        "email": "44233950+linguoxuan@users.noreply.github.com",
        "time": "Fri Apr 17 22:23:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 22:23:44 2026 +0800"
      },
      "message": "feat: support batch lookup (#216)\n\n---------\n\nCo-authored-by: Anton Borisov \u003canton.borisov@fresha.com\u003e\nCo-authored-by: Keith Lee \u003cleekei@apache.org\u003e"
    },
    {
      "commit": "be4e2d1270b94a2e01c68d5ce407f5571e28d97f",
      "tree": "a25bc39b8e047b948863d397fd7c83149f6db52a",
      "parents": [
        "6881f2c8340886f77e67fd0c6b5eb7d6752dd5fe"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri Apr 17 12:24:30 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 19:24:30 2026 +0800"
      },
      "message": "[ci/cd] fix python tests with more strict scoping (#494)"
    },
    {
      "commit": "6881f2c8340886f77e67fd0c6b5eb7d6752dd5fe",
      "tree": "4c37ff67a652bf5199e1daaeb3a03e6522726ab2",
      "parents": [
        "bf08166b6e0619386dd08a2b82fa9632083fa55c"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Thu Apr 16 10:48:47 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 17:48:47 2026 +0800"
      },
      "message": "feat: Elixir bindings initial PR (#452)"
    },
    {
      "commit": "bf08166b6e0619386dd08a2b82fa9632083fa55c",
      "tree": "78511efbf0e6661460606c480c7028df7f9878dc",
      "parents": [
        "4ced419af90ff2da36d62505fd6f43201baa95e9"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon Apr 13 20:04:38 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 20:04:38 2026 +0100"
      },
      "message": "feat: Byte-sized cap instead of hard one for ArrowWriter (#443)\n\n* [TASK-431] Byte-sized cap instead of hard one for ArrowWriter\n\n* Address feedback\n\n* rebase fix\n\n* Remove unused as_builder_mut\n\n* Remove unused finish_cloned\n\n---------\n\nCo-authored-by: Keith Lee \u003cleekei@apache.org\u003e"
    },
    {
      "commit": "4ced419af90ff2da36d62505fd6f43201baa95e9",
      "tree": "5c4c0266ebefbe0144b3f17d9a714e6daed00535",
      "parents": [
        "ecc8a0a282f62d8f0cfbeb16a46354d523eae4a3"
      ],
      "author": {
        "name": "Keith Lee",
        "email": "leekei@apache.org",
        "time": "Mon Apr 13 08:27:09 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 08:27:09 2026 +0100"
      },
      "message": "[ci] Upgrade checkout@v4 to v6 and setup-python@v5 to v6 (#491)\n\n* [ci] upgrade checkout@v4 to v6 and setup-python@v5 to v6\n\nMigrate away from deprecated Node.js 20 GitHub Actions before the\nJune 2026 forced migration deadline.\n\nCloses #490\n\n* [ci] remove unrelated audit.yml from this PR"
    },
    {
      "commit": "ecc8a0a282f62d8f0cfbeb16a46354d523eae4a3",
      "tree": "78cfb9a34bc775b21b35e0cef4bfbc6aa264d84b",
      "parents": [
        "74d88cde014585ea7d7aa2e734d758c04f2b5947"
      ],
      "author": {
        "name": "Jared Yu (余启正)",
        "email": "qzyu999@gmail.com",
        "time": "Sun Apr 12 23:11:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 07:11:09 2026 +0100"
      },
      "message": "feat: Add array data type support for Python (#474)\n\n* feat: add support for Arrow List and LargeList types with Python bindings and tests\n\n* feat: add support for Arrow FixedSizeList arrays\n\n* fix: Fix the error message in columnar_row_get_array_non_list_column_returns_error to match the new error message from get_array()\n\n* chore: Fix the line length error after running cargo fmt\n\n* fix: Remove the as_encoded_bytes to allow it to revert to the default return of None\n\n* fix: Remove the pytest skip for test_append_and_scan_with_fixed_size_array\n\n* feat: Add python_value_to_datum\n\n* feat: Add more null tests\n\n* feat: Add .pyi stubs for DataType, DataTypes\n\n* fix: Remove DataType, DataTypes as they are dead code only used within tests\n\n* perf: Hoist array downcast and type resolution out of loop\n\n* fix: Remove the pytest skip in test_log_table for fixed_size_array\n\n* fix: Add back the pytest.mark.skip and provide a valid reason\n\n* feat: Add FixedSizeList to handle all Arrow list variants defensively\n\n* feat: Add test_append_and_scan_with_large_list_array for LargeList\n\n* docs: Update documentation to indicate Array data type support\n\n* refactor: Drop FixedSizeList/LargeList and use nested ColumnWriter instead of ListBuilder\u003cBox\u003e\n\n* chore: Run formatting\n\n* fix: Remove references to FixedSizeList and LargeList\n\n* refactor: pass nullability to finish_list_array and add test for non-nullable array types\n\n* chore: Formatting\n\n* feat: add as_nullable, not_null, and nullable methods to DataType and primitive type structs\n\n* test: update non-nullable array type test to verify Arrow schema field nullability\n\n* Revert \"feat: add as_nullable, not_null, and nullable methods to DataType and primitive type structs\"\n\nThis reverts commit 60a14d1f33a78adf75a763d39348482e1b7493d5."
    },
    {
      "commit": "74d88cde014585ea7d7aa2e734d758c04f2b5947",
      "tree": "a159568bc6979baaf68bbc7abedd564dc746079b",
      "parents": [
        "cecab694529871f846997466b18df79c57a2c2b6"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sat Apr 11 02:55:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 09:55:35 2026 +0800"
      },
      "message": "[ci] use swatinem/rust-cache (#485)"
    },
    {
      "commit": "cecab694529871f846997466b18df79c57a2c2b6",
      "tree": "5d4d7575aea2028b502ccdbe78ccf64554cff75b",
      "parents": [
        "6b997e63f0e3a64311f9bec4441e72592e554672"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sat Apr 11 02:46:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 09:46:56 2026 +0800"
      },
      "message": "chore: fix docusaurus (#486)"
    },
    {
      "commit": "6b997e63f0e3a64311f9bec4441e72592e554672",
      "tree": "639632966fdb774d9429e8d21fa05b8b69e90db8",
      "parents": [
        "73995297d2a7f78c21ee8cf1957d50f7d2245eb8"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri Apr 10 23:14:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 23:14:35 2026 +0100"
      },
      "message": "fix python 3.11 bug in tests with async wait_for (#488)"
    },
    {
      "commit": "73995297d2a7f78c21ee8cf1957d50f7d2245eb8",
      "tree": "900549ad23c979f3d063809d0246577ef4b702cc",
      "parents": [
        "b8a66b0d85e68da48054e03c66242eac0c7e3d2f"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Fri Apr 10 00:16:30 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 00:16:30 2026 +0100"
      },
      "message": "[test][infra] Unify IT infrastructure for all clients (#476)"
    },
    {
      "commit": "b8a66b0d85e68da48054e03c66242eac0c7e3d2f",
      "tree": "1724d460df7dc67fd8c6fa14b25099ebd440f13a",
      "parents": [
        "fd581bac6c2d168e82b75df7093f836f31514a87"
      ],
      "author": {
        "name": "Jared Yu (余启正)",
        "email": "qzyu999@gmail.com",
        "time": "Thu Apr 09 14:35:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 22:35:02 2026 +0100"
      },
      "message": "feat: add async \u0027for\u0027 loop support to LogScanner (#424) (#438)"
    },
    {
      "commit": "fd581bac6c2d168e82b75df7093f836f31514a87",
      "tree": "57152981658c8bb53999ae2e5aebece9fcb26a95",
      "parents": [
        "4c22ad5012568be420685aab0527f76a7341d446"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 05 22:19:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 22:19:56 2026 +0100"
      },
      "message": "chore: skip duplicate pyfluss build in Python CI (#483)"
    },
    {
      "commit": "4c22ad5012568be420685aab0527f76a7341d446",
      "tree": "c43c122c3c838fca3d82f1d710dd8db38a248174",
      "parents": [
        "c2c4ec7a35863dcedc13e659d1148c9384bc1a1d"
      ],
      "author": {
        "name": "Keith Lee",
        "email": "leekei@apache.org",
        "time": "Sun Apr 05 22:13:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 22:13:52 2026 +0100"
      },
      "message": "fix: upgrade testcontainers to 0.27.2 to resolve CVEs (#482)\n\n* fix: upgrade testcontainers to 0.27.2 to resolve CVEs\n\nFixes RUSTSEC-2026-0066 (astral-tokio-tar) and\nRUSTSEC-2025-0134 (rustls-pemfile unmaintained).\n\n* chore: remove unused test-env-helpers dev-dependency"
    },
    {
      "commit": "c2c4ec7a35863dcedc13e659d1148c9384bc1a1d",
      "tree": "a7e96b08705bf377b66ba412043b7e070d6b3fe4",
      "parents": [
        "1709ab54b338f13118576984cb8a3a95b16f1cdd"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Sun Apr 05 22:02:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 22:02:14 2026 +0100"
      },
      "message": "chore: improve cargo cache (#478)\n\n* chore: improve cargo cache\n\n* use Cargo.lock\n\n* Cargo.lock to paths-ignore licenserc.yaml"
    },
    {
      "commit": "1709ab54b338f13118576984cb8a3a95b16f1cdd",
      "tree": "31d1f7a24aa81ae093448da2e281e5f0b968f2ad",
      "parents": [
        "fc231d3418b1e87c80188c4b8482c3e034633bc8"
      ],
      "author": {
        "name": "Keith Lee",
        "email": "leekeiabstraction@gmail.com",
        "time": "Sun Apr 05 20:42:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 20:42:55 2026 +0100"
      },
      "message": "fix: add missing write_array impl to IcebergBinaryRowWriter (#477)"
    },
    {
      "commit": "fc231d3418b1e87c80188c4b8482c3e034633bc8",
      "tree": "3f15b1254459b126616e4fe49f9dbc2e57124cea",
      "parents": [
        "10f23c65fce5ac6989e694624e7af86b9ce15504"
      ],
      "author": {
        "name": "Kaiqi Dong",
        "email": "kaiqi.dong@bitvavo.com",
        "time": "Sun Apr 05 21:13:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 20:13:44 2026 +0100"
      },
      "message": "feat(iceberg): add IcebergBinaryRowWriter (#366)\n\n* feat(iceberg): add IcebergBinaryRowWriter\n\n* feat(iceberg): add IcebergBinaryRowWriter\n\n* explict panicing and align with java for micros conversions\n\n* address the reviews\n\n* rebase and align how java side behaviour now\n\n* address comments"
    },
    {
      "commit": "10f23c65fce5ac6989e694624e7af86b9ce15504",
      "tree": "5ecfe9ebd8c3041383ba400c37cb82d59581a1ed",
      "parents": [
        "f1e1ea66edb3edeac16d01201721a146efbbd80d"
      ],
      "author": {
        "name": "luoyuxia",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 12:10:13 2026 +0800"
      },
      "committer": {
        "name": "luoyuxia",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 12:10:13 2026 +0800"
      },
      "message": "ci: improve read me for python\n"
    },
    {
      "commit": "f1e1ea66edb3edeac16d01201721a146efbbd80d",
      "tree": "165591e31b1374a392acd9312c5454451600da4e",
      "parents": [
        "308560c50d6fb563249ab0255f16ccd87605bbe3"
      ],
      "author": {
        "name": "luoyuxia",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 11:02:42 2026 +0800"
      },
      "committer": {
        "name": "luoyuxia",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 11:02:59 2026 +0800"
      },
      "message": "ci: pin pypi publish action to ASF-approved SHA\n"
    },
    {
      "commit": "308560c50d6fb563249ab0255f16ccd87605bbe3",
      "tree": "78289529f6980203b6ffb2cbf8e54a26fac0ced1",
      "parents": [
        "1fc28c0a9e4fffeaa75c015d967f8619cc6c649f"
      ],
      "author": {
        "name": "luoyuxia",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 10:17:17 2026 +0800"
      },
      "committer": {
        "name": "luoyuxia",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 10:18:04 2026 +0800"
      },
      "message": "ci: fix release rust issue\n"
    },
    {
      "commit": "1fc28c0a9e4fffeaa75c015d967f8619cc6c649f",
      "tree": "f95268a3e6096db30386055ce799279c9a074b0e",
      "parents": [
        "0d4956c134577fa39eceec303ea18e56ee352dcb"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Wed Apr 01 23:21:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 23:21:06 2026 +0100"
      },
      "message": "feat: [TASK-315] Proto + RPC for LimitScan (#472)"
    },
    {
      "commit": "0d4956c134577fa39eceec303ea18e56ee352dcb",
      "tree": "492de0e0285b16f252cfaf7d90ab9eb8195f9dcf",
      "parents": [
        "e05a3f038b02e2419cfc8e452162a3affc3852a7"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Wed Apr 01 22:17:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 22:17:21 2026 +0100"
      },
      "message": "chore: fix annoying python CI/CD errors due to unsuported action (#473)\n\n* chore: fix annoying python CI/CD errors due to unsuported action\n\n* cache uv deps\n\n* cache pyproject.toml\n\n* Use setup-uv action pinned to commit SHA instead of pip install\n\nReplace `pip install uv` with `astral-sh/setup-uv` pinned to commit\nSHA for supply chain security. Remove redundant manual uv cache step\nas setup-uv handles caching natively.\n\n---------\n\nCo-authored-by: Keith Lee \u003cleekei@apache.org\u003e"
    },
    {
      "commit": "e05a3f038b02e2419cfc8e452162a3affc3852a7",
      "tree": "dc39b0360aaf9213946cca04ac91c7b395e5dd30",
      "parents": [
        "51bd65a7cd00003b20cc0ad17fd116c84c067fb3"
      ],
      "author": {
        "name": "Anton Borisov",
        "email": "148864665+fresh-borzoni@users.noreply.github.com",
        "time": "Mon Mar 30 22:49:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 22:49:58 2026 +0100"
      },
      "message": "[TASK-470] Optimize null append in Arrow builder (#471)"
    }
  ],
  "next": "51bd65a7cd00003b20cc0ad17fd116c84c067fb3"
}
