)]}'
{
  "log": [
    {
      "commit": "f971a78518039c1108c8e8ffdc17e4bebc85dec5",
      "tree": "f9eabe74162cb0ebc6f9c93dfefe5369829a38ea",
      "parents": [
        "873c3f1b223b095aeb6dee61ebf938994001f8b7"
      ],
      "author": {
        "name": "Kosta Tarasov",
        "email": "33369833+sdf-jkl@users.noreply.github.com",
        "time": "Wed Oct 28 12:39:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 12:39:39 2026 +0000"
      },
      "message": "Open an issue when daily Miri checks fail (#11935)\n\n# Which issue does this PR close?\n\nCloses #11548.\n\n# Rationale for this change\n\nFrom @Jefffrey\u0027s [review of\n#11631](https://github.com/apache/arrow-rs/pull/11631#pullrequestreview-5598578977):\n\n\u003e some follow up work would be a way to notify if this miri run fails\n(e.g. auto create an issue)\n\n# What changes are included in this PR?\n\nFailed scheduled Miri runs in `apache/arrow-rs` open a `Daily Miri\nchecks failed` issue linking the failed run and commit. Further failures\nleave an existing alert alone; maintainers close it after Miri passes\nagain. Manual runs and forks do not create alerts.\n\n# Are these changes tested?\n\nValidated with a temporary workflow on my fork using simulated Miri\npartitions and the same alert script, with the repository/event guard\nadapted for manual fork runs:\n\n- A failure created [alert issue\n#8](https://github.com/sdf-jkl/arrow-rs/issues/8).\n- A [repeat\nfailure](https://github.com/sdf-jkl/arrow-rs/actions/runs/40513403680)\ncreated no duplicate issue or comment.\n- A [successful\nrun](https://github.com/sdf-jkl/arrow-rs/actions/runs/40513291680)\nproduced no alert.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI assisted with the workflow implementation, documentation, and\nvalidation."
    },
    {
      "commit": "873c3f1b223b095aeb6dee61ebf938994001f8b7",
      "tree": "7de5fa6800c61aa66e6bef18564e7f17b5a19464",
      "parents": [
        "c544206082d6879f24f635b475f487aecae6d387"
      ],
      "author": {
        "name": "Gabriel",
        "email": "45515538+gabotechs@users.noreply.github.com",
        "time": "Wed Oct 28 10:10:35 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 10:10:35 2026 +0000"
      },
      "message": "feat(arrow-array): support Date32/Date64 in record_batch!/create_array! macros (#11962)\n\n## Summary\n- Add `Date32`/`Date64` arms to the `create_array!` macro so\n`record_batch!` can build date columns, matching existing support for\nother primitive-backed types.\n\n## Test plan\n- [x] `cargo test -p arrow-array --lib record_batch::`\n- [x] `cargo +stable fmt -p arrow-array -- --check`\n- [x] `cargo clippy -p arrow-array --all-targets --all-features -- -D\nwarnings`\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c544206082d6879f24f635b475f487aecae6d387",
      "tree": "1fb98b664a2c0589c878a639af69c3e79300cee8",
      "parents": [
        "97d0934b26ae3393bf74e173e82f19d6fdc384b2"
      ],
      "author": {
        "name": "Arnab Mondal",
        "email": "dp950810@gmail.com",
        "time": "Wed Oct 28 10:00:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 10:00:28 2026 +0000"
      },
      "message": "test(arrow-cast): move decimal cast tests to integration suite (#11645)\n\n# Which issue does this PR close?\n\nPart of [#11033](https://github.com/apache/arrow-rs/issues/11033).\n\n# Rationale for this change\n\nThe public-behavior cast tests in `arrow-cast/src/cast/mod.rs` are being\nmoved into the crate-level integration test suite so individual cast\nfamilies are easier to locate and maintain. This is the decimal-test\nslice of that work.\n\n# What changes are included in this PR?\n\n- Adds `arrow-cast/tests/cast/decimal.rs` to the existing `cast`\nintegration-test target.\n- Moves 88 decimal cast tests and their shared test helpers out of the\ninline `cast/mod.rs` test module.\n- Leaves decimal implementation-detail tests colocated in\n`cast/decimal.rs`, and leaves temporal and general null tests for their\nrespective tracker groups.\n- Does not change production behavior or widen production visibility.\n\n# Are these changes tested?\n\nYes. The existing decimal cast coverage is preserved in the integration\nsuite, and the full workspace test suite passes locally. Repository-wide\nformatting, spelling, and all-features Clippy checks also pass.\n\n# Are there any user-facing changes?\n\nNo. This is a test-organization-only change.\n\n# AI usage disclosure\n\nOpenAI Codex assisted with the mechanical test extraction. I reviewed\nthe resulting changes and verified the full workspace test suite and\nrepository-wide checks locally."
    },
    {
      "commit": "97d0934b26ae3393bf74e173e82f19d6fdc384b2",
      "tree": "4ac71737c730e1b15b9f861bc9d80ccc601b8879",
      "parents": [
        "003546e364dccd93b1f023f2e78211468327be62"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 28 09:45:58 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 09:45:58 2026 +0000"
      },
      "message": "chore(deps): bump the all-other-cargo-deps group across 1 directory with 2 updates (#11919)\n\nBumps the all-other-cargo-deps group with 2 updates in the / directory:\n[memmap2](https://github.com/RazrFalcon/memmap2-rs) and\n[tokio](https://github.com/tokio-rs/tokio).\n\nUpdates `memmap2` from 0.9.11 to 0.9.12\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/blob/master/CHANGELOG.md\"\u003ememmap2\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.9.12] - 2026-10-21\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eMmapOptions::map_if_safe()\u003c/code\u003e to allow creation\nread-only mappings of a file from safe code if the kernel can guarantee\nthe file is immutable and large enough.\n\u003ca\nhref\u003d\"https://github.com/alexlarsson\"\u003e\u003ccode\u003e@​alexlarsson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMmapOptions::no_probe_handle()\u003c/code\u003e to disable probing\nof file handles on Windows to improve performance, at the cost of no\nlonger being able to remap later with more capabilities.\n\u003ca href\u003d\"https://github.com/mat-gas\"\u003e\u003ccode\u003e@​mat-gas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for OpenHarmony targets\n(\u003ccode\u003e*-unknown-linux-ohos\u003c/code\u003e).\n\u003ca href\u003d\"https://github.com/hiyms\"\u003e\u003ccode\u003e@​hiyms\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache allocation granularity on Windows to prevent repeated\nsyscalls.\n\u003ca href\u003d\"https://github.com/mat-gas\"\u003e\u003ccode\u003e@​mat-gas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/4692b056b327aa08dace3a7e345a99e4cff77534\"\u003e\u003ccode\u003e4692b05\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/RazrFalcon/memmap2-rs/issues/180\"\u003e#180\u003c/a\u003e\nfrom RazrFalcon/release/v0.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/9e5c0eec525ab5c051109deec912ef831e6948c2\"\u003e\u003ccode\u003e9e5c0ee\u003c/code\u003e\u003c/a\u003e\nBump version to 0.9.12.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/b98035db0bf0d9f59b5f22ad50a39c10c426bf93\"\u003e\u003ccode\u003eb98035d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/RazrFalcon/memmap2-rs/issues/177\"\u003e#177\u003c/a\u003e\nfrom JaskRendix/extract-test-suite\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/0986677a1546acfd05b2654e6f40531c8abd3544\"\u003e\u003ccode\u003e0986677\u003c/code\u003e\u003c/a\u003e\nMerge branch \u0027master\u0027 into extract-test-suite\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/d26cc84b8a6f78e215fe410eb7db7d0eb82425ed\"\u003e\u003ccode\u003ed26cc84\u003c/code\u003e\u003c/a\u003e\nFix map_if_safe() stub.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/145ee36dfdb56c1381dc112de90eafa5a73c269e\"\u003e\u003ccode\u003e145ee36\u003c/code\u003e\u003c/a\u003e\nSilence clippy warning about trivial identical match arms.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/b402ef21aa85e4cd95fc3f77d2b47a7de9f8ff5d\"\u003e\u003ccode\u003eb402ef2\u003c/code\u003e\u003c/a\u003e\nFix check_safe_to_map() on Apple targets.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/b544238778273043ec25bcc3f92fa90ee1cca1d3\"\u003e\u003ccode\u003eb544238\u003c/code\u003e\u003c/a\u003e\nFix formatting.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/f50e4805ab46a84254a2bd358b71bdcfd65b9d1f\"\u003e\u003ccode\u003ef50e480\u003c/code\u003e\u003c/a\u003e\nMove tests to test/ folder.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/commit/0994bf78eef06ac4eba7dc05d543f222aad2ba88\"\u003e\u003ccode\u003e0994bf7\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/RazrFalcon/memmap2-rs/issues/176\"\u003e#176\u003c/a\u003e\nfrom hiyms/feat/support-ohos\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/RazrFalcon/memmap2-rs/compare/v0.9.11...v0.9.12\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokio` from 1.53.3 to 1.54.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/releases\"\u003etokio\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTokio v1.54.1\u003c/h2\u003e\n\u003ch1\u003e1.54.1 (October 21st, 2026)\u003c/h1\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etime: revert \u0026quot;remove the runtime handle from timers\u0026quot; (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8692\"\u003e#8692\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8692\"\u003e#8692\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8692\"\u003etokio-rs/tokio#8692\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eTokio v1.54.0\u003c/h2\u003e\n\u003ch1\u003e1.54.0 (October 19th, 2026)\u003c/h1\u003e\n\u003cp\u003eThe 1.54.0 release includes all changes up to 1.53.3.\u003c/p\u003e\n\u003cp\u003eThe MSRV is increased to 1.85. (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8514\"\u003e#8514\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efs: add \u003ccode\u003eFile::set_times\u003c/code\u003e,\n\u003ccode\u003eFile::set_modified\u003c/code\u003e, and \u003ccode\u003efs::FileTimes\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8504\"\u003e#8504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: implement \u003ccode\u003eDefault\u003c/code\u003e for\n\u003ccode\u003enamed_pipe::{ClientOptions, ServerOptions}\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8378\"\u003e#8378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: add \u003ccode\u003eBuilder::max_io_events_per_busy_tick\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8410\"\u003e#8410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: stabilize \u003ccode\u003etokio::runtime::worker_index()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8431\"\u003e#8431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: add \u003ccode\u003eSemaphorePermit::semaphore()\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8482\"\u003e#8482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: add \u003ccode\u003eblocking_acquire\u003c/code\u003e methods to\n\u003ccode\u003eSemaphore\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8269\"\u003e#8269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: add \u003ccode\u003ewatch::Receiver::is_closed\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewasm: support JSPI for Emscripten target (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8285\"\u003e#8285\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8627\"\u003e#8627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewasm: support the \u003ccode\u003ewasm32-unknown-emscripten\u003c/code\u003e target (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8281\"\u003e#8281\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8422\"\u003e#8422\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8528\"\u003e#8528\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8628\"\u003e#8628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efs: reject zero in \u003ccode\u003eFile::set_max_buf_size\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8449\"\u003e#8449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eio: make \u003ccode\u003ecopy_buf\u003c/code\u003e cooperative (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8459\"\u003e#8459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eio: panic when \u003ccode\u003eBufReader\u003c/code\u003e or \u003ccode\u003eBufStream\u003c/code\u003e is\ncreated with zero capacity (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8494\"\u003e#8494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eio: panic when in-memory pipe is created with zero capacity (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8397\"\u003e#8397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eio: reject zero buffer size in\n\u003ccode\u003ecopy_bidirectional_with_sizes\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8454\"\u003e#8454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eio: support vectored writes in \u003ccode\u003eSink\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8663\"\u003e#8663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: start \u003ccode\u003eUnixStream::pair\u003c/code\u003e and\n\u003ccode\u003eUnixDatagram::pair\u003c/code\u003e sockets as writable (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8444\"\u003e#8444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: start accepted sockets as readable and writable (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enet: support \u003ccode\u003eUCred\u003c/code\u003e on Fuchsia (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8257\"\u003e#8257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprocess: use \u003ccode\u003emio::unix::pipe\u003c/code\u003e for Unix child stdio (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8603\"\u003e#8603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: cache-pad the shared injection queue and idle state (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8622\"\u003e#8622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: decide auto-boxing of spawned futures at monomorphization\ntime (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8414\"\u003e#8414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: make \u003ccode\u003eenable_io\u003c/code\u003e available whenever\n\u003ccode\u003ert\u003c/code\u003e is enabled (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8387\"\u003e#8387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: move \u003ccode\u003eblock_in_place\u003c/code\u003e setup into a non-generic\nfunction (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8315\"\u003e#8315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: move the multi-thread inject queue to its own mutex (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8382\"\u003e#8382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: panic when \u003ccode\u003emax_io_events_per_tick\u003c/code\u003e is zero (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8476\"\u003e#8476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: suggest \u003ccode\u003e.await\u003c/code\u003e in nested \u003ccode\u003eblock_on\u003c/code\u003e\npanic message (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8501\"\u003e#8501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: avoid atomic reader count in broadcast slots (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8357\"\u003e#8357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: use acquire/release orderings in \u003ccode\u003eNotify\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8325\"\u003e#8325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etime: remove the runtime handle from timers (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8458\"\u003e#8458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/b53b2001ed2ccfd9b87e32a0c6da1a1eebdc80b8\"\u003e\u003ccode\u003eb53b200\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.54.1 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8693\"\u003e#8693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/5ed619bbaba87357ee5103d71b75e7c84cad99c9\"\u003e\u003ccode\u003e5ed619b\u003c/code\u003e\u003c/a\u003e\ntime: revert \u0026quot;remove the runtime handle from timers\u0026quot; (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8692\"\u003e#8692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/66d34e45c9c850ed72bc61f2ad107368217f040d\"\u003e\u003ccode\u003e66d34e4\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.54.0 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8667\"\u003e#8667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/0d322ce79aef3df11d2bfa87d379ac1d06168ade\"\u003e\u003ccode\u003e0d322ce\u003c/code\u003e\u003c/a\u003e\nio: support vectored writes in sink (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8663\"\u003e#8663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/4167c5634ef9cd091cc5b37156f04cfdb0595414\"\u003e\u003ccode\u003e4167c56\u003c/code\u003e\u003c/a\u003e\ncodec: expose I/O sources from codec errors (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8665\"\u003e#8665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/cdd9dae3aa5056e23dc4d5bc4f852ab8fbf27aff\"\u003e\u003ccode\u003ecdd9dae\u003c/code\u003e\u003c/a\u003e\nfs: propagate iouring stress test failures (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8644\"\u003e#8644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/52ac7816230efabcae6fcc09cbe7ae630a48eddf\"\u003e\u003ccode\u003e52ac781\u003c/code\u003e\u003c/a\u003e\nci: run the emscripten JSPI tests as an auto-initialized ES module (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8640\"\u003e#8640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/4890d027f8a566ccf081e7f019ed766f780df1af\"\u003e\u003ccode\u003e4890d02\u003c/code\u003e\u003c/a\u003e\nstream: implement \u003ccode\u003eFusedStream\u003c/code\u003e for\n\u003ccode\u003eJoinSetStream\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8629\"\u003e#8629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/a6bd8e170c4e895fab26024bdfeea1c568567545\"\u003e\u003ccode\u003ea6bd8e1\u003c/code\u003e\u003c/a\u003e\nwasm: check Emscripten version when using JSPI (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8627\"\u003e#8627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/9dd749d33408ffee1a4fd7c462546651416428a8\"\u003e\u003ccode\u003e9dd749d\u003c/code\u003e\u003c/a\u003e\nMerge \u0027tokio-1.53.3\u0027 into \u0027master\u0027 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8641\"\u003e#8641\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/compare/tokio-1.53.3...tokio-1.54.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "003546e364dccd93b1f023f2e78211468327be62",
      "tree": "783391576c85c4b3d0726f17a42e007254dcacc6",
      "parents": [
        "6d4142670b57f8db26f8faa21b9788685ff0c45e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 28 09:44:33 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 09:44:33 2026 +0000"
      },
      "message": "chore(deps): bump actions/setup-python from 7.0.0 to 7.1.0 (#11933)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python)\nfrom 7.0.0 to 7.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/setup-python/releases\"\u003eactions/setup-python\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emirror\u003c/code\u003e and \u003ccode\u003emirror-token\u003c/code\u003e inputs for\ncustom Python distribution sources by \u003ca\nhref\u003d\"https://github.com/luhenry\"\u003e\u003ccode\u003e@​luhenry\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1302\"\u003eactions/setup-python#1302\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove error message clarity by \u003ca\nhref\u003d\"https://github.com/v-lmvysakh\"\u003e\u003ccode\u003e@​v-lmvysakh\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1351\"\u003eactions/setup-python#1351\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency Upgrade\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade browserslist from 4.28.2 to 4.28.9 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1353\"\u003eactions/setup-python#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e from 8.62.0 to\n8.70.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1343\"\u003eactions/setup-python#1343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade eslint-plugin-jest from 29.15.2 to 29.16.6 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1342\"\u003eactions/setup-python#1342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​vercel/ncc\u003c/code\u003e from 0.44.0 to 0.45.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1357\"\u003eactions/setup-python#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​types/semver\u003c/code\u003e from 7.7.1 to 7.8.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1359\"\u003eactions/setup-python#1359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade undici from 6.28.0 to 6.29.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1364\"\u003eactions/setup-python#1364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade ts-jest from 29.4.11 to 29.4.14 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1361\"\u003eactions/setup-python#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade brace-expansion from 5.0.9 to 5.0.12 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1365\"\u003eactions/setup-python#1365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade prettier from 3.8.4 to 3.9.9 and package.json from 7.0.0 to\n7.1.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1363\"\u003eactions/setup-python#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003e@​typescript-eslint/eslint-plugin\u003c/code\u003e from 8.62.0\nto 8.71.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1369\"\u003eactions/setup-python#1369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade actions/checkout from 7.0.0 to 7.0.1 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1345\"\u003eactions/setup-python#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade cache to 6.3.0 by \u003ca\nhref\u003d\"https://github.com/v-HarithaVattikuti\"\u003e\u003ccode\u003e@​v-HarithaVattikuti\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1370\"\u003eactions/setup-python#1370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve Basic Validation audit failures by \u003ca\nhref\u003d\"https://github.com/v-HarithaVattikuti\"\u003e\u003ccode\u003e@​v-HarithaVattikuti\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1347\"\u003eactions/setup-python#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve npm audit failures by \u003ca\nhref\u003d\"https://github.com/v-HarithaVattikuti\"\u003e\u003ccode\u003e@​v-HarithaVattikuti\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1350\"\u003eactions/setup-python#1350\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/luhenry\"\u003e\u003ccode\u003e@​luhenry\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/pull/1302\"\u003eactions/setup-python#1302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/setup-python/compare/v7.0.0...v7.1.0\"\u003ehttps://github.com/actions/setup-python/compare/v7.0.0...v7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/6d4fd22b20465ccc0f7354476588e8df7c9ca0e0\"\u003e\u003ccode\u003e6d4fd22\u003c/code\u003e\u003c/a\u003e\nCache upgrade to 6.3.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1370\"\u003e#1370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/ec52d0af729a7c50ced4261d17a07916f43f5b8e\"\u003e\u003ccode\u003eec52d0a\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​typescript-eslint/eslint-plugin\u003c/code\u003e from 8.62.0 to\n8.71.1 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1369\"\u003e#1369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/ff73b2463e2f3baa703f830da214b8dfeeaeccf8\"\u003e\u003ccode\u003eff73b24\u003c/code\u003e\u003c/a\u003e\nBump prettier from 3.8.4 to 3.9.9 and package.json from 7.0.0 to 7.1.0\n(\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/0e40890053525508c059c61932a6b8614f9e95db\"\u003e\u003ccode\u003e0e40890\u003c/code\u003e\u003c/a\u003e\nBump brace-expansion from 5.0.9 to 5.0.12 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1365\"\u003e#1365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/3892123fbe74688ccc83ec7c465dc688359e5199\"\u003e\u003ccode\u003e3892123\u003c/code\u003e\u003c/a\u003e\nBump ts-jest from 29.4.11 to 29.4.14 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/660965736c4aecc62797ea07d351a3c259f14660\"\u003e\u003ccode\u003e6609657\u003c/code\u003e\u003c/a\u003e\nBump undici from 6.28.0 to 6.29.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1364\"\u003e#1364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/e1be392b26fb1917a7b2c455817e4b4dad6544ce\"\u003e\u003ccode\u003ee1be392\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​types/semver\u003c/code\u003e from 7.7.1 to 7.8.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1359\"\u003e#1359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/06da6279cdbca41027908073e81a4544dc79c06b\"\u003e\u003ccode\u003e06da627\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​vercel/ncc\u003c/code\u003e from 0.44.0 to 0.45.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/af9bcc7548695e66d75709de6f29e337624b8de8\"\u003e\u003ccode\u003eaf9bcc7\u003c/code\u003e\u003c/a\u003e\nBump eslint-plugin-jest from 29.15.2 to 29.16.6 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1342\"\u003e#1342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/setup-python/commit/7aeabeba5501120d873c50398519dbfd0657031c\"\u003e\u003ccode\u003e7aeabeb\u003c/code\u003e\u003c/a\u003e\nBump \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e from 8.62.0 to 8.70.0 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/setup-python/issues/1343\"\u003e#1343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/actions/setup-python/compare/5fda3b95a4ea91299a34e894583c3862153e4b97...6d4fd22b20465ccc0f7354476588e8df7c9ca0e0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/setup-python\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d7.0.0\u0026new-version\u003d7.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6d4142670b57f8db26f8faa21b9788685ff0c45e",
      "tree": "5d6933403be888938932b6a78eefaefcb02895bb",
      "parents": [
        "5db01b1fa7ba6f70d5f63abf31c48fabed40929b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 28 09:44:10 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 09:44:10 2026 +0000"
      },
      "message": "chore(deps): bump taiki-e/install-action from 2.87.30 to 2.87.31 (#11934)\n\nBumps\n[taiki-e/install-action](https://github.com/taiki-e/install-action) from\n2.87.30 to 2.87.31.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/releases\"\u003etaiki-e/install-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.87.31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDowngrade \u003ccode\u003ecargo-sort@latest\u003c/code\u003e to 2.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.35.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003exh@latest\u003c/code\u003e to 0.26.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.5.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eubi@latest\u003c/code\u003e to 0.13.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etrivy@latest\u003c/code\u003e to 0.76.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.9.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.3.174.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprek@latest\u003c/code\u003e to 0.5.7.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.10.17.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ejaq@latest\u003c/code\u003e to 3.1.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eespup@latest\u003c/code\u003e to 0.17.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-zigbuild@latest\u003c/code\u003e to 0.24.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-nextest@latest\u003c/code\u003e to 0.9.149.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ebiome@latest\u003c/code\u003e to 2.6.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md\"\u003etaiki-e/install-action\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this\nfile.\u003c/p\u003e\n\u003cp\u003eThis project adheres to \u003ca href\u003d\"https://semver.org\"\u003eSemantic\nVersioning\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\u003e\n\u003ch2\u003e[2.87.32] - 2026-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewild@latest\u003c/code\u003e to 0.11.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.35.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.9.5.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003esccache@latest\u003c/code\u003e to 0.19.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.4.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.10.19.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eknope@latest\u003c/code\u003e to 0.23.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003edprint@latest\u003c/code\u003e to 0.64.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-vet@latest\u003c/code\u003e to 0.10.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-sort@latest\u003c/code\u003e to 2.1.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-binstall@latest\u003c/code\u003e to 1.26.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ebiome@latest\u003c/code\u003e to 2.6.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.87.31] - 2026-10-23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDowngrade \u003ccode\u003ecargo-sort@latest\u003c/code\u003e to 2.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.35.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003exh@latest\u003c/code\u003e to 0.26.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.5.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eubi@latest\u003c/code\u003e to 0.13.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/1e29709c0ec63babbe8f266397a465f29a825f91\"\u003e\u003ccode\u003e1e29709\u003c/code\u003e\u003c/a\u003e\nRelease 2.87.31\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/30fbbdf7faf31bb9b916c49edc8cb35a1d69e05e\"\u003e\u003ccode\u003e30fbbdf\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ecargo-sort@latest\u003c/code\u003e to 2.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/bce00a3bc1e56e5d9d542062720427927bb19920\"\u003e\u003ccode\u003ebce00a3\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.35.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/dce055e8fcb12572ed99e6d6614fbe75e26f41f3\"\u003e\u003ccode\u003edce055e\u003c/code\u003e\u003c/a\u003e\nUpdate tombi manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/28b8d620ddfd33eabc70ce00f7bbf78cfb9f4ee7\"\u003e\u003ccode\u003e28b8d62\u003c/code\u003e\u003c/a\u003e\nUpdate release-plz manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/44d13e3166dfcd6732f981cd6047fb9652f3f107\"\u003e\u003ccode\u003e44d13e3\u003c/code\u003e\u003c/a\u003e\nUpdate mise manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/510b77d7d9517935e828cb3d157eceac2acb53f5\"\u003e\u003ccode\u003e510b77d\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003exh@latest\u003c/code\u003e to 0.26.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/601130d9f7cf9a1d9f2b5798216dd7135eb81ae9\"\u003e\u003ccode\u003e601130d\u003c/code\u003e\u003c/a\u003e\nUpdate vacuum manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/8e70b886bfa487f10cbd3bba9ff50a1e6bd9d963\"\u003e\u003ccode\u003e8e70b88\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/909288066a7378764b01d5db3f2a2d2e80ece1a2\"\u003e\u003ccode\u003e9092880\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003eubi@latest\u003c/code\u003e to 0.13.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/compare/a4d3f3f761dcd95cce1b72cb61cb6d1963438177...1e29709c0ec63babbe8f266397a465f29a825f91\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dtaiki-e/install-action\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d2.87.30\u0026new-version\u003d2.87.31)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5db01b1fa7ba6f70d5f63abf31c48fabed40929b",
      "tree": "804e1c0bd640aa728c24b946289923b028c4ee36",
      "parents": [
        "a45acd6dfc871ebb0b62965a5b016d984589a60d"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Tue Oct 27 17:48:49 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 17:48:49 2026 +0000"
      },
      "message": "chore: update tonic to 0.14.7 (#11936)\n\nTonic 0.14.7 updates zstd to 0.14.3. Pin the tonic dependencies to that\nexact release, update the lockfile, and remove the temporary audit\nexceptions from #11922."
    },
    {
      "commit": "a45acd6dfc871ebb0b62965a5b016d984589a60d",
      "tree": "bc61394d5e6a1a5cecd5e5e025b6b1725c602ddc",
      "parents": [
        "fd2b5d156d80c986ff9ba5ace2db84500edf50ec"
      ],
      "author": {
        "name": "Swapnil Ashtekar",
        "email": "46826200+swashtek@users.noreply.github.com",
        "time": "Tue Oct 27 17:41:54 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 17:41:54 2026 +0000"
      },
      "message": "Raise arrow-ipc zstd minimum version to 0.14.3 (#11930)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\n[`RUSTSEC-2026-0391`](https://rustsec.org/advisories/RUSTSEC-2026-0391.html)\n\n# Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\nRequire at least `zstd` 0.14.3 when enabling Zstandard compression in\n`arrow-ipc`, preventing dependency resolution from selecting versions\n0.14.0 through 0.14.2 that are affected by\n[`RUSTSEC-2026-0391`](https://rustsec.org/advisories/RUSTSEC-2026-0391.html).\nThe workspace lockfile already resolves to 0.14.3, so no lockfile update\nis required.\n# What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n- Raise the `arrow-ipc` minimum `zstd` requirement from 0.14.0 to\n0.14.3.\n- Preserve the existing optional dependency and default-feature\nsettings.\n- Leave `Cargo.lock` unchanged because it already resolves `zstd` to\n0.14.3.\n\n# Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\nNo new tests were added because this only tightens a dependency\nrequirement.\nExisting IPC compression tests cover Zstandard compression and file\nwriting.\n\nValidation: `cargo test -p arrow-ipc --features zstd --lib compression\n--locked` - passed, with 3 tests passing and no lockfile update\nrequired.\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e\nNo public API changes or runtime behavior changes are expected when\nusing\nthe existing workspace lockfile.\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd2b5d156d80c986ff9ba5ace2db84500edf50ec",
      "tree": "8d4a76a65052d337a453dd849b495b86a0fa0ae0",
      "parents": [
        "35b20e63ddf211d5d011ff28bea44ae400fbf5c2"
      ],
      "author": {
        "name": "Wleeaf",
        "email": "ts.solidarity@gmail.com",
        "time": "Tue Oct 27 17:38:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 17:38:27 2026 +0000"
      },
      "message": "fix(arrow-ipc): return an error instead of panicking on out-of-bounds IPC buffers (#11881)\n\n# Which issue does this PR close?\n\n- Closes #11856.\n- Closes #11857.\n\n# Rationale for this change\n\nThe IPC reader slices buffers using offsets and lengths that come from\nthe message, without checking them against the data they point into.\n`Buffer::slice_with_length` panics when the range is out of bounds, so\ncorrupt input panics instead of returning an error.\n\n# What changes are included in this PR?\n\n- A small `slice_buffer` helper in `reader.rs` that checks the range\n(the same condition `slice_with_length` asserts) and returns an\n`ArrowError::IpcError` instead of panicking.\n- `read_buffer` uses it for the buffer offset and length from the\nmessage metadata (#11857).\n- The union reader uses it for the type ids buffer and the dense offsets\nbuffer, whose expected length comes from the field node (#11856).\n\n# Are these changes tested?\n\nYes. The reproducers from both issues are added as\n`test_read_record_batch_buffer_out_of_bounds` and\n`test_union_short_buffers`. The union test also covers a dense union\nwith a short offsets buffer. Both tests panic without the fix and pass\nwith it.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI usage: this change was prepared with Claude Code (an AI coding\nagent). The fix and tests were generated by it and checked against the\nfailing tests from the issues.\n\n---------\n\nCo-authored-by: Wleeaf \u003c179125857+wleeaf@users.noreply.github.com\u003e"
    },
    {
      "commit": "35b20e63ddf211d5d011ff28bea44ae400fbf5c2",
      "tree": "4f09b66f741a625fe788b9cdd25d071cd5c7c5e9",
      "parents": [
        "5746b443f70b4e55676be59cea317501a94ec810"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Tue Oct 27 17:26:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 17:26:48 2026 +0000"
      },
      "message": "refactor(bench) : reuse shared array builders across benches (#11928)\n\n# Which issue does this PR close?\n\n- Closes #11927\n\n# Rationale for this change\n\nSeveral benchmarks define their own random array and index builders.\nKeeping these helpers in one place avoids differences in seeds, null\nhandling, and generated values.\n\n# What changes are included in this PR?\n\n- Add shared index, decimal, and seeded fixed-size-binary builders to\n`bench_util`.\n- Update the Arrow and Parquet benchmarks to use the shared builders and\nremove their local copies.\n\n# Are these changes tested?\n\nNo new tests.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "5746b443f70b4e55676be59cea317501a94ec810",
      "tree": "e802b133f5b08687d1749827f1ac133c745d03a8",
      "parents": [
        "dc59495122884e4aced624e6744f268131472094"
      ],
      "author": {
        "name": "Ryosuke Tanaka",
        "email": "press@ribbsaetersystems.com",
        "time": "Tue Oct 27 15:27:24 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 15:27:24 2026 +0000"
      },
      "message": "fix: prevent time64us and time64ns from wrapping out-of-bounds seconds to valid times (#11899)\n\n# Which issue does this PR close?\n\nCloses #11893.\n\n# Rationale for this change\n\nIn `arrow-array/src/temporal_conversions.rs`, `time64us_to_time` and\n`time64ns_to_time` (as well as `time32s_to_time` and `time32ms_to_time`)\nconverted seconds using `as u32`. For large `Time64` inputs (e.g. `(2^32\n+ 5) * 1_000_000_000` ns), the high 32 bits of seconds were truncated,\ncausing values far outside one day to wrap around into valid times\nwithin a day (e.g. `00:00:05`) instead of returning `None`.\n\n# What changes are included in this PR?\n\n- Replaced `as u32` conversions in `time32s_to_time`,\n`time32ms_to_time`, `time64us_to_time`, and `time64ns_to_time` with\n`u32::try_from(..).ok()?`.\n- Added unit tests asserting that out-of-bounds / wrapped values for\n`Time32` and `Time64` consistently return `None` while valid values\ncontinue to convert as expected.\n\n# Are these changes tested?\n\nYes, new unit tests covering out-of-bounds, negative, extreme\n(`i64::MAX`/`i64::MIN`), and wrapped inputs have been added to\n`temporal_conversions::tests`. Downstream tests in `arrow-cast` and\n`arrow-arith` continue to pass.\n\n# Are there any user-facing changes?\n\nOut-of-bounds `Time64` values exceeding 2^32 seconds now return `None`\nrather than wrapping around to valid timestamps.\n\nCo-authored-by: Ryosuke Tanaka \u003c344858498+CodeMasterXZT@users.noreply.github.com\u003e"
    },
    {
      "commit": "dc59495122884e4aced624e6744f268131472094",
      "tree": "9b38ec1feade71d88a7ba3b0f0bc5d89d08dde8a",
      "parents": [
        "0b94195639ccbae0d615596cdb11445cde1441b6"
      ],
      "author": {
        "name": "Bryan Dang",
        "email": "82434977+DKER2@users.noreply.github.com",
        "time": "Tue Oct 27 13:58:02 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 13:58:02 2026 +0000"
      },
      "message": "perf(variant): avoid bracket path string allocations (#11232)\n\n# Which issue does this PR close?\n\n- Closes #9493.\n\n# Rationale for this change\n\n`parse_in_bracket` currently allocates a `String` for every bracket\nexpression, including indexes, wildcards, and quoted fields that require\nno unescaping. `VariantPathElement::Field` already stores `Cow\u003cstr\u003e`, so\nunescaped field names can borrow directly from the input path.\n\n# What changes are included in this PR?\n\n- Defer creation of the unescaped `String` until the first backslash is\nencountered.\n- Borrow the original bracket-content slice when no escape processing is\nrequired.\n- Preserve ownership for escaped fields and strip their surrounding\nquotes in place.\n- Add tests proving unescaped bracket fields use `Cow::Borrowed` while\nescaped fields use `Cow::Owned`.\n\nThis branch includes `main` with #11231 (closing brackets inside quoted\nfields). The quote tracking added there relied on the eagerly built\nbuffer, so it is adapted here: an opening quote is now detected by its\noffset in the bracket content rather than by the buffer being empty, and\nquoted fields containing `]` (e.g. `[\u0027a]b\u0027]`) still borrow.\n\n# Are these changes tested?\n\nYes. The existing path parsing tests cover behavior, and a new test\nasserts the ownership of each case: empty, plain, and `]`-containing\nquoted fields are borrowed, and an escaped field is owned.\n\nThe benchmark for this change is in #11508 (`cargo bench -p\nparquet-variant --bench variant_path`), split out as requested so it is\navailable on `main` as a baseline. I will merge `main` here once it\nlands so the numbers can be reproduced.\n\nEarlier local measurements, taken with a temporary Criterion harness on\naarch64 macOS before #11231 was merged in:\n\n| Case | Before | After | Change |\n|---|---:|---:|---:|\n| Three quoted bracket fields | 300.22 ns | 54.10 ns | -81.7% |\n| Three bracket indexes | 146.13 ns | 45.57 ns | -68.2% |\n| Escaped bracket field | 140.41 ns | 111.37 ns | -24.9% |\n| Dot-path control | 38.68 ns | 40.88 ns | Within noise |\n\n# Are there any user-facing changes?\n\nNo semantic or public API changes. Parsed paths remain the same;\nunescaped bracket fields now borrow their names instead of allocating\nowned strings.\n\n# AI usage\n\nOpenAI Codex was used to inspect the parser, help implement the lazy\nallocation path, construct ownership tests, and run validation and\nbenchmarks. Claude Code was used to adapt the change to #11231 after\nmerging `main`. I reviewed the resulting code and behavior and can own\nand debug the change.\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Kosta Tarasov \u003c33369833+sdf-jkl@users.noreply.github.com\u003e"
    },
    {
      "commit": "0b94195639ccbae0d615596cdb11445cde1441b6",
      "tree": "cdc9b4353a3ca3498959e2a21d0ebb92885a3c7d",
      "parents": [
        "ef22fc44f3a92b142c1583261418326e565811a9"
      ],
      "author": {
        "name": "Sebastian Turner",
        "email": "sebastiant3484@gmail.com",
        "time": "Tue Oct 27 08:54:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 08:54:40 2026 +0000"
      },
      "message": "fix(arrow-avro): resolve named types declared with a full name (#11730)\n\n# Which issue does this PR close?\n\n- Closes #NNN\n\n# Rationale for this change\n\nPer the Avro spec, a name containing a dot is a full name. Its namespace\nattribute is ignored and nested types inherit the namespace taken from\nthe name. The named type resolver in `codec.rs` did not apply this rule\nwhen registering types, so a type declared as `ns.Status` could not be\nreferenced as `ns.Status`, and a type nested in a record named\n`com.example.Event` could not be referenced as `com.example.Kind`. Both\nfail with `Failed to resolve ...`.\n\n# What changes are included in this PR?\n\n- `Resolver::register` splits a dotted name into namespace and name, the\nsame way `Resolver::resolve` already does.\n- A small `named_type_namespace` helper returns the namespace of a named\ntype, taking it from the name when the name is dotted. It replaces the\n`x.namespace.or(namespace)` expressions for records, enums and fixed\ntypes in both `parse_type` and the schema resolution paths, so nested\ntypes inherit the right namespace.\n\n# Are these changes tested?\n\nYes. `test_named_type_reuse_with_full_name` covers both a dotted enum\nname referenced by its full name and a nested record referenced through\nthe namespace of a dotted enclosing record name. It fails on `main` with\n`Failed to resolve enum_ns.Status`.\n\n# Are there any significant user-facing changes?\n\nNo API changes. Schemas that use dotted names now parse instead of\nreturning an error. For a named type declared with a dotted name, the\n`avro.namespace` field metadata now holds the namespace from that name\nrather than the enclosing one.\n\nFixes #11729\n\nAI tools were used to find this bug and to write the fix, the test and\nthis description. The tests were run locally before and after the\nchange.\n\nSigned-off-by: Sebastian Turner \u003csebastiant3484@gmail.com\u003e\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "ef22fc44f3a92b142c1583261418326e565811a9",
      "tree": "ba9696c528cafc65a70dc90a1988be0bee880821",
      "parents": [
        "c0acd1d7c149a937ba82b8ab30431de743fcad67"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Tue Oct 27 05:29:35 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 05:29:35 2026 +0000"
      },
      "message": "perf: Optimize appending out-of-line views in `concat`, `BatchCoalescer` (#11770)\n\n# Which issue does this PR close?\n\n- N/A\n\n# Rationale for this change\n\nWhen views are appended to an array that already has data buffers, the\nview of each out-of-line string must have its buffer index increased by\nthe number of buffers already in the array. The obvious way to do this\nis to unpack the view (`u128` -\u003e `ByteView`), update the `buffer_index`\nfield, and re-pack it. During the course of working on #11656, we found\nthat it is significantly faster to instead update the corresponding bits\nin the raw view directly, via shifting and addition.\n\nThis PR applies this optimization to two additional places:\n`GenericByteViewBuilder::append_array`, which `concat` uses for string\nand binary view arrays, and\n`InProgressByteViewArray::append_views_and_update_buffer_index`, which\nis used by `BatchCoalescer`.\n\n# What changes are included in this PR?\n\nSee above. We also add a sanity-check that the output buffer count fits\nin 32 bits (which will always be true in practice; the previous behavior\nof `GenericByteViewBuilder::append_array` was to silently truncate the\nbuffer count in this situation). The benchmark improvements for `concat`\nand `coalesce_kernels` landed separately in #11768. This PR also passes\nthe RNG seed to the `Utf8` and `Dictionary(Int32, Utf8)` inputs of\n`coalesce_kernels`, which previously generated the same strings for\nevery batch.\n\n# Benchmarks\n\n- AMD EPYC Milan (x86)\n  - coalesce_kernels, filter keeping 1% of rows\n    - single_utf8view, no nulls: 3.30 ms → 3.20 ms (−3.0%)\n- single_utf8view (string_len\u003d13..40), no nulls: 3.29 ms → 3.23 ms\n(−2.0%) (runs 3% apart)\n- single_binaryview, no nulls: 3.30 ms → 3.17 ms (−4.1%) (runs 6% apart)\n- mixed_utf8view (max_string_len\u003d20), no nulls: 1.78 ms → 1.73 ms\n(−2.6%)\n- mixed_binaryview (max_string_len\u003d20), no nulls: 1.86 ms → 1.81 ms\n(−2.9%) (runs 7% apart)\n    - single_utf8view, 10% nulls: 4.93 ms → 4.80 ms (−2.8%)\n- single_utf8view (string_len\u003d13..40), 10% nulls: 5.05 ms → 4.89 ms\n(−3.2%)\n    - single_binaryview, 10% nulls: 4.92 ms → 4.89 ms (−0.5%)\n- mixed_utf8view (max_string_len\u003d20), 10% nulls: 3.09 ms → 3.05 ms\n(−1.3%)\n- mixed_binaryview (max_string_len\u003d20), 10% nulls: 3.08 ms → 3.06 ms\n(−0.4%)\n  - coalesce_kernels, filter keeping 80% of rows\n    - single_utf8view, no nulls: 868.1 µs → 783.3 µs (−9.8%)\n- single_utf8view (string_len\u003d13..40), no nulls: 867.8 µs → 800.2 µs\n(−7.8%) (runs 4% apart)\n- single_binaryview, no nulls: 868.5 µs → 793.2 µs (−8.7%) (runs 2.9%\napart)\n- mixed_utf8view (max_string_len\u003d20), no nulls: 730.6 µs → 701.1 µs\n(−4.0%)\n- mixed_binaryview (max_string_len\u003d20), no nulls: 1.50 ms → 1.50 ms\n(+0.3%) (copies its strings, so doesn\u0027t reach the changed code)\n    - single_utf8view, 10% nulls: 1.01 ms → 922.8 µs (−8.7%)\n- single_utf8view (string_len\u003d13..40), 10% nulls: 1.02 ms → 949.7 µs\n(−6.5%)\n    - single_binaryview, 10% nulls: 1.02 ms → 921.9 µs (−10.0%)\n- mixed_utf8view (max_string_len\u003d20), 10% nulls: 900.1 µs → 869.6 µs\n(−3.4%)\n- mixed_binaryview (max_string_len\u003d20), 10% nulls: 895.8 µs → 873.1 µs\n(−2.5%)\n  - coalesce_kernels, take of 80% of rows\n- single_utf8view, no nulls: 824.6 µs → 757.0 µs (−8.2%) (runs 2.8%\napart)\n- single_binaryview, no nulls: 830.5 µs → 737.2 µs (−11.2%) (runs 4%\napart)\n- mixed_utf8view (max_string_len\u003d20), no nulls: 563.8 µs → 515.6 µs\n(−8.5%) (runs 2.4% apart)\n- mixed_binaryview (max_string_len\u003d20), no nulls: 1.43 ms → 1.43 ms\n(+0.2%) (copies its strings, so doesn\u0027t reach the changed code)\n- single_utf8view, 10% nulls: 1.17 ms → 1.06 ms (−10.2%) (runs 7% apart)\n- single_binaryview, 10% nulls: 1.15 ms → 1.05 ms (−8.5%) (runs 4%\napart)\n- mixed_utf8view (max_string_len\u003d20), 10% nulls: 924.3 µs → 885.9 µs\n(−4.2%) (runs 3% apart)\n- mixed_binaryview (max_string_len\u003d20), 10% nulls: 919.9 µs → 906.8 µs\n(−1.4%) (runs 6% apart)\n  - concat of 10 string view arrays of 8192 rows\n    - all_inline str_len\u003d12, no nulls: 31.57 µs → 31.54 µs (−0.1%)\n    - str_len\u003d20, no nulls: 74.88 µs → 48.63 µs (−35.1%)\n    - str_len\u003d128, no nulls: 75.02 µs → 49.00 µs (−34.7%)\n    - mixed str_len\u003d3..20, no nulls: 73.95 µs → 48.69 µs (−34.2%)\n    - all_inline str_len\u003d12, 20% nulls: 32.44 µs → 32.39 µs (−0.2%)\n    - str_len\u003d20, 20% nulls: 76.59 µs → 50.01 µs (−34.7%)\n    - str_len\u003d128, 20% nulls: 76.39 µs → 49.99 µs (−34.6%)\n- mixed str_len\u003d3..20, 20% nulls: 75.54 µs → 49.92 µs (−33.9%) (runs 4%\napart)\n- Apple M4 Max (ARM)\n  - coalesce_kernels, filter keeping 1% of rows\n- single_utf8view, no nulls: 1.62 ms → 1.51 ms (−6.9%) (runs 4% apart)\n- single_utf8view (string_len\u003d13..40), no nulls: 1.62 ms → 1.54 ms\n(−5.0%) (runs 4% apart)\n- single_binaryview, no nulls: 1.57 ms → 1.48 ms (−5.7%) (runs 2.4%\napart)\n- mixed_utf8view (max_string_len\u003d20), no nulls: 1.08 ms → 1.04 ms\n(−3.3%)\n- mixed_binaryview (max_string_len\u003d20), no nulls: 1.12 ms → 1.05 ms\n(−6.1%) (runs 5% apart)\n- single_utf8view, 10% nulls: 2.44 ms → 2.43 ms (−0.3%) (runs 2.2%\napart)\n- single_utf8view (string_len\u003d13..40), 10% nulls: 2.49 ms → 2.45 ms\n(−1.4%) (runs 2.5% apart)\n- single_binaryview, 10% nulls: 2.45 ms → 2.47 ms (+1.0%) (runs 6%\napart)\n- mixed_utf8view (max_string_len\u003d20), 10% nulls: 2.61 ms → 2.54 ms\n(−2.6%)\n- mixed_binaryview (max_string_len\u003d20), 10% nulls: 2.58 ms → 2.53 ms\n(−2.2%)\n  - coalesce_kernels, filter keeping 80% of rows\n    - single_utf8view, no nulls: 562.9 µs → 519.8 µs (−7.7%)\n- single_utf8view (string_len\u003d13..40), no nulls: 562.7 µs → 520.0 µs\n(−7.6%)\n    - single_binaryview, no nulls: 562.5 µs → 520.3 µs (−7.5%)\n- mixed_utf8view (max_string_len\u003d20), no nulls: 535.7 µs → 517.7 µs\n(−3.4%)\n- mixed_binaryview (max_string_len\u003d20), no nulls: 1.10 ms → 1.11 ms\n(+1.7%) (copies its strings, so doesn\u0027t reach the changed code)\n    - single_utf8view, 10% nulls: 618.9 µs → 578.6 µs (−6.5%)\n- single_utf8view (string_len\u003d13..40), 10% nulls: 617.9 µs → 574.5 µs\n(−7.0%)\n    - single_binaryview, 10% nulls: 621.6 µs → 574.5 µs (−7.6%)\n- mixed_utf8view (max_string_len\u003d20), 10% nulls: 600.8 µs → 581.4 µs\n(−3.2%)\n- mixed_binaryview (max_string_len\u003d20), 10% nulls: 602.1 µs → 581.4 µs\n(−3.4%)\n  - coalesce_kernels, take of 80% of rows\n    - single_utf8view, no nulls: 458.1 µs → 397.7 µs (−13.2%)\n- single_binaryview, no nulls: 448.5 µs → 389.3 µs (−13.2%) (runs 3.0%\napart)\n- mixed_utf8view (max_string_len\u003d20), no nulls: 311.2 µs → 290.2 µs\n(−6.7%)\n- mixed_binaryview (max_string_len\u003d20), no nulls: 995.3 µs → 999.1 µs\n(+0.4%) (copies its strings, so doesn\u0027t reach the changed code)\n- single_utf8view, 10% nulls: 641.5 µs → 560.2 µs (−12.7%) (runs 4%\napart)\n    - single_binaryview, 10% nulls: 639.6 µs → 545.5 µs (−14.7%)\n- mixed_utf8view (max_string_len\u003d20), 10% nulls: 468.9 µs → 450.5 µs\n(−3.9%)\n- mixed_binaryview (max_string_len\u003d20), 10% nulls: 470.5 µs → 448.9 µs\n(−4.6%)\n  - concat of 10 string view arrays of 8192 rows\n    - all_inline str_len\u003d12, no nulls: 15.67 µs → 15.61 µs (−0.4%)\n    - str_len\u003d20, no nulls: 31.13 µs → 27.40 µs (−12.0%)\n    - str_len\u003d128, no nulls: 31.20 µs → 27.55 µs (−11.7%)\n    - mixed str_len\u003d3..20, no nulls: 30.80 µs → 27.24 µs (−11.6%)\n    - all_inline str_len\u003d12, 20% nulls: 16.16 µs → 16.10 µs (−0.4%)\n    - str_len\u003d20, 20% nulls: 31.77 µs → 28.10 µs (−11.5%)\n    - str_len\u003d128, 20% nulls: 31.84 µs → 28.28 µs (−11.2%)\n    - mixed str_len\u003d3..20, 20% nulls: 31.33 µs → 27.92 µs (−10.9%)\n\n# Are these changes tested?\n\nCovered by existing tests.\n\n# Are there any significant user-facing changes?\n\nOnly in a corner case: if the output buffer count exceeds `u32::MAX`, we\nnow panic rather than silently truncating the count."
    },
    {
      "commit": "c0acd1d7c149a937ba82b8ab30431de743fcad67",
      "tree": "7646488b33a5a8427cf1fc4d300ba8d32e5535ad",
      "parents": [
        "68cd02d3f9c27f9b3d3bf3bf747e0276fddcd87a"
      ],
      "author": {
        "name": "Ed Seidl",
        "email": "etseidl@users.noreply.github.com",
        "time": "Tue Oct 27 04:41:50 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 04:41:50 2026 +0000"
      },
      "message": "fix(parquet): Properly account for boolean lists in Parquet Thrift skipping code (#11923)\n\n# Which issue does this PR close?\n\n- Closes #11926\n\n# Rationale for this change\n\nSee issue, but `list\u003cbool\u003e` is not skipped properly by the Thrift\ndecoder.\n\n# What changes are included in this PR?\n\nAdd extra testing for boolean lists/sets as well as booleans in Thrift\nmaps.\n\n# Are these changes tested?\n\nYes.\n\n# Are there any significant user-facing changes?\n\nNo, this is a minor correctness fix that changes no public APIs. In\npractice this should have no effect because the only bool list in the\ncurrent parquet IDL is in the column index, which we do not skip via\nthis path.\n\n# AI Use\n\nIssue was discovered by and initial fix implemented by ChatGPT 6.1 Sol.\nI modified the fix to remove some performance regressions and fixed one\ntest so it would actually error on main."
    },
    {
      "commit": "68cd02d3f9c27f9b3d3bf3bf747e0276fddcd87a",
      "tree": "a4e1e12c0b9ef88b88c41bb3f0c052606238b82e",
      "parents": [
        "901a171dbf03341a79d35bdb495332384590e236"
      ],
      "author": {
        "name": "Mikhail Zabaluev",
        "email": "mikhail.zabaluev@gmail.com",
        "time": "Tue Oct 27 03:58:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 03:58:04 2026 +0000"
      },
      "message": "bench(arrow): cover filtering of nested list types (#11871)\n\n# Which issue does this PR close?\n\n- Part of #11839\n\n# Rationale for this change\n\n`List`, `LargeList`, `FixedSizeList` and `Map` currently have no native\n`filter` kernel and go through the `MutableArrayData` fallback. There\nare no benchmarks for filtering these types, so there is nothing to\ncompare the upcoming native kernels against.\n\n# What changes are included in this PR?\n\nNew cases in `arrow/benches/filter_kernels.rs`, each at 1/2, 1023/1024\nand 1/1024 selectivity, with both a plain and a prebuilt (`filter\ncontext`) predicate:\n\n- `list\u003ci32\u003e`\n- `list\u003cstruct\u003ci64, utf8\u003e\u003e`\n- ~~`struct\u003c8 x i64, list\u003cstruct\u003ci64, utf8\u003e\u003e\u003e`: the column shape from\napache/datafusion#26581, with up to 64 (about 32 on average) items per\nrow~~\n- `fixed_size_list\u003ci32\u003e` and `fixed_size_list\u003cstruct\u003ci64, utf8\u003e\u003e`\n- `map\u003cutf8, i64\u003e`\n\nThe existing `bench_util` helpers are reused where they fit. Small local\nhelpers build the struct-valued lists.\n\n# Are these changes tested?\n\nBenchmarks only. Current numbers on `main` (Apple M4 Pro, plain\npredicate):\n\n| case | kept 1/2 | kept 1023/1024 | kept 1/1024 |\n|---|---|---|---|\n| list\\\u003ci32\\\u003e w NULLs | 576 µs | 96 µs | 2.9 µs |\n| list\\\u003cstruct\\\u003ci64, utf8\\\u003e\\\u003e w NULLs | 1.47 ms | 1.46 ms | 6.3 µs |\n| struct\\\u003c8 x i64, list\\\u003cstruct\\\u003ci64, utf8\\\u003e\\\u003e\\\u003e w NULLs | 3.85 ms |\n6.04 ms | 13.4 µs |\n| fixed_size_list\\\u003ci32\\\u003e w NULLs | 413 µs | 39 µs | 2.6 µs |\n| fixed_size_list\\\u003cstruct\\\u003ci64, utf8\\\u003e\\\u003e | 903 µs | 444 µs | 4.9 µs |\n| map\\\u003cutf8, i64\\\u003e w NULLs | 1.50 ms | 2.88 ms | 5.9 µs |\n\nSome 1023/1024 cases are slower than the 1/2 cases. The struct and map\nrows show this most clearly.\n\n# Are there any significant user-facing changes?\n\nNo.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "901a171dbf03341a79d35bdb495332384590e236",
      "tree": "b32c39954caf58729c83dc755a6a408dae9678f8",
      "parents": [
        "efb25a30d3deeaac40af73443a441d1a0252c129"
      ],
      "author": {
        "name": "timmyb32r",
        "email": "44944967+timmyb32r@users.noreply.github.com",
        "time": "Tue Oct 27 02:41:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:41:40 2026 +0000"
      },
      "message": "Fix incorrect reversed `DataType::contains` check for union type (#11826)\n\n# Which issue does this PR close?\n\nNone — standalone bug fix.\n\n# Rationale for this change\n\nDataType::contains checks whether self is a superset of other.\nFor Union types, the check iterated over self\u0027s variants instead\nof other\u0027s, reversing the containment relationship.\n\n# What changes are included in this PR?\n\nCheck that every variant in other has a matching type ID and\ncompatible field in self.\n\n# Are these changes tested?\n\nAdded regression tests for both sparse and dense unions covering\nsubset containment, empty unions, reordered fields, nullability,\nand incompatible type IDs, field types, and union modes.\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e\n\n# AI assistance\n\nCodex identified the issue and generated the fix, regression tests,\nand initial PR description.\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "efb25a30d3deeaac40af73443a441d1a0252c129",
      "tree": "f371c0d37e83b971e6765de5024c473a7816b217",
      "parents": [
        "f7a72ebaa0386b93227e36f52171297391e49634"
      ],
      "author": {
        "name": "Tzu-Chiao Yeh",
        "email": "su3g4284zo6y7@gmail.com",
        "time": "Tue Oct 27 02:37:13 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:37:13 2026 +0000"
      },
      "message": "fix(arrow-array): make `record_batch!` usable without a direct `arrow_schema` dependency (#11734)\n\n# Which issue does this PR close?\n\nNone. This is a small, self-contained fix, so no issue was filed.\n\n# Rationale for this change\n\n`record_batch!` expands to `arrow_schema::*` paths, which resolve in the\ncaller\u0027s crate. Users who depend only on the `arrow` umbrella crate and\ncall `arrow::array::record_batch!` get:\n\n```\nerror[E0433]: cannot find module or crate `arrow_schema` in this scope\n```\n\nand have to add `arrow_schema` as a direct dependency to use the macro,\nor work around it with `use arrow::datatypes as arrow_schema;`.\n\n# What changes are included in this PR?\n\n`record_batch!` now builds the batch with\n`RecordBatch::try_from_iter_with_nullable`, using `create_array!` for\nthe columns.\n\nAs a side effect, types supported by `create_array!` that are not unit\n`DataType` variants (e.g. `TimestampSecond`) now work in\n`record_batch!`; previously they failed to compile.\n\n# Are these changes tested?\n\nAdded unit tests for the macro.\n\nThe missing-dependency case itself can\u0027t be reproduced in-tree since\nworkspace crates already depend on `arrow_schema`; I verified it with a\nstandalone crate depending only on `arrow`.\n\n# Are there any significant user-facing changes?\n\nNo breaking changes. `record_batch!` now works with only the `arrow`\ndependency and also accepts the additional types mentioned above.\n\nThis change was written with help from an AI assistant (Claude Code). I\nhave reviewed and understand all of it.\n\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "f7a72ebaa0386b93227e36f52171297391e49634",
      "tree": "481cb9c4821d1e7a933c9012c0ee64de9088d6d9",
      "parents": [
        "f23b77b6b9daf157078d329079453be78ba9f626"
      ],
      "author": {
        "name": "timmyb32r",
        "email": "44944967+timmyb32r@users.noreply.github.com",
        "time": "Tue Oct 27 02:30:05 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:30:05 2026 +0000"
      },
      "message": "Reject merging `Field`s of unions with different modes (#11827)\n\n# Which issue does this PR close?\n\nNone — standalone bug fix.\n\n# Rationale for this change\n\n`Field::try_merge` accepted unions with different modes, even though\nsparse and dense unions have different physical layouts. The result\nretained the mode of `self`, silently ignoring the incompatible mode\nof the other field.\n\n# What changes are included in this PR?\n\nReturn `ArrowError::SchemaError` when the union modes differ.\n\n# Are these changes tested?\n\nAdded a regression test covering rejection of sparse/dense merges\nin both directions. It also verifies that unions with matching modes\ncan still merge distinct variants.\n\n# Are there any significant user-facing changes?\n\n# AI assistance\n\nCodex identified the issue and generated the fix, regression tests,\nand initial PR description.\n\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "f23b77b6b9daf157078d329079453be78ba9f626",
      "tree": "6143d6f8064f1a3752fda261acb27d6eb72e9c34",
      "parents": [
        "87b8013f9f83e8f7681eefc01c452eb951754eff"
      ],
      "author": {
        "name": "Manas Choksi",
        "email": "162600900+choksi2212@users.noreply.github.com",
        "time": "Tue Oct 27 01:56:13 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 01:56:13 2026 +0000"
      },
      "message": "fix(arrow-array): return overflow error instead of panicking when negating `i32::MIN` months (#11611)\n\n# Which issue does this PR close?\n\n- Closes #11600\n\n# Rationale for this change\n\n`Date32Type`/`Date64Type`::`subtract_year_months_opt` and\n`subtract_month_day_nano_opt` negate the interval months with a unary\nminus before handing them to `add_months_date`. When the months are\n`i32::MIN` the negation itself overflows, so in debug builds the `_opt`\nhelpers panic instead of returning `None`:\n\n```\nthread panicked at arrow-array/src/types.rs:1143:55:\nattempt to negate with overflow\n```\n\nEvery other out-of-range date arithmetic returns `None` from the `_opt`\nhelpers, which `date_op` surfaces as `Date arithmetic overflow`. The\ntimestamp kernels already handle `i32::MIN` months\n(`sub_months_datetime` subtracts through `unsigned_abs`), so only these\nfour date helpers were affected.\n\n# What changes are included in this PR?\n\nThe four negations now use `checked_neg()`, so the negation overflow\nreturns `None` and the kernels report the same `Date arithmetic\noverflow` error as any other interval that moves the date out of range:\n\n- `Date32Type::subtract_year_months_opt`\n- `Date32Type::subtract_month_day_nano_opt`\n- `Date64Type::subtract_year_months_opt`\n- `Date64Type::subtract_month_day_nano_opt`\n\n`add_months_date` is untouched — it already handles months of any\nmagnitude via `unsigned_abs`.\n\n# Are there any user-facing changes?\n\nNo API changes. Subtracting an `i32::MIN`-months interval from a\n`Date32`/`Date64` array no longer panics in debug builds; it returns the\nexisting `Date arithmetic overflow` error, matching the already-correct\nbehavior of every other out-of-range interval.\n\nOne note on release builds (overflow checks off): the wrapped\n`-i32::MIN` still lands in `add_months_date`\u0027s `unsigned_abs` branch,\nwhich returns `None` for a ~179-million-year shift, so release builds\nwere already reporting the overflow error. That part is reasoned from\nthe code; everything below is from actual runs.\n\n# Testing\n\n- New kernel-level test `test_date_sub_interval_min_months` covers the\nrepro from the issue for all four type/interval combinations and asserts\nthe `Date arithmetic overflow` error. On unpatched `main` it panics with\n`attempt to negate with overflow` at `arrow-array/src/types.rs:1143:55`;\nwith this patch it passes.\n- `test_year_month_ops!` and `test_month_day_nano_ops!` gain `i32::MIN`\ncases for both `Date32Type` and `Date64Type`: subtract must return\n`None`, and the corresponding `add` with `i32::MIN` months is pinned as\nthe out-of-range control.\n- `cargo test -p arrow-arith`: 256 passed, 0 failed. `cargo test -p\narrow-array`: 946 passed, 0 failed. `cargo fmt --all -- --check` and\n`cargo clippy -p arrow-arith -p arrow-array --all-targets` clean (rustc\n1.99.0, Linux).\n\n---------\n\nSigned-off-by: choksi2212 \u003cchoksi2212@users.noreply.github.com\u003e\nCo-authored-by: choksi2212 \u003cchoksi2212@users.noreply.github.com\u003e\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "87b8013f9f83e8f7681eefc01c452eb951754eff",
      "tree": "aa08bc11a9fa888dc68e5a814728373317501968",
      "parents": [
        "4eff191376515003c8522a23103e276db73cb875"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Tue Oct 27 01:50:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 01:50:23 2026 +0000"
      },
      "message": "refactor(parquet): share selector intersection and union traversal (#11688)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\n- Closes #NNN\n\n# Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\n\nSelector-backed intersection and union duplicate the same traversal and\nrun-splitting logic. They differ only in how the skip flags are\ncombined. Sharing this traversal reduces duplication and makes their\ncommon behavior easier to maintain.\n\n\n# What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n- Extract a private `combine_row_selections` helper.\n- Combine skip flags using OR for intersection and AND for union.\n- Preserve zero-length handling, output normalization, and the existing\nbehavior of passing the longer operand\u0027s tail through unchanged.\n\n# Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e"
    },
    {
      "commit": "4eff191376515003c8522a23103e276db73cb875",
      "tree": "a8a85cf1d1ca999aa915f5720ef9458b7baae875",
      "parents": [
        "513c92d5f12cbef5da09e30c144f2dcf857cdf91"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Tue Oct 27 01:46:13 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 01:46:13 2026 +0000"
      },
      "message": "refactor(parquet): simplify `expand_to_batch_boundaries_from_selectors` (#11684)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\n- Closes #NNN\n\n# Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\n\nSelection runs already advance in row order, so expanding them to batch\nboundaries does not require sorting the resulting ranges before merging\nthem.\n\n\n# What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\nExpand and merge selected runs in a single pass, removing the redundant\nsort and intermediate range vector. Use `next_multiple_of` for the end\nboundary and clarify how overlapping and adjacent ranges are merged.\n\n\n# Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\n\nexisting tests case\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e"
    },
    {
      "commit": "513c92d5f12cbef5da09e30c144f2dcf857cdf91",
      "tree": "63fff4f8b097a2b8199fda46c0942214d31eadff",
      "parents": [
        "0e4a50115584adee2852e33eadb68d0a0ccd4094"
      ],
      "author": {
        "name": "Huaijin",
        "email": "haohuaijin@gmail.com",
        "time": "Tue Oct 27 01:32:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 01:32:48 2026 +0000"
      },
      "message": "refactor(parquet): simplify row selection normalization and page scanning (#11687)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\n\n\n- Closes #NNN\n\n# Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\nRow selection construction duplicates existing normalization logic,\nwhile page-range scanning contains a redundant final-page check. Reusing\nthe existing helper and removing unreachable code simplifies both paths.\n\n\n# What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n- Reuse `append_normalized_selector` in `FromIterator\u003cRowSelector\u003e`,\npreserving zero-length filtering and checked merging of adjacent\nselectors.\n- Remove the unreachable page-append block in\n`scan_ranges_from_selectors`. The current page has already been handled\nat the beginning of the loop.\n\n# Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e"
    },
    {
      "commit": "0e4a50115584adee2852e33eadb68d0a0ccd4094",
      "tree": "57906fa0a9b24e3dfe745e8f42ad1d5082a73230",
      "parents": [
        "c0fcd708bfa863ba18757b3ebb2f96a904bb899d"
      ],
      "author": {
        "name": "Anand Hegde",
        "email": "anandghegde@gmail.com",
        "time": "Tue Oct 27 00:18:31 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 00:18:31 2026 +0000"
      },
      "message": "Move remaining decimal adapters into the decimal submodule (#11078)\n\n# Which issue does this PR close?\n\n- Part of #11032.\n\n# Rationale for this change\n\nContinues splitting up `cast/mod.rs`.\n\n# What changes are included in this PR?\n\nMoves the remaining decimal adapters (`integer_to_decimal_native`,\n`integers_fit_digits`, `cast_integer_to_decimal`, `cast_from_decimal`,\n`cast_to_decimal`) into the existing `cast/decimal.rs`. Code is\nunchanged apart from `pub(crate)` on `cast_from_decimal` and\n`cast_to_decimal`.\n\n# Are these changes tested?\n\nCovered by existing tests.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "c0fcd708bfa863ba18757b3ebb2f96a904bb899d",
      "tree": "9429e4e2411b67b588a14e3147ba34debb981a72",
      "parents": [
        "fafa22b7c57b8e802dccd6e7fcb65afcc654fc4d"
      ],
      "author": {
        "name": "yongster",
        "email": "76621090+yongster@users.noreply.github.com",
        "time": "Tue Oct 27 00:17:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 00:17:28 2026 +0000"
      },
      "message": "fix(arrow-select): preserve nullif nulls for REE and Union (#10991)\n\n`nullif` creates nulls by adding a top-level validity bitmap. This works\nfor\nmost arrays, but RunEndEncoded and Union arrays derive logical\nnullability from\ntheir child arrays instead.\n\nAs a result, `nullif` previously returned non-null values at positions\nwhere\nthe condition was true for these array types.\n\n\nCloses #10990 \n\n\n\n- Delegate `nullif` for RunEndEncoded and Union arrays to `take`, using\nnull\n  indices for the positions selected by the condition.\n- Return an error when a RunEndEncoded values field is non-nullable and\ncannot\n  represent the requested nulls.\n- Return an error when a Union has no nullable child that can represent\nnull\n  indices.\n- Prefer a nullable Union child when `take` needs to represent a null\nindex.\n- Add coverage for nullable and non-nullable REE, plus dense and sparse\nUnion\n  cases.\n\n---------\n\nCo-authored-by: yang3.xie \u003cyang3.xie@ly.com\u003e\nCo-authored-by: Jefffrey \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "fafa22b7c57b8e802dccd6e7fcb65afcc654fc4d",
      "tree": "4baf8383931c3bbf5a8f75fed6fe57751899a947",
      "parents": [
        "16310a9f7b94463e583dc7b70c812333e2cba75d"
      ],
      "author": {
        "name": "Amit Vijapur",
        "email": "vijapuramit@gmail.com",
        "time": "Tue Oct 27 00:07:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 00:07:51 2026 +0000"
      },
      "message": "fix(arrow-cast): parse ISO 8601 timestamps without seconds (#11179)\n\n# Which issue does this PR close?\n\nPart of #8219. This covers omission of seconds only; hour-only and other\nISO 8601 forms remain separate follow-ups.\n\n# Rationale for this change\n\n`string_to_datetime` documents RFC 3339 / ISO 8601 support, but\n`TimestampParser::time` only accepts `HH:MM:SS` and `HHMMSS`, so an ISO\n8601 time without seconds such as `2025-08-14T00:00Z` fails with `error\nparsing time`. @alamb agreed on the issue that this form should parse,\nprovided performance is not hurt; the new arm sits after the existing\n`HH:MM:SS` and `HHMMSS` arms, so those forms match before its guard\nruns. @klion26 offered to fix it on 2025-09-08 and no PR followed in the\nyear since, so I picked it up.\n\n# What changes are included in this PR?\n\nOne more arm in `TimestampParser::time` accepts `HH:MM` when byte 16 is\nneither a digit nor `:` nor `.`, so `HH:MM:SS`, `HH:MM:` and `HH:MM.f`\nkeep their current handling and errors. Seconds and nanoseconds are zero\nand the timezone suffix is parsed as before. The doc list of accepted\ninputs gains the new form.\n\nOne consequence: `Date32Type::parse(\"2020-09-08 01:02\")` now succeeds,\nsince the string is a valid timestamp. The `parse_date32` test moves\nthat input from the error cases to the parsed ones.\n\n# Are these changes tested?\n\n`string_to_timestamp_without_seconds` checks four inputs (with `Z`, no\nsuffix, `+05:30`, and a lowercase `t` with `-08:00`) against their `:00`\nforms. `string_to_timestamp_invalid` gains `09:2Z`, `09:26:Z`,\n`09:26.5Z` and `09:61Z`, all still `error parsing time`. `cargo test -p\narrow-cast` passes.\n\n# Are there any user-facing changes?\n\nTimestamps whose time has no seconds now parse in `string_to_datetime`,\nand through it in the string to timestamp and date casts.\n\nCodex prepared the documentation follow-up and these review\nexplanations. The documentation-only follow-up passed all 387 arrow-cast\nlibrary tests and workspace formatting on October 15. Codex ran the\nmask/guard mutation checks on October 12 and reverted both mutations. No\nperformance benchmark was rerun for the documentation follow-up.\n\n---------\n\nSigned-off-by: Amit Vijapur \u003cvijapuramit@gmail.com\u003e"
    },
    {
      "commit": "16310a9f7b94463e583dc7b70c812333e2cba75d",
      "tree": "4e8a6ca8e33a2ac6b93223ab43d8563c3f472e3d",
      "parents": [
        "a404d6f9a07e82f4fc3dd52a1e188df2588a292a"
      ],
      "author": {
        "name": "Y Ethan Guo",
        "email": "ethan.guoyihua@gmail.com",
        "time": "Mon Oct 26 20:11:18 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 20:11:18 2026 +0000"
      },
      "message": "bench(parquet): add FIXED_LEN_BYTE_ARRAY(7) decimal reader benchmarks with negative values (#11909)\n\n# Which issue does this PR close?\n\n- Part of #11908\n\n# Rationale for this change\n\nThe `FIXED_LEN_BYTE_ARRAY` decimal benchmarks only cover 16-byte,\nnon-negative values, while parquet-mr based writers use the minimal\nwidth for the precision (7 bytes for `DECIMAL(15,2)`). This adds that\ncase ahead of the change for #11908 so it can run on the benchmark\nrunner.\n\n# What changes are included in this PR?\n\nTwo groups read a `FIXED_LEN_BYTE_ARRAY(7)` `DECIMAL(15,2)` column with\nnegative values, as `Decimal128` and, through a type hint, as\n`Decimal64`. The generator now writes the low `type_length` bytes of\neach value, which leaves the existing 16-byte data unchanged.\n\n# Are these changes tested?\n\nThey are benchmarks.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI usage: written with an AI coding assistant under my direction; I\nreviewed the code and ran the benchmarks.\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "a404d6f9a07e82f4fc3dd52a1e188df2588a292a",
      "tree": "e27336464f7c6ec7a222861e0ec9a86db603ee6c",
      "parents": [
        "91c5db296f8477d384abdc427301ab9e8baac537"
      ],
      "author": {
        "name": "NingLin Liu",
        "email": "x07514475479@gmail.com",
        "time": "Mon Oct 26 19:46:20 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 19:46:20 2026 +0000"
      },
      "message": "fix(arrow-avro): keep nulls when reading strings as Utf8View (#11915)\n\n# Which issue does this PR close?\n\n- Closes #11735\n\n# Rationale for this change\n\nWith `ReaderBuilder::with_utf8_view(true)`, the `StringView` arm of\n`Decoder::flush` built a `StringArray` with the correct null buffer,\nthen copied it into a `Vec\u003c\u0026str\u003e` that replaced every NULL with `\"\"`\nbefore building the `StringViewArray`. The resulting array had no null\nbuffer, so every NULL of a nullable string field came back as a non-null\nempty string (`null_count \u003d\u003d 0`), while the same file read with\n`with_utf8_view(false)` was correct.\n\n# What changes are included in this PR?\n\n- Build the `StringViewArray` with\n`StringViewArray::from(\u0026StringArray)`, which keeps the null buffer and\ncreates views into the existing values buffer instead of copying each\nstring through a `Vec\u003c\u0026str\u003e`.\n\n(#11737 proposed the same approach but was closed by its author without\nmerging; this picks the fix back up.)\n\n# Are these changes tested?\n\nYes. Added `test_utf8_view_keeps_nulls_of_nullable_strings`, which\nwrites `[\"a\", null, \"\", null, \"b\"]` with `AvroWriter` and reads it back\nwith `with_utf8_view(true)`. It fails on main (`null_count` 0 instead of\n2) and passes with the fix. `cargo test -p arrow-avro` and `cargo clippy\n-p arrow-avro --all-targets --all-features -- -D warnings` pass.\n\n# Are there any user-facing changes?\n\nYes, a bug fix: with `with_utf8_view(true)`, NULL strings are now read\nas nulls instead of empty strings. No API changes.\n\nThis PR was prepared with AI assistance and reviewed/tested by the\nauthor."
    },
    {
      "commit": "91c5db296f8477d384abdc427301ab9e8baac537",
      "tree": "7aa98a9f7b85970ef8fa594a4a0830bae7b26995",
      "parents": [
        "a19146199774ff2797271c2285321a38272ec48c"
      ],
      "author": {
        "name": "Thomas Tanon",
        "email": "thomas@pellissier-tanon.fr",
        "time": "Mon Oct 26 18:36:55 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:36:55 2026 +0000"
      },
      "message": "fix(parquet): apply max_row_group_bytes to the first batch of a row group (#11798)\n\n# Which issue does this PR close?\n\n- Closes #11792\n- Closes https://github.com/apache/arrow-rs/pull/11796\n\n# Rationale for this change\n\n`max_row_group_bytes` has no effect when a single batch is larger than\nthe limit: the first batch written to a row group is accepted whole, as\nthere are no buffered rows to estimate a row size from. Row groups then\nhold one batch each, however large it is. See the issue for a\nreproduction.\n\n# What changes are included in this PR?\n\nWhen a byte limit is set and the in-progress row group is empty,\n`ArrowWriter::write` now writes a single row first. That gives the\nexisting logic a measured row size to work out how many of the remaining\nrows fit, so they get split the same way as for a non-empty row group.\n\nThe row limit still applies first, and nothing changes when\n`max_row_group_bytes` is unset.\n\n# Are these changes tested?\n\nYes, `test_row_group_limit_bytes_splits_first_batch` writes 100-row\nbatches against a byte limit of about 35 rows. It checks that no row\ngroup holds a whole batch and that every row group stays within one row\nof the limit. It fails on `main` with row groups of `[100, 100, 100]`.\nThe existing `test_row_group_limit_*` tests pass unchanged.\n\n# Are there any significant user-facing changes?\n\nWriters that set `max_row_group_bytes` with batches larger than it now\nget row groups that respect the limit, so they produce more and smaller\nrow groups than before. The first row of each row group is encoded on\nits own. That adds a small per-row-group cost, but only when a byte\nlimit is set.\n\nDisclaimer: mostly vibe coded but carefully reviewed\n\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "a19146199774ff2797271c2285321a38272ec48c",
      "tree": "635e75431a312edb07144c89add89e3b230de6f7",
      "parents": [
        "69be95c1d925bd876c71c11ec6cb2a646d54a1ad"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Mon Oct 26 18:36:02 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:36:02 2026 +0000"
      },
      "message": "chore(ci): ignore unaffected tonic zstd advisories (#11922)\n\n## what caused the merge queue to fail?\nThe merge queue is currently blocked by new RustSec advisories for the\nzstd 0.13 dependency pulled in by tonic. The same main commit passed\naudit at 12:32 UTC with 1,355 advisories, then failed at 15:26 UTC after\nthe advisory database grew to 1,378 entries, so this wasn\u0027t caused by a\nrecent Arrow change.\n\n# fix\nTonic doesn\u0027t use the affected APIs, and there isn\u0027t a tonic release\nusing zstd 0.14 yet. Ignore these advisories for now and remove the\nignores once tonic updates zstd.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "69be95c1d925bd876c71c11ec6cb2a646d54a1ad",
      "tree": "048f1393ddaaa14224a5487c43c2f00f708ccc66",
      "parents": [
        "5b02c08e6ae76bceba53e41e7f66e0876741da4d"
      ],
      "author": {
        "name": "Jeffrey Vo",
        "email": "jeffrey.vo.australia@gmail.com",
        "time": "Mon Oct 26 12:30:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 12:30:27 2026 +0000"
      },
      "message": "chore: port changelog entries to main (#11916)\n\n- Closes https://github.com/apache/arrow-rs/issues/11664\n- Closes https://github.com/apache/arrow-rs/issues/11665\n- Closes https://github.com/apache/arrow-rs/issues/11666\n\nPorting above patch release changelogs to main"
    },
    {
      "commit": "5b02c08e6ae76bceba53e41e7f66e0876741da4d",
      "tree": "0f27a98f8dc3bd830632eb219bc4081cb891abdb",
      "parents": [
        "b5e7cad208f488cc7d4d50c795d2d180192cb37b"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Mon Oct 26 11:34:38 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 11:34:38 2026 +0000"
      },
      "message": "docs: make fork CI setup harder to miss (#11914)\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Before opening this PR, [enable CI in your\nfork](https://github.com/apache/arrow-rs/blob/main/CONTRIBUTING.md#pull-requests-from-forks).\n\u003e\n\u003e **Delete this notice after enabling CI.**\n\n# Which issue does this PR close?\n\n- Closes #11913\n\n# Rationale for this change\n\nContributors can miss the existing passive CI reminder and open PRs\nbefore enabling Actions in their forks.\n\n# What changes are included in this PR?\n\nMake the reminder an explicit pre-submit instruction and ask\ncontributors to delete it after enabling CI.\n\nThis PR intentionally keeps the notice above as an example.\n\n# Are these changes tested?\n\nDocumentation-only change.\n\n# Are there any significant user-facing changes?\n\nyes."
    },
    {
      "commit": "b5e7cad208f488cc7d4d50c795d2d180192cb37b",
      "tree": "2ed050b41f7bc59201b1565c35fdbd671c73f0e8",
      "parents": [
        "deeb7256110c6c2325db66ad741c5f56749d3b93"
      ],
      "author": {
        "name": "NingLin Liu",
        "email": "x07514475479@gmail.com",
        "time": "Mon Oct 26 04:41:38 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 04:41:38 2026 +0000"
      },
      "message": "fix(arrow-data): extend Interval(DayTime) as IntervalDayTime in MutableArrayData (#11906)\n\n# Which issue does this PR close?\n\n- Closes #11862.\n\n# Rationale for this change\n\n`ArrayData::build` only requires an `Interval(DayTime)` values buffer to\nbe aligned to `align_of::\u003cIntervalDayTime\u003e()` (4 bytes, since it is a\n`#[repr(C)]` struct of two `i32`s). `MutableArrayData` extended it as\n`i64`, so `Buffer::typed_data::\u003ci64\u003e` asserted 8-byte alignment and\npanicked on a valid, 4-byte aligned buffer. Every kernel built on\n`MutableArrayData` (`zip`, `merge`, `concat` of some layouts, ...) hit\nthis. This is the `DayTime` counterpart of #5917, which #10171 fixed for\n`MonthDayNano`.\n\n# What changes are included in this PR?\n\n`build_extend` and `build_extend_nulls` now use `IntervalDayTime` for\n`Interval(DayTime)`, the same way `MonthDayNano` uses\n`IntervalMonthDayNano`. The element size is unchanged (8 bytes), so the\nproduced buffers are identical; only the alignment requirement drops to\nthe one `ArrayData` already validates.\n\n# Are these changes tested?\n\nYes. Added `test_interval_day_time_aligned_to_4` in\n`arrow/tests/array_transform.rs`, which builds an `Interval(DayTime)`\narray on a buffer starting at 4 mod 8, extends it and a null through\n`MutableArrayData`, and checks the result. It panics at\n`arrow-buffer/src/buffer/immutable.rs:334` without the change and passes\nwith it. `cargo test -p arrow --test array_transform`, `cargo test -p\narrow-data -p arrow-select` and `cargo clippy -p arrow-data\n--all-targets -- -D warnings` pass.\n\n# Are there any user-facing changes?\n\nNo API changes; kernels no longer panic on 4-byte aligned\n`Interval(DayTime)` arrays.\n\nThis PR was prepared with AI assistance and reviewed/tested by the\nauthor."
    },
    {
      "commit": "deeb7256110c6c2325db66ad741c5f56749d3b93",
      "tree": "2422f33158ed2139226a594ed1c1071dc3aa0b80",
      "parents": [
        "03d40357b73c02e6454c7d352d6552f01bf500a8"
      ],
      "author": {
        "name": "Rishabh Bhardwaj",
        "email": "140598487+rizzabhdwaj@users.noreply.github.com",
        "time": "Mon Oct 26 04:15:37 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 04:15:37 2026 +0000"
      },
      "message": "perf(parquet-variant): Avoid intermediate string allocations in JSON serialization (#11402)\n\n# Which issue does this PR close?\n\n- Closes #11396\n\n# Rationale for this change\n\nAvoid unnecessary temporary `String` allocations when serializing JSON\nvalues by writing directly to the output buffer.\n\n# What changes are included in this PR?\n\n- Use `serde_json::to_writer` for direct JSON serialization.\n- Avoid unnecessary intermediate `String` allocations and copies.\n- Preserve the existing JSON escaping and serialization behavior.\n\n---------\n\nCo-authored-by: rizzabh \u003c140598487+rishabh1244@users.noreply.github.com\u003e\nCo-authored-by: Jeffrey Vo \u003cjeffrey.vo.australia@gmail.com\u003e\nCo-authored-by: Kosta Tarasov \u003c33369833+sdf-jkl@users.noreply.github.com\u003e"
    },
    {
      "commit": "03d40357b73c02e6454c7d352d6552f01bf500a8",
      "tree": "09bab256d73ed4e7b7c640c7ee706ba421d8aec8",
      "parents": [
        "8953c9014c487676561b80a1e8a8c86ea44066bb"
      ],
      "author": {
        "name": "Prince Jain",
        "email": "princejain756@gmail.com",
        "time": "Mon Oct 26 04:14:21 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 04:14:21 2026 +0000"
      },
      "message": "arrow-select: error on empty input and keep row count for column-less batches in interleave_record_batch (#11845)\n\n# Which issue does this PR close?\n\n- Closes #11833\n\n# Rationale for this change\n\n`interleave_record_batch` read the schema from `record_batches[0]`, so\ncalling it with no batches panicked with an index-out-of-bounds, and it\nbuilt the result with `RecordBatch::try_new`, which rejects a batch with\nno columns and no explicit row count even though `indices.len()`\nprovides one.\n\n# What changes are included in this PR?\n\n- Empty `record_batches` now returns `InvalidArgumentError`, matching\nthe array-level `interleave`.\n- The result is built with `try_new_with_options` and `row_count \u003d\nindices.len()`, so a column-less batch produces a batch with that many\nrows, matching `take_record_batch`.\n\n# Are these changes tested?\n\nYes. Two tests in `interleave.rs`: empty input returns an\n`InvalidArgumentError`, and a 3-row schema-empty batch interleaved with\n`[(0, 0), (0, 2)]` yields a 2-row batch. Both fail on unmodified code\n(index panic and `InvalidArgumentError` respectively).\n\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "8953c9014c487676561b80a1e8a8c86ea44066bb",
      "tree": "110eb8894e0c600fb5262695b18ba5384967f024",
      "parents": [
        "3f1668719ddb1aabce05483249cc3c2eec5d1592"
      ],
      "author": {
        "name": "Matt Van Horn",
        "email": "mvanhorn@users.noreply.github.com",
        "time": "Mon Oct 26 04:09:33 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 04:09:33 2026 +0000"
      },
      "message": "fix(array-data): return an error on FixedSizeList validation overflow (#11859)\n\n# Which issue does this PR close?\n\n- Closes #11851\n\n# Rationale for this change\n\nValidating a fixed-size list panics when length plus offset, multiplied\nby the list width, exceeds the largest address-sized integer. Array-data\nvalidation aborts the process. The expected child length is that\nproduct. checked_len_plus_offset already returns an error when the sum\noverflows. The following checked_mul(list_size) uses expect, so an\noverflowing product panics.\n\nWhen checked_mul returns None, validation returns\nArrowError::InvalidArgumentError. The message names the data type, the\nlength-plus-offset value, and the list size, and states that the product\nexceeds usize. The added test uses an empty child with no null buffer,\nchecks two length and offset pairs whose product overflows, and checks a\nfitting product that reports the child as shorter than required.\n\n# What changes are included in this PR?\n\nCovered in the summary above.\n\n# Are these changes tested?\n\ncargo test -q --manifest-path arrow-data/Cargo.toml -p arrow-data\nreported 86 passed and 0 failed.\nThe same cargo test command reported 13 passed and 0 failed in the\nfollowing suite.\nThe same cargo test command ran the doctests.\n\n# Are there any significant user-facing changes?\n\nCovered in the summary above.\n\nAI was used for assistance.\n\nCo-authored-by: Matt Van Horn \u003c455140+mvanhorn@users.noreply.github.com\u003e\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "3f1668719ddb1aabce05483249cc3c2eec5d1592",
      "tree": "21ab75c0184ef6e91556fedf29e9a68645472c3c",
      "parents": [
        "a2c689866fd24b91095814d0653368ffd5d63159"
      ],
      "author": {
        "name": "starpact",
        "email": "58423997+starpact@users.noreply.github.com",
        "time": "Mon Oct 26 02:31:55 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 02:31:55 2026 +0000"
      },
      "message": "fix(parquet): release bloom filter capacity after folding (#11701)\n\n# Which issue does this PR close?\n\nN/A\n\n# Rationale for this change\n\n`Sbbf::fold_n` shrinks the bitset with `Vec::truncate`, which keeps the\noriginal allocation. Filters are allocated up front for the configured\nNDV and fpp. When no NDV is set, NDV defaults to\n`max_row_group_row_count`, which gives 1 MiB at the default fpp of 0.05.\nFolding then reduces the written filter to fit the actual distinct\nvalues, often by orders of magnitude, but the in-memory filter keeps the\nfull allocation.\n\nWith `BloomFilterPosition::End`, `SerializedFileWriter` keeps every row\ngroup\u0027s folded filters until `close()`. Retained memory therefore grows\nas `row_groups × bloom_columns × initial_filter_size`, regardless of how\nsmall the filters end up. For example, with default settings, 100 row\ngroups and 4 bloom-filtered columns retain about 400 MiB of bloom filter\nmemory, while the serialized filters may be only a few KB in total.\n\n# What changes are included in this PR?\n\n`shrink_to_fit()` after `truncate` in `fold_n`.\n\n# Are these changes tested?\n\n`test_fold_n_halves_block_count` now asserts the capacity. Per the\ntemplate, don\u0027t paste a list of commands here.\n\n# Are there any significant user-facing changes?\n\nno"
    },
    {
      "commit": "a2c689866fd24b91095814d0653368ffd5d63159",
      "tree": "4f8cbe8484daae85b39d9d0f2251a97ae01a4c50",
      "parents": [
        "258f331c94ae360ffa91d84341ca211ccd9f8449"
      ],
      "author": {
        "name": "RanaPriyansh",
        "email": "87440899+RanaPriyansh@users.noreply.github.com",
        "time": "Sun Oct 25 23:03:34 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 23:03:34 2026 +0000"
      },
      "message": "bench(ipc): cover LZ4 reader and writer buffer layouts (#11138)\n\n# Which issue does this PR close?\n\nRelated to #11129. These benchmarks do not resolve the decoder\ninitialization question.\n\n# Rationale for this change\n\nThe IPC reader and stream-writer benchmarks lacked equivalent\nmixed-schema LZ4 coverage.\n\n# What changes are included in this PR?\n\nAdd one mixed-schema LZ4 case for `StreamReader` and one for\n`StreamWriter`, matching the existing ZSTD benchmark patterns. The\nshared `create_batch` fixture now includes a non-null fixed-size binary\nfield. Each case reads or writes ten batches. Reader validation remains\nenabled; writer iterations finish the stream and reuse the output\nbuffer.\n\nThe benchmark setup uses the existing fixture and timed-loop structure.\nIt does not add correctness checks or compression-layout assertions to\nbenchmark setup. The fixed-size binary field is representative fixture\ncoverage, not a separate layout experiment.\n\n# Are these changes tested?\n\nThe mixed LZ4 and ZSTD reader and writer cases passed Criterion\nfunctional mode. The corresponding uncompressed controls passed with no\ndefault features. Stable formatting, targeted reader and writer Clippy,\nand `arrow-ipc` all-targets/all-features Clippy passed with Rust 1.98.1\non aarch64 macOS. Full workspace tests and Clippy were not run. No\nperformance improvement is claimed.\n\n# Are there any user-facing changes?\n\nNo library or API changes.\n\nAI assistance generated the benchmark changes, executed checks, and\nassisted review.\n\n---------\n\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "258f331c94ae360ffa91d84341ca211ccd9f8449",
      "tree": "2f417805be792070b08a25d979aae5cfe9e2dc7a",
      "parents": [
        "08928b340c77062c1c343815e2d140f090bd110b"
      ],
      "author": {
        "name": "Wleeaf",
        "email": "ts.solidarity@gmail.com",
        "time": "Sun Oct 25 23:02:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 23:02:27 2026 +0000"
      },
      "message": "fix(arrow-ipc): return an error instead of panicking on unions with more than 128 fields (#11882)\n\n# Which issue does this PR close?\n\n- Closes #11850.\n\n# Rationale for this change\n\nWhen an IPC schema has a union without `typeIds`, the type ids are\nassigned with `UnionFields::from_fields`, which panics if there are more\nthan 128 children. The schema comes from untrusted input, so this should\nbe an error.\n\n# What changes are included in this PR?\n\nUse the fallible `UnionFields::try_from_fields` in `get_data_type` and\npropagate its error, matching the `typeIds` branch, which already uses\n`UnionFields::try_new`.\n\n# Are these changes tested?\n\nYes. The reproducer from the issue is added as\n`try_fb_to_schema_union_without_type_ids_too_many_fields_is_err`. It\npanics without the fix and passes with it.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI usage: this change was prepared with Claude Code (an AI coding\nagent). The fix and test were generated by it and checked against the\nfailing test from the issue.\n\nCo-authored-by: Wleeaf \u003c179125857+wleeaf@users.noreply.github.com\u003e\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "08928b340c77062c1c343815e2d140f090bd110b",
      "tree": "328ba2d9d992c91276a25138b2d619c0b3c90096",
      "parents": [
        "fb88f81d39601a5d0244d8ef034d7e2a10788c60"
      ],
      "author": {
        "name": "Michael Hoffmann",
        "email": "mhoffm@posteo.de",
        "time": "Sun Oct 25 22:59:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 22:59:04 2026 +0000"
      },
      "message": "bench(arrow): cover interleave of lists with primitive struct children (#11714)\n\n# Rationale for this change\n\nList interleave can copy primitive child ranges directly, but a Struct\nchild takes the expanded-index path. Add coverage before changing that\nimplementation so its costs and existing primitive-list behavior can be\ncompared independently.\n\n# What changes are included in this PR?\n\nExtend interleave_kernels with 4,096 alternating parent selections from\nsix inputs. Cover Int64/Float64 Struct children with singleton, 15- and\n90-element, and mixed-length lists, including independently nullable and\nsliced arrays. Include matching primitive-list controls.\n\n# Are these changes tested?\n\nThe new benchmark cases build and run against the unmodified kernel and\nthe proposed optimization using the actual Arrow workspace. No library\ncode changes are included in this commit.\n\n# Are there any significant user-facing changes?\n\nNo.\n\n# AI usage\n\nAI assistance was used to write and review the benchmark and run the\ncomparisons. Human review and ownership remain with the submitter.\n\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "fb88f81d39601a5d0244d8ef034d7e2a10788c60",
      "tree": "68d58276e96d5c976a269cc7b3555d2fa038d853",
      "parents": [
        "e7c6d29df68a1c69af413af6848be7e787ea173f"
      ],
      "author": {
        "name": "Wleeaf",
        "email": "ts.solidarity@gmail.com",
        "time": "Sun Oct 25 22:07:22 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 22:07:22 2026 +0000"
      },
      "message": "fix(arrow-ipc): reject negative FixedSizeBinary byte width in IPC schema (#11883)\n\n# Which issue does this PR close?\n\n- Closes #11852.\n\n# Rationale for this change\n\nWhen converting an IPC schema, the `byteWidth` of a `FixedSizeBinary`\nfield is used as is. A negative width produces a\n`DataType::FixedSizeBinary` that the rest of the code assumes is valid,\nwhich can lead to panics later on.\n\n# What changes are included in this PR?\n\n`get_data_type` returns a `ParseError` when the byte width is negative.\nA width of 0 is still accepted.\n\n# Are these changes tested?\n\nYes. `try_fb_to_schema_negative_fixed_size_binary_width_is_err` builds a\nschema with a `FixedSizeBinary` field of width -1 and checks that the\nconversion returns an error. It fails without the fix and passes with\nit.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI usage: this change was prepared with Claude Code (an AI coding\nagent). The fix and test were generated by it and checked against a\nfailing test for the issue.\n\nCo-authored-by: Wleeaf \u003c179125857+wleeaf@users.noreply.github.com\u003e\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "e7c6d29df68a1c69af413af6848be7e787ea173f",
      "tree": "44f77b677d6ecaaeb8ed7ebca1d0c14b7f2e73c9",
      "parents": [
        "a543411b6a5fbb71de613651604de5456252de7e"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Sun Oct 25 21:38:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 21:38:48 2026 +0000"
      },
      "message": "docs(flight): document Flight SQL schema listing (#11897)\n\n# Which issue does this PR close?\n\n- Closes #7049\n\n# Why\n\nThe Flight crate links to its examples but does not show how to run a\ncomplete `GetFlightInfo` and `DoGet` flow. Without an end-to-end\nexample, it is easy to construct `FlightData` fields as arbitrary IPC\nbuffers and produce opaque decode failures.\n\n# What changed\n\nAdds a short walkthrough for running the existing Flight SQL server and\nlisting schemas with the bundled client. It also calls out the helpers\nused to encode the schema and `DoGet` response, since constructing\n`FlightData` fields directly produces invalid IPC messages."
    },
    {
      "commit": "a543411b6a5fbb71de613651604de5456252de7e",
      "tree": "a13479704d86c826183ff2c82a81a3df679cc1a5",
      "parents": [
        "eecf5f3870d7e8e13cb5ba58ddf1c811defa631e"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Sun Oct 25 20:38:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 20:38:40 2026 +0000"
      },
      "message": "perf(arrow): specialize Boolean filtering (#11732)\n\n# Which issue does this PR close?\n\n- Closes #11718\n\n# Rationale for this change\n\nBoolean columns currently use `GenericInProgressArray`, which buffers\nfiltered arrays and concatenates them when the output batch is finished.\n\n# What changes are included in this PR?\n\nThis adds `InProgressBooleanArray`. It uses the existing Boolean filter\nkernel and appends the result directly into value and validity builders,\navoiding the final concatenation.\n\n# Are these changes tested?\n\nThe tests cover sliced and filtered copies, null propagation, and buffer\nreuse after `finish`.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "eecf5f3870d7e8e13cb5ba58ddf1c811defa631e",
      "tree": "7db13d790d80760043999b603b5c154365dc892f",
      "parents": [
        "9a95c6da1765905c2b64fe782ddeb8e737b571d9"
      ],
      "author": {
        "name": "Chang Yong Lik",
        "email": "51813538+ahlag@users.noreply.github.com",
        "time": "Sun Oct 25 16:16:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 16:16:27 2026 +0000"
      },
      "message": "fix(arrow-array): reset the lone offset of an empty FFI byte array (#11661)\n\n# Which issue does this PR close?\n\nCloses #11585.\n\n# Rationale for this change\n\n`StringArray::slice(n, 0)` keeps the offset it was sliced at as the\narray\u0027s single offset. When such an array is exported and imported\nagain, `buffer_len` sizes the values buffer of an empty array at offset\n0 as 0, because that lone offset can be any value from the producer (see\n`test_empty_string_with_non_zero_offset`). The offset itself was kept,\nso the imported `ArrayData` failed `validate_full` with `First offset 2\nof Utf8 is larger than values length 0`.\n\n# What changes are included in this PR?\n\nIn `ImportedArrowArray::consume`, an empty\n`Utf8`/`Binary`/`LargeUtf8`/`LargeBinary` array at offset 0 gets a\nzeroed offsets buffer, which matches the empty values buffer. Sizing the\nvalues buffer from the lone offset instead would read past the buffer\nfor producers like the one in `test_empty_string_with_non_zero_offset`\n(offset 123 over an empty buffer).\n\n# Are these changes tested?\n\nYes. `test_empty_slice_of_bytes` round-trips `slice(1, 0)` of each of\nthe four types through `to_ffi`/`from_ffi`, then checks `validate_full`\nand equality with the exported data. It fails without the fix with the\nerror above. `cargo test -p arrow-array --features ffi` and `--features\nffi,force_validate` pass, and `cargo clippy -p arrow-array --all-targets\n--all-features -- -D warnings` is clean.\n\n# Are there any user-facing changes?\n\nNo API changes. Empty sliced byte arrays imported through the C Data\nInterface now pass validation.\n\nAI use: Claude Code (AI) helped trace the import path and wrote the\nfirst draft of the fix, the test and this description; I reviewed and\nran everything."
    },
    {
      "commit": "9a95c6da1765905c2b64fe782ddeb8e737b571d9",
      "tree": "3c039ae210dd9a5c15aba83264534e7e8e1f6fc1",
      "parents": [
        "09bb64ac5c5221a927601d43c4e93e8e6e5c4eff"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Sun Oct 25 08:54:56 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 08:54:56 2026 +0000"
      },
      "message": "perf(arrow-array): skip `DataType` drop glue in generic temporal converters (#11896)\n\n# Which issue does this PR close?\n\n- Closes #11895.\n\n# Rationale for this change\n\nThe issue describes the problem.\n\n# What changes are included in this PR?\n\n`as_datetime`, `as_datetime_with_timezone`, `as_time` and `as_duration`\nwrap the `T::DATA_TYPE` temporary in `ManuallyDrop`, so no drop glue\nruns per value. `as_duration` wasn\u0027t in the issue, but it has the same\nper-value drop.\n\n# Are these changes tested?\n\nExisting tests cover the converters through\n`PrimitiveArray::value_as_datetime`, `value_as_time` and the\n`arrow-cast` timestamp casts. Behavior is unchanged.\n\nTimestamp casts with a time zone call `as_datetime_with_timezone::\u003cT\u003e`\nper value. In the bot\u0027s `cast_timestamp` runs, casts to `Date32` got\n1.04x to 1.26x faster on both machines. Casts to `Time32`/`Time64` got\nup to 1.10x faster on Neoverse-V2 and didn\u0027t change on Xeon.\n\n\u003cimg width\u003d\"1600\" height\u003d\"1508\" alt\u003d\"as-datetime-drop-bot\"\nsrc\u003d\"https://github.com/user-attachments/assets/2960905c-1920-4188-9dc7-55499b1ee461\"\n/\u003e\n\n\u003cdetails\u003e\u003csummary\u003eAll runs\u003c/summary\u003e\n\nThese are speedups over `main` for all 20 time zone cases and the 20\ncases without a time zone, which don\u0027t call the changed code. The\naligned runs add `-C llvm-args\u003d-align-all-functions\u003d6 -C\nllvm-args\u003d-align-all-nofallthru-blocks\u003d6`.\n\n| Machine | Run | To `Date32`, time zone | To `Time32`/`Time64`, time\nzone | No time zone |\n|---|---|---|---|---|\n| Neoverse-V2 |\n[default](https://github.com/apache/arrow-rs/pull/11896#issuecomment-6385769963)\n| 1.11x to 1.26x | 1.01x to 1.10x | 0.99x to 1.03x |\n| Neoverse-V2 |\n[aligned](https://github.com/apache/arrow-rs/pull/11896#issuecomment-6385770216)\n| 1.12x to 1.25x | 1.02x to 1.08x | 0.99x to 1.00x |\n| Xeon 8581C |\n[default](https://github.com/apache/arrow-rs/pull/11896#issuecomment-6385769196)\n| 1.04x to 1.22x | 0.95x to 1.02x | 0.98x to 1.02x |\n| Xeon 8581C |\n[aligned](https://github.com/apache/arrow-rs/pull/11896#issuecomment-6385768460)\n| 1.06x to 1.13x | 0.96x to 1.03x | 0.97x to 1.00x |\n\nOn Apple M5 Max with thin LTO, local runs gave 1.10x to 1.36x for\n`Date32` and 1.08x to 1.19x for `Time32`/`Time64`. `format_temporal`\ndidn\u0027t change (0.97x to 1.00x), because formatting costs far more per\nvalue than the call this removes. I haven\u0027t profiled why\n`Time32`/`Time64` doesn\u0027t gain on Xeon.\n\nIn the thin-LTO `cast_timestamp` binary on aarch64,\n`drop_glue::\u003cDataType\u003e` is no longer called from any `timestamp_to_time`\nor `adjust_timestamp_to_timezone` monomorphization. On x86_64, I checked\na `unary_opt` kernel over `as_datetime::\u003cTimestampNanosecondType\u003e`\nbefore linking. It now compiles to the same 1166 instructions as the\nsame kernel over `timestamp_ns_to_datetime`.\n\n\u003c/details\u003e\n\n# Are there any significant user-facing changes?\n\nNo.\n\n## AI Disclosure\n\nI wrote this PR with help from Claude but understand and support the\ncore approach, implementation, and test coverage."
    },
    {
      "commit": "09bb64ac5c5221a927601d43c4e93e8e6e5c4eff",
      "tree": "86eedde2ae67c84990b2ff238ad8a76d90d8cb76",
      "parents": [
        "e0908622a9e5a6247d16314f1cae2ffab84d315e"
      ],
      "author": {
        "name": "autoCAT",
        "email": "erindotsing@gmail.com",
        "time": "Sun Oct 25 08:52:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 08:52:46 2026 +0000"
      },
      "message": "feat(parquet): expose encryption key metadata by column name (#11733)\n\n# Which issue does this PR close?\n\nCloses #11753.\n\n# Rationale for this change\n\n`FileEncryptionProperties::column_keys()` returns names and keys for\nevery configured column, but its metadata vector contains only columns\nwith metadata. When some column keys have metadata and others do not,\ncallers cannot safely associate metadata with column names by vector\nposition. This matters when converting encryption properties to another\nconfiguration representation: a key identifier can become associated\nwith a different column.\n\n# What changes are included in this PR?\n\nAdd `column_key_metadata(\u0026str) -\u003e Option\u003c\u0026[u8]\u003e` to retrieve metadata by\ncolumn name without cloning it. The accessor distinguishes explicitly\nempty metadata from absent metadata, and does not substitute footer-key\nmetadata for an unconfigured column. The existing `column_keys()` API\nand behavior are unchanged.\n\n# Are these changes tested?\n\nUnit tests cover mixed metadata with both insertion orders, multiple\ndistinct column identifiers, unknown columns, absent versus explicitly\nempty metadata, and the boundary between column metadata and footer\nmetadata during uniform encryption.\n\n# Are there any significant user-facing changes?\n\nThis is an additive public API; existing signatures and encryption\nbehavior remain unchanged."
    },
    {
      "commit": "e0908622a9e5a6247d16314f1cae2ffab84d315e",
      "tree": "8ba9e5cecc13beb59333034fe0518dd6c49e5feb",
      "parents": [
        "6db3c54bec9cf0160a9c2bd7778e95be3eb4f75b"
      ],
      "author": {
        "name": "Kosta Tarasov",
        "email": "33369833+sdf-jkl@users.noreply.github.com",
        "time": "Sun Oct 25 08:34:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 08:34:48 2026 +0000"
      },
      "message": "[Variant] Add variant_to_json benchmarks (#11773)\n\n# Which issue does this PR close?\n\n- Part of #10906\n- Supports benchmarking #11402\n\n# Rationale for this change\n\n`variant_kernels.rs` benchmarks `json_to_variant` and `variant_get`, but\nhas no coverage for `variant_to_json`. Add benchmarks to track\nserialization performance and evaluate changes such as avoiding\ntemporary string allocations in #11402.\n\n# What changes are included in this PR?\n\nAdd seven `variant_to_json` benchmarks, each processing 8,192 rows:\n\n- Integer scalars and the same values in shredded form.\n- Small objects containing two strings and an integer.\n- The same small objects with dictionary and run-end-encoded metadata.\n- Wide objects using the existing seeded generator with 200 entries per\nobject and mixed scalar values.\n- Numeric lists with 0–100 elements.\n\nReuse existing fixture generators and the shared row-count constant.\nFixture construction and metadata encoding happen outside the timed\nloops.\n\n# Are these changes tested?\n\nAll seven cases passed a smoke run and completed a release-mode\nCriterion run with 100 samples each. Compilation, formatting, and\nspelling checks pass. Clippy with the installed stable toolchain\nencounters existing lint errors in `arrow-data`.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI assistance: OpenAI Codex helped implement and refine the benchmarks,\nrun local validation, and draft this description."
    },
    {
      "commit": "6db3c54bec9cf0160a9c2bd7778e95be3eb4f75b",
      "tree": "aa293063fba10c6b7906c00a0a50767863025b99",
      "parents": [
        "34bf27befe8ed252f5ac826799cda05c15c1dd6d"
      ],
      "author": {
        "name": "Jeffrey Vo",
        "email": "jeffrey.vo.australia@gmail.com",
        "time": "Sat Oct 24 23:36:42 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 23:36:42 2026 +0000"
      },
      "message": "chore: Update README release schedule (#11889)\n\ntime marches ever onward"
    },
    {
      "commit": "34bf27befe8ed252f5ac826799cda05c15c1dd6d",
      "tree": "fa7822ecf6d05afb625acfdf902438027181f0f4",
      "parents": [
        "9d7f294ca6bfa3591616059d11a3c15464a21f58"
      ],
      "author": {
        "name": "Kosta Tarasov",
        "email": "33369833+sdf-jkl@users.noreply.github.com",
        "time": "Sat Oct 24 14:21:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 14:21:11 2026 +0000"
      },
      "message": "ci: prevent skipped push checks from bypassing merge queue (#11894)\n\n## Summary\n\nFix premature merge-queue merges introduced by #11788.\n\nThe broadened `push` trigger also matches GitHub-managed\n`gh-readonly-queue/**` branches. A queue commit therefore triggers both\n`push` and `merge_group` runs of the `CI` workflow. The upstream\nqueue-branch `push` run skips `Required Checks`, potentially satisfying\nthe required status prematurely while the full `merge_group` run is\nstill pending.\n\nIt\u0027s actually in DataFusion too, but I missed it 🤦\n\n## Fix\n\n- Exclude `gh-readonly-queue/**` from push-triggered CI while keeping\nfork branch pushes enabled.\n- Update the CI configuration validation test to enforce this exclusion.\n- Keep `merge_group` CI unchanged.\n\n## Evidence\n\n- #11870 merged at 07:18:57 UTC on October 24, while its full\n[merge-group\nCI](https://github.com/apache/arrow-rs/actions/runs/40073610257)\nfinished at 07:35:36 UTC.\n- The corresponding [queue-branch push\nrun](https://github.com/apache/arrow-rs/actions/runs/40073610151) was\nskipped.\n- All 11 merges audited after #11788 merged before full merge-group CI\nfinished, and each had a skipped queue-branch push run.\n\n## Validation\n\nStatic workflow config/assertion updated. The behavior still needs\nvalidation with an actual merge-queue PR. Keep this as draft until\nverified."
    },
    {
      "commit": "9d7f294ca6bfa3591616059d11a3c15464a21f58",
      "tree": "8a2b8b9bf4837760c932cfcc5963b1ce4a3433b3",
      "parents": [
        "e53a811f41831bafea524f99457d044489790f2c"
      ],
      "author": {
        "name": "Morris",
        "email": "morristai01@gmail.com",
        "time": "Sat Oct 24 08:47:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 08:47:51 2026 +0000"
      },
      "message": "Re-export `GetTableTypesBuilder`, `GetSqlInfoBuilder` and `GetXdbcTypeInfoBuilder` from `arrow_flight::sql::metadata` (#11846)\n\n# Which issue does this PR close?\n\nNone.\n\n# Rationale for this change\n\nThese builders are returned by public `into_builder` methods on\n`CommandGetTableTypes`, `CommandGetSqlInfo` and\n`CommandGetXdbcTypeInfo`, but their modules are private. You can use the\nbuilder you get back, but you can\u0027t name its type in a struct field or a\nfunction signature, and it doesn\u0027t show up in the docs. The other\nmetadata builders are already re-exported.\n\n# What changes are included in this PR?\n\nThree `pub use` lines, plus `GetTableTypesBuilder` in the module doc\nlist and a few missing spaces there.\n\n# Are these changes tested?\n\nNo new tests, since this only makes existing types nameable. The\nexisting tests in `table_types.rs`, `sql_info.rs` and `xdbc_info.rs`\ncover the builders.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nDrafted with Claude. I reviewed it and checked that the three builders\nappear in the rendered docs.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e53a811f41831bafea524f99457d044489790f2c",
      "tree": "cf27d3c3e57e5276bf06e0c113077332ad7d9b96",
      "parents": [
        "cb1ed6ee3de3f1c2a0f1e892c6d74cd443104f4e"
      ],
      "author": {
        "name": "Aleksandar Zecevic",
        "email": "aleksandar.zecevic@databricks.com",
        "time": "Sat Oct 24 08:39:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 08:39:40 2026 +0000"
      },
      "message": "[Parquet] Create zstd contexts on first use (#11858)\n\n# Which issue does this PR close?\n\nN/A\n\n# Rationale for this change\n\n`ZSTDCodec::new` creates a zstd compression context and a decompression\ncontext, but a lot of users need only one of them: writers only\ncompress, and readers only decompress. This can be a significant\noverhead for wide tables.\n\n# What changes are included in this PR?\n\nBoth the compressor and the decompressor are created lazily on first\nuse. Arrow IPC already use this approach.\n\n# Are these changes tested?\n\nThis is not an observable change, so it\u0027s covered by existing tests.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "cb1ed6ee3de3f1c2a0f1e892c6d74cd443104f4e",
      "tree": "b7a1263c4927eb8cdcb7fc61efe17c06891aad37",
      "parents": [
        "dccb297554526a7fa2736450238067f2cef4dba7"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Sat Oct 24 08:37:09 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 08:37:09 2026 +0000"
      },
      "message": "feat(buffer): add `NullBufferBuilder::append_word` (#11867)\n\n# Which issue does this PR close?\n\nN/A. Follow-up to #11732.\n\n# Rationale for this change\n\nCallers with packed validity bits currently need to append them one bit\nat a time or first build a `NullBuffer`.\n\n# What changes are included in this PR?\n\nThis adds `NullBufferBuilder::append_word`, matching\n`BooleanBufferBuilder::append_word` while preserving lazy allocation for\nall-valid words. It also adds focused unit tests and benchmarks for\ndifferent validity patterns.\n\n# Are these changes tested?\n\nThe tests cover full and partial all-valid words without\nmaterialization, plus a mixed partial word at an unaligned offset and an\nall-valid append after materialization. The benchmark covers all-valid,\nvery sparse, sparse, densely packed, and alternating validity words.\n\n# Are there any significant user-facing changes?\n\nAdds `NullBufferBuilder::append_word`."
    },
    {
      "commit": "dccb297554526a7fa2736450238067f2cef4dba7",
      "tree": "47cf702f27e9eb20f9820ef0345f16205a88a917",
      "parents": [
        "621c22a04fd5a80db2f6f47248d81453050611d7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Oct 24 07:42:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:42:27 2026 +0000"
      },
      "message": "chore(deps): bump taiki-e/install-action from 2.87.23 to 2.87.30 (#11746)\n\nBumps\n[taiki-e/install-action](https://github.com/taiki-e/install-action) from\n2.87.23 to 2.87.30.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/releases\"\u003etaiki-e/install-action\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.87.30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ezizmor@latest\u003c/code\u003e to 1.31.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 50.0.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.33.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etrunk@latest\u003c/code\u003e to 0.22.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.8.9.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003esyft@latest\u003c/code\u003e to 1.55.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.3.173.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprek@latest\u003c/code\u003e to 0.5.6.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.10.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eknope@latest\u003c/code\u003e to 0.23.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ekingfisher@latest\u003c/code\u003e to 2.14.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ekache@latest\u003c/code\u003e to 1.2.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003edprint@latest\u003c/code\u003e to 0.64.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecosign@latest\u003c/code\u003e to 3.1.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-crap@latest\u003c/code\u003e to 0.9.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-binstall@latest\u003c/code\u003e to 1.26.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.87.29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ezizmor@latest\u003c/code\u003e to 1.31.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 49.0.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasm-tools@latest\u003c/code\u003e to 1.262.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etrivy@latest\u003c/code\u003e to 0.76.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.8.4.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.3.172.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md\"\u003etaiki-e/install-action\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this\nfile.\u003c/p\u003e\n\u003cp\u003eThis project adheres to \u003ca href\u003d\"https://semver.org\"\u003eSemantic\nVersioning\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\u003e\n\u003ch2\u003e[2.87.31] - 2026-10-23\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDowngrade \u003ccode\u003ecargo-sort@latest\u003c/code\u003e to 2.1.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.35.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003exh@latest\u003c/code\u003e to 0.26.3.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.5.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eubi@latest\u003c/code\u003e to 0.13.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etrivy@latest\u003c/code\u003e to 0.76.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003etombi@latest\u003c/code\u003e to 1.9.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003erelease-plz@latest\u003c/code\u003e to 0.3.174.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eprek@latest\u003c/code\u003e to 0.5.7.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003emise@latest\u003c/code\u003e to 2026.10.17.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ejaq@latest\u003c/code\u003e to 3.1.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eespup@latest\u003c/code\u003e to 0.17.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-zigbuild@latest\u003c/code\u003e to 0.24.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ecargo-nextest@latest\u003c/code\u003e to 0.9.149.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ebiome@latest\u003c/code\u003e to 2.6.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.87.30] - 2026-10-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ezizmor@latest\u003c/code\u003e to 1.31.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 50.0.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/a4d3f3f761dcd95cce1b72cb61cb6d1963438177\"\u003e\u003ccode\u003ea4d3f3f\u003c/code\u003e\u003c/a\u003e\nRelease 2.87.30\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/5aaaac21ebbaecf5c52742915269972b07a52d9e\"\u003e\u003ccode\u003e5aaaac2\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003edprint@latest\u003c/code\u003e to 0.64.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/b95191edaa5c9e3d0d3453611e4a85e076b224c5\"\u003e\u003ccode\u003eb95191e\u003c/code\u003e\u003c/a\u003e\nci: Skip xbuild on ubuntu:rolling\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/8e7750eeba6fb7bd66fa0673b05f9bd43b6a69da\"\u003e\u003ccode\u003e8e7750e\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ezizmor@latest\u003c/code\u003e to 1.31.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/603609a2e75ebf6c10b1270b28e4e64c5e224b51\"\u003e\u003ccode\u003e603609a\u003c/code\u003e\u003c/a\u003e\nUpdate xh manifest\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/aa84e6ad973183ab0dc4d24497f1999229a93560\"\u003e\u003ccode\u003eaa84e6a\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003ewasmtime@latest\u003c/code\u003e to 50.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/897035e2efcca1032baff48a0a2269762e4525c1\"\u003e\u003ccode\u003e897035e\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003evacuum@latest\u003c/code\u003e to 0.33.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/59f22e24156e994fa8489b389a1e8457933deea8\"\u003e\u003ccode\u003e59f22e2\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003euv@latest\u003c/code\u003e to 0.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/259418188752a895a8937127eebabefb6f1dd606\"\u003e\u003ccode\u003e2594181\u003c/code\u003e\u003c/a\u003e\nUpdate \u003ccode\u003etrunk@latest\u003c/code\u003e to 0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/commit/fc0df34ce83a12882e08254d5b009d2b8e8ec12d\"\u003e\u003ccode\u003efc0df34\u003c/code\u003e\u003c/a\u003e\nUpdate trivy manifest\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/taiki-e/install-action/compare/v2.87.23...a4d3f3f761dcd95cce1b72cb61cb6d1963438177\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "621c22a04fd5a80db2f6f47248d81453050611d7",
      "tree": "5c988496e4fb1a701759127a6719f7e83c2784d7",
      "parents": [
        "b9176b5011db8086c02c862ec3edf42de24a6a1c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Oct 24 07:30:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:30:06 2026 +0000"
      },
      "message": "chore(deps): bump the codeql-actions group across 1 directory with 2 updates (#11745)\n\nBumps the codeql-actions group with 2 updates in the / directory:\n[github/codeql-action/init](https://github.com/github/codeql-action) and\n[github/codeql-action/analyze](https://github.com/github/codeql-action).\n\nUpdates `github/codeql-action/init` from 4.38.3 to 4.39.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action/init\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.39.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.3\"\u003e2.27.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4256\"\u003e#4256\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.39.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.20.7. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4205\"\u003e#4205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/analyze\u003c/code\u003e step now validates that a\ncorrect argument for the \u003ccode\u003echeckout_path\u003c/code\u003e input has been\nprovided. The \u003ccode\u003echeckout_path\u003c/code\u003e input must be set to the path\nwhere the repository that is being analyzed is checked out at on the\nrunner, if that path is something other than the workspace root. If the\npath does not point to a repository checkout or is different from the\npath that was used by \u003ccode\u003ecodeql-action/init\u003c/code\u003e, then the CodeQL\nAction now produces a warning. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4148\"\u003e#4148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolved an issue with third-party caching implementations that\nprevented caches from being restored correctly. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4206\"\u003e#4206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step that is used in Code\nScanning Default Setup now finds CodeQL releases using the same logic as\n\u003ccode\u003ecodeql-action/init\u003c/code\u003e. This primarily benefits customers who\nare using GitHub instances other than \u003ccode\u003egithub.com\u003c/code\u003e where the\n\u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step may previously have been\nunable to locate recent releases and ended up using outdated versions of\nthe private registry authentication proxy as a result. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4198\"\u003e#4198\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action/init\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.39.1 - 21 Oct 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.3\"\u003e2.27.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4256\"\u003e#4256\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.39.0 - 15 Oct 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.20.7. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4205\"\u003e#4205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/analyze\u003c/code\u003e step now validates that a\ncorrect argument for the \u003ccode\u003echeckout_path\u003c/code\u003e input has been\nprovided. The \u003ccode\u003echeckout_path\u003c/code\u003e input must be set to the path\nwhere the repository that is being analyzed is checked out at on the\nrunner, if that path is something other than the workspace root. If the\npath does not point to a repository checkout or is different from the\npath that was used by \u003ccode\u003ecodeql-action/init\u003c/code\u003e, then the CodeQL\nAction now produces a warning. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4148\"\u003e#4148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolved an issue with third-party caching implementations that\nprevented caches from being restored correctly. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4206\"\u003e#4206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step that is used in Code\nScanning Default Setup now finds CodeQL releases using the same logic as\n\u003ccode\u003ecodeql-action/init\u003c/code\u003e. This primarily benefits customers who\nare using GitHub instances other than \u003ccode\u003egithub.com\u003c/code\u003e where the\n\u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step may previously have been\nunable to locate recent releases and ended up using outdated versions of\nthe private registry authentication proxy as a result. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4198\"\u003e#4198\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.3 - 08 Oct 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: CodeQL version 2.21.2 and earlier\nwere discontinued on 24 September 2026 alongside GitHub Enterprise\nServer 3.17, and will be unsupported by the next minor release of the\nCodeQL Action. Added a deprecation warning for customers using these\nversions of CodeQL. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4188\"\u003e#4188\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.2\"\u003e2.27.2\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4203\"\u003e#4203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed a bug where the decision of whether to use a per-language\nbundle did not account for custom configurations that reference queries\noutside of compiled CodeQL packs. This issue was caught during internal\ntesting and did not affect any customer repositories. We will resume the\nroll out of per-language bundles in the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4184\"\u003e#4184\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.2 - 24 Sept 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.1\"\u003e2.27.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4160\"\u003e#4160\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.1 - 18 Sept 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe CodeQL Action now has experimental support for CodeQL releases\nfor which per-language bundles are available. Per-language bundles\nsupport analysis for a single language and are therefore smaller than\nthe combined bundles that allow analysis for all supported languages. As\na result, per-language bundles take up less space on disk and are faster\nto download. We expect to roll this change out to everyone in the coming\nweeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4146\"\u003e#4146\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.0 - 09 Sept 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOn GitHub-hosted runners, the CodeQL Action now deletes unused\nCodeQL bundles from the toolcache before downloading a different bundle,\nwhich frees up disk space for the analysis. We expect to roll this\nchange out to everyone in September. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4124\"\u003e#4124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe CodeQL Action now supports CodeQL releases that are compatible\nwith Linux Arm64 and downloads the native \u003ccode\u003elinux-arm64\u003c/code\u003e\nCodeQL bundle when available. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4072\"\u003e#4072\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.0\"\u003e2.27.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4129\"\u003e#4129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.9 - 26 Aug 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4\"\u003e2.26.4\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4106\"\u003e#4106\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.8 - 21 Aug 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.37.7 - 13 Aug 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3\"\u003e2.26.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4085\"\u003e#4085\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/9b3254085494b55a0f7c4c2b3d2d52cc712ce370\"\u003e\u003ccode\u003e9b32540\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4257\"\u003e#4257\u003c/a\u003e\nfrom github/update-v4.39.1-c5a2f4b0f\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/b5e1ed9574dcfa81c88c318140f3b3e5c199bfb3\"\u003e\u003ccode\u003eb5e1ed9\u003c/code\u003e\u003c/a\u003e\nTrigger workflows\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/20f5ec39109073afe1789b098456b2be0164f4ee\"\u003e\u003ccode\u003e20f5ec3\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c5a2f4b0fe28ca06eaaeb86fb05a5f612ae293f9\"\u003e\u003ccode\u003ec5a2f4b\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4245\"\u003e#4245\u003c/a\u003e\nfrom github/henrymercer/graduate-overlay-trap-caching\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/61a5a80dd98ad1b9679010141a46cace51065761\"\u003e\u003ccode\u003e61a5a80\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4256\"\u003e#4256\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.27.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3dd33f8b69588bd9591684b2dca169eb612f5ed5\"\u003e\u003ccode\u003e3dd33f8\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4249\"\u003e#4249\u003c/a\u003e\nfrom github/mbg/upload-improvements-for-4223\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/b96e3390db93dc46c2c3753a94b87c0d734b0b61\"\u003e\u003ccode\u003eb96e339\u003c/code\u003e\u003c/a\u003e\nChange comment for \u003ccode\u003egetConfig\u003c/code\u003e call in\n\u003ccode\u003eupload-sarif\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/7fa45180db8d657b23ded3636b5d8583aec6ddfe\"\u003e\u003ccode\u003e7fa4518\u003c/code\u003e\u003c/a\u003e\nUse \u003ccode\u003eshouldSkipSarifUpload\u003c/code\u003e in\n\u003ccode\u003eanalyze-action.ts\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/a69c7cb332d56f616fcadef002884523c71e8d1c\"\u003e\u003ccode\u003ea69c7cb\u003c/code\u003e\u003c/a\u003e\nDocument that setting the env vars to \u003ccode\u003efalse\u003c/code\u003e takes\nprecedence\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/74ddcd9f65683791ab07eccd074b4ba145d89ea6\"\u003e\u003ccode\u003e74ddcd9\u003c/code\u003e\u003c/a\u003e\nFix typo in comment\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...9b3254085494b55a0f7c4c2b3d2d52cc712ce370\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `github/codeql-action/analyze` from 4.38.3 to 4.39.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003egithub/codeql-action/analyze\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.39.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.3\"\u003e2.27.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4256\"\u003e#4256\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.39.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.20.7. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4205\"\u003e#4205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/analyze\u003c/code\u003e step now validates that a\ncorrect argument for the \u003ccode\u003echeckout_path\u003c/code\u003e input has been\nprovided. The \u003ccode\u003echeckout_path\u003c/code\u003e input must be set to the path\nwhere the repository that is being analyzed is checked out at on the\nrunner, if that path is something other than the workspace root. If the\npath does not point to a repository checkout or is different from the\npath that was used by \u003ccode\u003ecodeql-action/init\u003c/code\u003e, then the CodeQL\nAction now produces a warning. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4148\"\u003e#4148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolved an issue with third-party caching implementations that\nprevented caches from being restored correctly. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4206\"\u003e#4206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step that is used in Code\nScanning Default Setup now finds CodeQL releases using the same logic as\n\u003ccode\u003ecodeql-action/init\u003c/code\u003e. This primarily benefits customers who\nare using GitHub instances other than \u003ccode\u003egithub.com\u003c/code\u003e where the\n\u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step may previously have been\nunable to locate recent releases and ended up using outdated versions of\nthe private registry authentication proxy as a result. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4198\"\u003e#4198\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/github/codeql-action/blob/main/CHANGELOG.md\"\u003egithub/codeql-action/analyze\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCodeQL Action Changelog\u003c/h1\u003e\n\u003cp\u003eSee the \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases\"\u003ereleases\npage\u003c/a\u003e for the relevant changes to the CodeQL CLI and language\npacks.\u003c/p\u003e\n\u003ch2\u003e[UNRELEASED]\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.39.1 - 21 Oct 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.3\"\u003e2.27.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4256\"\u003e#4256\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.39.0 - 15 Oct 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eBreaking change\u003c/em\u003e: Bump the minimum required CodeQL bundle\nversion to 2.20.7. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4205\"\u003e#4205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/analyze\u003c/code\u003e step now validates that a\ncorrect argument for the \u003ccode\u003echeckout_path\u003c/code\u003e input has been\nprovided. The \u003ccode\u003echeckout_path\u003c/code\u003e input must be set to the path\nwhere the repository that is being analyzed is checked out at on the\nrunner, if that path is something other than the workspace root. If the\npath does not point to a repository checkout or is different from the\npath that was used by \u003ccode\u003ecodeql-action/init\u003c/code\u003e, then the CodeQL\nAction now produces a warning. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4148\"\u003e#4148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolved an issue with third-party caching implementations that\nprevented caches from being restored correctly. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4206\"\u003e#4206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step that is used in Code\nScanning Default Setup now finds CodeQL releases using the same logic as\n\u003ccode\u003ecodeql-action/init\u003c/code\u003e. This primarily benefits customers who\nare using GitHub instances other than \u003ccode\u003egithub.com\u003c/code\u003e where the\n\u003ccode\u003ecodeql-action/start-proxy\u003c/code\u003e step may previously have been\nunable to locate recent releases and ended up using outdated versions of\nthe private registry authentication proxy as a result. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4198\"\u003e#4198\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.3 - 08 Oct 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003eUpcoming breaking change\u003c/em\u003e: CodeQL version 2.21.2 and earlier\nwere discontinued on 24 September 2026 alongside GitHub Enterprise\nServer 3.17, and will be unsupported by the next minor release of the\nCodeQL Action. Added a deprecation warning for customers using these\nversions of CodeQL. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4188\"\u003e#4188\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.2\"\u003e2.27.2\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4203\"\u003e#4203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed a bug where the decision of whether to use a per-language\nbundle did not account for custom configurations that reference queries\noutside of compiled CodeQL packs. This issue was caught during internal\ntesting and did not affect any customer repositories. We will resume the\nroll out of per-language bundles in the coming weeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4184\"\u003e#4184\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.2 - 24 Sept 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.1\"\u003e2.27.1\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4160\"\u003e#4160\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.1 - 18 Sept 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe CodeQL Action now has experimental support for CodeQL releases\nfor which per-language bundles are available. Per-language bundles\nsupport analysis for a single language and are therefore smaller than\nthe combined bundles that allow analysis for all supported languages. As\na result, per-language bundles take up less space on disk and are faster\nto download. We expect to roll this change out to everyone in the coming\nweeks. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4146\"\u003e#4146\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.38.0 - 09 Sept 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOn GitHub-hosted runners, the CodeQL Action now deletes unused\nCodeQL bundles from the toolcache before downloading a different bundle,\nwhich frees up disk space for the analysis. We expect to roll this\nchange out to everyone in September. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4124\"\u003e#4124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe CodeQL Action now supports CodeQL releases that are compatible\nwith Linux Arm64 and downloads the native \u003ccode\u003elinux-arm64\u003c/code\u003e\nCodeQL bundle when available. \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4072\"\u003e#4072\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.0\"\u003e2.27.0\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4129\"\u003e#4129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.9 - 26 Aug 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4\"\u003e2.26.4\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4106\"\u003e#4106\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.37.8 - 21 Aug 2026\u003c/h2\u003e\n\u003cp\u003eNo user facing changes.\u003c/p\u003e\n\u003ch2\u003e4.37.7 - 13 Aug 2026\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate default CodeQL bundle version to \u003ca\nhref\u003d\"https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3\"\u003e2.26.3\u003c/a\u003e.\n\u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/pull/4085\"\u003e#4085\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/9b3254085494b55a0f7c4c2b3d2d52cc712ce370\"\u003e\u003ccode\u003e9b32540\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4257\"\u003e#4257\u003c/a\u003e\nfrom github/update-v4.39.1-c5a2f4b0f\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/b5e1ed9574dcfa81c88c318140f3b3e5c199bfb3\"\u003e\u003ccode\u003eb5e1ed9\u003c/code\u003e\u003c/a\u003e\nTrigger workflows\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/20f5ec39109073afe1789b098456b2be0164f4ee\"\u003e\u003ccode\u003e20f5ec3\u003c/code\u003e\u003c/a\u003e\nUpdate changelog for v4.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/c5a2f4b0fe28ca06eaaeb86fb05a5f612ae293f9\"\u003e\u003ccode\u003ec5a2f4b\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4245\"\u003e#4245\u003c/a\u003e\nfrom github/henrymercer/graduate-overlay-trap-caching\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/61a5a80dd98ad1b9679010141a46cace51065761\"\u003e\u003ccode\u003e61a5a80\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4256\"\u003e#4256\u003c/a\u003e\nfrom github/update-bundle/codeql-bundle-v2.27.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/3dd33f8b69588bd9591684b2dca169eb612f5ed5\"\u003e\u003ccode\u003e3dd33f8\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/github/codeql-action/issues/4249\"\u003e#4249\u003c/a\u003e\nfrom github/mbg/upload-improvements-for-4223\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/b96e3390db93dc46c2c3753a94b87c0d734b0b61\"\u003e\u003ccode\u003eb96e339\u003c/code\u003e\u003c/a\u003e\nChange comment for \u003ccode\u003egetConfig\u003c/code\u003e call in\n\u003ccode\u003eupload-sarif\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/7fa45180db8d657b23ded3636b5d8583aec6ddfe\"\u003e\u003ccode\u003e7fa4518\u003c/code\u003e\u003c/a\u003e\nUse \u003ccode\u003eshouldSkipSarifUpload\u003c/code\u003e in\n\u003ccode\u003eanalyze-action.ts\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/a69c7cb332d56f616fcadef002884523c71e8d1c\"\u003e\u003ccode\u003ea69c7cb\u003c/code\u003e\u003c/a\u003e\nDocument that setting the env vars to \u003ccode\u003efalse\u003c/code\u003e takes\nprecedence\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/github/codeql-action/commit/74ddcd9f65683791ab07eccd074b4ba145d89ea6\"\u003e\u003ccode\u003e74ddcd9\u003c/code\u003e\u003c/a\u003e\nFix typo in comment\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...9b3254085494b55a0f7c4c2b3d2d52cc712ce370\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b9176b5011db8086c02c862ec3edf42de24a6a1c",
      "tree": "98008d1d2321e7635e479d23d70feb2b84590749",
      "parents": [
        "31ee5e0222e5d1e6c92ce5295ec3d50d8fdcbc0f"
      ],
      "author": {
        "name": "Nuno Faria",
        "email": "nunofpfaria@gmail.com",
        "time": "Sat Oct 24 07:28:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:28:06 2026 +0000"
      },
      "message": "perf: Do not compute the entire byte view buffer size in `set_source` (#11830)\n\n# Which issue does this PR close?\n\n- Related to https://github.com/apache/datafusion/issues/26606\n\n# Rationale for this change\n\nThe `set_source` method in `InProgressByteViewArray` computes the entire\nsize, which is not needed since we only need to ensure that it is `\u003e\nideal_buffer_size * 2`. This can cause large slowdowns with string view\ncolumns in DataFusion:\n\u003cimg width\u003d\"1393\" height\u003d\"396\" alt\u003d\"imagem\"\nsrc\u003d\"https://github.com/user-attachments/assets/c38360c2-fab5-4f98-a366-61a3e860dd3a\"\n/\u003e\n\n\n# What changes are included in this PR?\n\n- Optimized `set_source` with an early exit.\n\n# Are these changes tested?\n\nExisting tests.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nCo-authored-by: RIchard Baah \u003c137434454+Rich-T-kid@users.noreply.github.com\u003e"
    },
    {
      "commit": "31ee5e0222e5d1e6c92ce5295ec3d50d8fdcbc0f",
      "tree": "6bb14b80ce94444c12cc0df60e712e80f9c2dab9",
      "parents": [
        "995a5343fe05e2e8952fa5d4160e5840285cce53"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Sat Oct 24 07:25:35 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:25:35 2026 +0000"
      },
      "message": "ci: serialize docs deploys to asf-site to avoid push races (#11795)\n\n# Which issue does this PR close?\n\nN/A\n\n# Rationale for this change\n\nCI on `main` sometimes fails even though nothing is wrong with the code.\nFor example, in\nhttps://github.com/apache/arrow-rs/actions/runs/39576843746:\n\n- [docs /\ndeploy](https://github.com/apache/arrow-rs/actions/runs/39576843746/job/119336871264)\nfailed\n- which made [Required\nChecks](https://github.com/apache/arrow-rs/actions/runs/39576843746/job/119462180830)\nfail\n\nThe deploy job fails with\n\n```\n! [remote rejected] asf-site -\u003e asf-site (cannot lock ref \u0027refs/heads/asf-site\u0027: is at 8a6c3e45... but expected 4b2fb0d7...)\n```\n\nThis happens when two commits are pushed to `main` close together and\nboth `deploy` jobs force push the `asf-site` branch at the same time and\none fails.\n\nIn the example above, the sibling run for the previous commit\n(https://github.com/apache/arrow-rs/actions/runs/39576767981) started\nits deploy in the same second and succeeded.\n\n# What changes are included in this PR?\n\n# Are there any user-facing changes?\n\nNo.\n\n---------\n\nCo-authored-by: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Kosta Tarasov \u003c33369833+sdf-jkl@users.noreply.github.com\u003e"
    },
    {
      "commit": "995a5343fe05e2e8952fa5d4160e5840285cce53",
      "tree": "feaea8a0877f811120de95237906800babc9253a",
      "parents": [
        "1731c4ca9b72341c7532c859125fbf5cac621763"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Sat Oct 24 07:18:05 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:18:05 2026 +0000"
      },
      "message": "fix(arrow-select): include column name in BatchCoalescer errors (#11870)\n\nCloses #8339.\n\nIncludes the column name in errors from\n`BatchCoalescer::finish_buffered_batch`.\n\nThe test overflows a dictionary in the second column and checks that the\nerror reports that column."
    },
    {
      "commit": "1731c4ca9b72341c7532c859125fbf5cac621763",
      "tree": "69790a6fb57fbdeaa2c6cd713b3a47d68fd676a0",
      "parents": [
        "e1bcd0942b87673b9b938dad22bf633d9c81262d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Oct 24 07:16:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:16:40 2026 +0000"
      },
      "message": "chore(deps): bump the all-other-cargo-deps group across 1 directory with 4 updates (#11863)\n\nBumps the all-other-cargo-deps group with 4 updates in the / directory:\n[libc](https://github.com/rust-lang/libc),\n[zstd](https://github.com/gyscos/zstd-rs),\n[opendal](https://github.com/apache/opendal) and\n[crc32fast](https://github.com/srijs/rust-crc32fast).\n\nUpdates `libc` from 0.2.190 to 0.2.191\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/libc/releases\"\u003elibc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.2.191\u003c/h2\u003e\n\u003ch3\u003eSupport\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmscripten: Support v4.0.12 to v6.0.11 (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5610\"\u003e#5610\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApple: Add \u003ccode\u003eF_SETNOSIGPIPE\u003c/code\u003e and\n\u003ccode\u003eF_GETNOSIGPIPE\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5609\"\u003e#5609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApple: add \u003ccode\u003eifaliasreq\u003c/code\u003e and \u003ccode\u003ein6_aliasreq\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5557\"\u003e#5557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFreeBSD: Add \u003ccode\u003ePT_*\u003c/code\u003e constants (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5625\"\u003e#5625\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaiku: Add \u003ccode\u003eAI_*\u003c/code\u003e and \u003ccode\u003eNI_*\u003c/code\u003e constants from\nnetdb.h (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5585\"\u003e#5585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHurd: Add \u003ccode\u003ePOSIX_SPAWN_*\u003c/code\u003e flags (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5578\"\u003e#5578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNuttX: Add \u003ccode\u003eAT_SYMLINK_NOFOLLOW\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5614\"\u003e#5614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOpenBSD: Add \u003ccode\u003esensordev\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5534\"\u003e#5534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eQuRT: Add \u003ccode\u003eisatty\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5618\"\u003e#5618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWASI: Add \u003ccode\u003epthread_condattr_{get,set}clock\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5626\"\u003e#5626\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreeBSD-aarch64: Fix \u003ccode\u003egpregs\u003c/code\u003e and \u003ccode\u003efpregs\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5603\"\u003e#5603\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAIX: Restore \u0027c_ulong\u0027 as the type of \u0027statvfs.f_fsid\u0027. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAndroid: Make \u003ccode\u003eprop_info\u003c/code\u003e an extern type (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5561\"\u003e#5561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApple: Mach API is now available on non-MacOS targets again. This\nshould resolve some issues building ecosystem crates. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pulls/5612\"\u003e#5612\u003c/a\u003e),\n(\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5636\"\u003e#5636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFreeBSD: Add back \u003ccode\u003eNOTE_PCTRLMASK\u003c/code\u003e with a deprecation\nwarning (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5600\"\u003e#5600\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/rust-lang/libc/blob/0.2.191/CHANGELOG.md\"\u003elibc\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/compare/0.2.190...0.2.191\"\u003e0.2.191\u003c/a\u003e\n- 2026-10-16\u003c/h2\u003e\n\u003ch3\u003eSupport\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmscripten: Support v4.0.12 to v6.0.11 (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5610\"\u003e#5610\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApple: Add \u003ccode\u003eF_SETNOSIGPIPE\u003c/code\u003e and\n\u003ccode\u003eF_GETNOSIGPIPE\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5609\"\u003e#5609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApple: add \u003ccode\u003eifaliasreq\u003c/code\u003e and \u003ccode\u003ein6_aliasreq\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5557\"\u003e#5557\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFreeBSD: Add \u003ccode\u003ePT_*\u003c/code\u003e constants (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5625\"\u003e#5625\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaiku: Add \u003ccode\u003eAI_*\u003c/code\u003e and \u003ccode\u003eNI_*\u003c/code\u003e constants from\nnetdb.h (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5585\"\u003e#5585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHurd: Add \u003ccode\u003ePOSIX_SPAWN_*\u003c/code\u003e flags (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5578\"\u003e#5578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNuttX: Add \u003ccode\u003eAT_SYMLINK_NOFOLLOW\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5614\"\u003e#5614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOpenBSD: Add \u003ccode\u003esensordev\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5534\"\u003e#5534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eQuRT: Add \u003ccode\u003eisatty\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5618\"\u003e#5618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWASI: Add \u003ccode\u003epthread_condattr_{get,set}clock\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5626\"\u003e#5626\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreeBSD-aarch64: Fix \u003ccode\u003egpregs\u003c/code\u003e and \u003ccode\u003efpregs\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5603\"\u003e#5603\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAIX: Restore \u0027c_ulong\u0027 as the type of \u0027statvfs.f_fsid\u0027. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAndroid: Make \u003ccode\u003eprop_info\u003c/code\u003e an extern type (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5561\"\u003e#5561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApple: Mach API is now available on non-MacOS targets again. This\nshould resolve some issues building ecosystem crates. (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pulls/5612\"\u003e#5612\u003c/a\u003e),\n(\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5636\"\u003e#5636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFreeBSD: Add back \u003ccode\u003eNOTE_PCTRLMASK\u003c/code\u003e with a deprecation\nwarning (\u003ca\nhref\u003d\"https://redirect.github.com/rust-lang/libc/pull/5600\"\u003e#5600\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/ccc2ff4aaab962f7fde7b8edda7379c045b1ca12\"\u003e\u003ccode\u003eccc2ff4\u003c/code\u003e\u003c/a\u003e\nlibc: Release 0.2.191\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/bce6efbe0a9d77770b579b933af5cbbe0b5a916d\"\u003e\u003ccode\u003ebce6efb\u003c/code\u003e\u003c/a\u003e\napple: Add \u003ccode\u003emach_task_self\u003c/code\u003e and \u003ccode\u003emach_task_self_\u003c/code\u003e\nto semver checks\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/ecf4fd4d0febb45e5199d8f82b956ab45817423f\"\u003e\u003ccode\u003eecf4fd4\u003c/code\u003e\u003c/a\u003e\napple: Re-restrict \u003ccode\u003emach_vm_map\u003c/code\u003e to MacOS-only\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/b0e042335159940bff94be6693107f76d43dc4ea\"\u003e\u003ccode\u003eb0e0423\u003c/code\u003e\u003c/a\u003e\nRevert \u0026quot;apple: Disable \u003ccode\u003emach.h\u003c/code\u003e API on Apple mobile\nOSs\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/9c7f568d7a00751d7d32cb0014f4edbff68bff0b\"\u003e\u003ccode\u003e9c7f568\u003c/code\u003e\u003c/a\u003e\napple: add \u003ccode\u003eifaliasreq\u003c/code\u003e and \u003ccode\u003ein6_aliasreq\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/018c7e9d0d1f84601180ea83d9240c5812909570\"\u003e\u003ccode\u003e018c7e9\u003c/code\u003e\u003c/a\u003e\nwasi: Add pthread_condattr_{get,set}clock\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/2c7718527e806c3b40dff13268f8119276100672\"\u003e\u003ccode\u003e2c77185\u003c/code\u003e\u003c/a\u003e\nopenbsd: add sensordev structure\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/e10813cff2a5cfb6ea654f9ead821572de2f278f\"\u003e\u003ccode\u003ee10813c\u003c/code\u003e\u003c/a\u003e\nhurd: Add missing \u003ccode\u003ePOSIX_SPAWN_*\u003c/code\u003e flags\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/2ea4bc1d8d8ee12b8b12237ee9fdc64bcdb4acac\"\u003e\u003ccode\u003e2ea4bc1\u003c/code\u003e\u003c/a\u003e\nFix FreeBSD/aarch64\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/rust-lang/libc/commit/6d666fdfdee785cec793de163fdcbd0ad83f5567\"\u003e\u003ccode\u003e6d666fd\u003c/code\u003e\u003c/a\u003e\ndragonfly: Parse version from headers rather than CLI\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/rust-lang/libc/compare/0.2.190...0.2.191\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zstd` from 0.14.2 to 0.14.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/75bc74045a2f6ea0439aeed7e159a266da20aac0\"\u003e\u003ccode\u003e75bc740\u003c/code\u003e\u003c/a\u003e\nRelease zstd 0.14.3, zstd-safe 8.2.0, and zstd-sys 2.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/1c580b6719acd5374fdb41f716a182006846ff33\"\u003e\u003ccode\u003e1c580b6\u003c/code\u003e\u003c/a\u003e\nzstd-safe: keep the one-shot reset check inline\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/502ee2fdf5baa654b92e7b50e573daeeb82cd6fb\"\u003e\u003ccode\u003e502ee2f\u003c/code\u003e\u003c/a\u003e\nzstd-safe: only reset after one-shot decompression if a stream may be\nopen\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/5ded6e0c21a055f8e97aba7d58bc459749132024\"\u003e\u003ccode\u003e5ded6e0\u003c/code\u003e\u003c/a\u003e\nzstd-safe: apply rustfmt\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/e224018a2389915d68ed17f30109bebad36e9734\"\u003e\u003ccode\u003ee224018\u003c/code\u003e\u003c/a\u003e\nzstd-safe: refuse to unload a dictionary under unfinished zstdmt\njobs\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/6a1065b9ae9920e5d4fbf42f7815ba9c87f43565\"\u003e\u003ccode\u003e6a1065b\u003c/code\u003e\u003c/a\u003e\nStop a single_frame() decoder when finish_frame() ends the frame\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/c7156df2ec854921350c67bd7d73c34d9df2dabe\"\u003e\u003ccode\u003ec7156df\u003c/code\u003e\u003c/a\u003e\nDon\u0027t let finish_frame() start a frame nothing was read from\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/b0fb8a747add66f67855790d71a0c253fbec30ec\"\u003e\u003ccode\u003eb0fb8a7\u003c/code\u003e\u003c/a\u003e\nAdd write::Decoder::finish() to report incomplete frames\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/ab34d019b058c94806c64b8638d1fe62550ca9cc\"\u003e\u003ccode\u003eab34d01\u003c/code\u003e\u003c/a\u003e\nDon\u0027t retry a panicked writer when dropping\nAutoFlushDecoder/AutoFinishEncoder\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/commit/74ace2dcdca62a2ce0f034895d6079458311e003\"\u003e\u003ccode\u003e74ace2d\u003c/code\u003e\u003c/a\u003e\nReset the borrowed context\u0027s session in\nraw::{Encoder,Decoder}::with_context\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/gyscos/zstd-rs/compare/v0.14.2...v0.14.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opendal` from 0.59.4 to 0.59.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/apache/opendal/releases\"\u003eopendal\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.59.5\u003c/h2\u003e\n\u003cp\u003eHi everyone,\u003c/p\u003e\n\u003cp\u003eApache OpenDAL 0.59.5 is now available.\u003c/p\u003e\n\u003cp\u003eOpenDAL is an Open Data Access Layer that provides unified access to\nstorage services.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://opendal.apache.org/download\"\u003eDownloads\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/releases/tag/v0.59.5\"\u003eRelease\nnotes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://releases.apache.org/vote/opendal/0.59.5-rc.2\"\u003eApproved\ncandidate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://opendal.apache.org/\"\u003eWebsite\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to everyone who contributed and verified this release.\u003c/p\u003e\n\u003cp\u003eThe Apache OpenDAL community\u003c/p\u003e\n\u003ch3\u003ePackage versions\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ePackage\u003c/th\u003e\n\u003cth\u003ePrevious\u003c/th\u003e\n\u003cth\u003eTarget\u003c/th\u003e\n\u003cth\u003eReason\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003ecore\u003c/td\u003e\n\u003ctd\u003e0.59.4\u003c/td\u003e\n\u003ctd\u003e0.59.5\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eintegrations/dav-server\u003c/td\u003e\n\u003ctd\u003e0.7.10\u003c/td\u003e\n\u003ctd\u003e0.7.11\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eintegrations/object_store\u003c/td\u003e\n\u003ctd\u003e0.60.4\u003c/td\u003e\n\u003ctd\u003e0.60.5\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eintegrations/parquet\u003c/td\u003e\n\u003ctd\u003e0.10.4\u003c/td\u003e\n\u003ctd\u003e0.10.5\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eintegrations/unftp-sbe\u003c/td\u003e\n\u003ctd\u003e0.4.10\u003c/td\u003e\n\u003ctd\u003e0.4.11\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/c\u003c/td\u003e\n\u003ctd\u003e0.47.7\u003c/td\u003e\n\u003ctd\u003e0.47.8\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/cpp\u003c/td\u003e\n\u003ctd\u003e0.45.34\u003c/td\u003e\n\u003ctd\u003e0.45.35\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/java\u003c/td\u003e\n\u003ctd\u003e0.50.7\u003c/td\u003e\n\u003ctd\u003e0.50.8\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/nodejs\u003c/td\u003e\n\u003ctd\u003e0.49.12\u003c/td\u003e\n\u003ctd\u003e0.49.13\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/python\u003c/td\u003e\n\u003ctd\u003e0.47.11\u003c/td\u003e\n\u003ctd\u003e0.47.12\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/ruby\u003c/td\u003e\n\u003ctd\u003e0.1.15\u003c/td\u003e\n\u003ctd\u003e0.1.16\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ebindings/dotnet\u003c/td\u003e\n\u003ctd\u003e0.3.0\u003c/td\u003e\n\u003ctd\u003e0.3.1\u003c/td\u003e\n\u003ctd\u003eWeekly patch\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eBreaking changes and migration\u003c/h3\u003e\n\u003cp\u003eNo breaking changes declared in this release range.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(bindings/moonbit): initialize native binding by \u003ca\nhref\u003d\"https://github.com/Eric-Song-Nop\"\u003e\u003ccode\u003e@​Eric-Song-Nop\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8118\"\u003eapache/opendal#8118\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBufferCursor\u003c/code\u003e, an implementation of\n\u003ccode\u003eRead\u003c/code\u003e + \u003ccode\u003eSeek\u003c/code\u003e for \u003ccode\u003eBuffer\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/trxcllnt\"\u003e\u003ccode\u003e@​trxcllnt\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8320\"\u003eapache/opendal#8320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(bindings/dotnet): add Exists and Check by \u003ca\nhref\u003d\"https://github.com/Fatorin\"\u003e\u003ccode\u003e@​Fatorin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8337\"\u003eapache/opendal#8337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(services/hdfs): add copy support by \u003ca\nhref\u003d\"https://github.com/hfutatzhanghb\"\u003e\u003ccode\u003e@​hfutatzhanghb\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8332\"\u003eapache/opendal#8332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(bindings/dotnet)!: remove redundant async overloads and\nsimplify Operator by \u003ca\nhref\u003d\"https://github.com/Fatorin\"\u003e\u003ccode\u003e@​Fatorin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8316\"\u003eapache/opendal#8316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(services/webdav): deprecate enable_conditional_read by \u003ca\nhref\u003d\"https://github.com/YuangGao\"\u003e\u003ccode\u003e@​YuangGao\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8314\"\u003eapache/opendal#8314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(bindings/cpp): pass written bytes as a slice by \u003ca\nhref\u003d\"https://github.com/kszucs\"\u003e\u003ccode\u003e@​kszucs\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/pull/8391\"\u003eapache/opendal#8391\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/apache/opendal/blob/main/CHANGELOG.md\"\u003eopendal\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev0.59.5\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/releases/tag/v0.59.5\"\u003eRelease\nnotes\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/fce9cdefdea7c8e54dfbaf3c88c3b6d5ec68146e\"\u003e\u003ccode\u003efce9cde\u003c/code\u003e\u003c/a\u003e\nPrepare 0.59.5-rc.2\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/ee8be2353d6af6152f6293cb8ac0b4d3d7a234d7\"\u003e\u003ccode\u003eee8be23\u003c/code\u003e\u003c/a\u003e\ndocs: fix question count in security threat model (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8398\"\u003e#8398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/8698f20578abc6dd6a3fad7941ae25f52bcab93b\"\u003e\u003ccode\u003e8698f20\u003c/code\u003e\u003c/a\u003e\nperf(bindings/cpp): pass written bytes as a slice (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8391\"\u003e#8391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/a2e9634235ed01c3af8f9233f1dc1e06d917bdd4\"\u003e\u003ccode\u003ea2e9634\u003c/code\u003e\u003c/a\u003e\nci(moonbit): update pinned MoonBit version (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8382\"\u003e#8382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/ced9b1c2286af7f2b0676a6ab6a836da2d41d813\"\u003e\u003ccode\u003eced9b1c\u003c/code\u003e\u003c/a\u003e\nci: update hawkeye to 7.2.0 (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8380\"\u003e#8380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/e7aa9214efd9462bfbd8bef933ff786ed705da3a\"\u003e\u003ccode\u003ee7aa921\u003c/code\u003e\u003c/a\u003e\nfix(retry): retry on http status code 429 (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8381\"\u003e#8381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/788cae5783dcc2ac918dc862b083813f08a6d2f5\"\u003e\u003ccode\u003e788cae5\u003c/code\u003e\u003c/a\u003e\nchore: sync released versions for 0.59.4 (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8379\"\u003e#8379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/417e06c5a497f04886a24ceb60751e13afbf0230\"\u003e\u003ccode\u003e417e06c\u003c/code\u003e\u003c/a\u003e\nchore(deps): update quick-xml from 0.41.0 to 0.42.0 (\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8375\"\u003e#8375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/766aa945faffc3da8670754d489b99428009adf0\"\u003e\u003ccode\u003e766aa94\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump golang.org/x/sys from 0.46.0 to 0.48.0 in /bindings/go\n(\u003ca\nhref\u003d\"https://redirect.github.com/apache/opendal/issues/8355\"\u003e#8355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/apache/opendal/commit/fc4267df47bf3b6e3ed9f2b34ea548f352cb794c\"\u003e\u003ccode\u003efc4267d\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump github.com/apache/opendal-go-services/fs from 0.1.14\nto 0.1...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/apache/opendal/compare/v0.59.4...v0.59.5\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `crc32fast` from 1.5.2 to 1.5.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/d2363eab95ebc85fcf726d1c8fa845148e474591\"\u003e\u003ccode\u003ed2363ea\u003c/code\u003e\u003c/a\u003e\nRelease 1.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/f694286595c426c33b70de6f1d4baba7966bc541\"\u003e\u003ccode\u003ef694286\u003c/code\u003e\u003c/a\u003e\nPublish to crates.io with trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/348edd99ec0a18c882ac95af3b3b2edf24e695ff\"\u003e\u003ccode\u003e348edd9\u003c/code\u003e\u003c/a\u003e\nExpose the total byte length of a CRC32 hash state (\u003ca\nhref\u003d\"https://redirect.github.com/srijs/rust-crc32fast/issues/68\"\u003e#68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/ad14266cf782ba6936d1af37fc9fd6382ef73b7c\"\u003e\u003ccode\u003ead14266\u003c/code\u003e\u003c/a\u003e\nCentralize state handling (\u003ca\nhref\u003d\"https://redirect.github.com/srijs/rust-crc32fast/issues/67\"\u003e#67\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/92c03d6315fd43ea168441691ac42885dafbcafc\"\u003e\u003ccode\u003e92c03d6\u003c/code\u003e\u003c/a\u003e\nbench: switch from bencher to criterion (\u003ca\nhref\u003d\"https://redirect.github.com/srijs/rust-crc32fast/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/32b1983cedb42d8b3d10404b70c17b4b3c39f225\"\u003e\u003ccode\u003e32b1983\u003c/code\u003e\u003c/a\u003e\nScope the msrv job to the published library, and take rand 0.10 (\u003ca\nhref\u003d\"https://redirect.github.com/srijs/rust-crc32fast/issues/65\"\u003e#65\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/369da366be677937ed94b680f3ec3942fae68355\"\u003e\u003ccode\u003e369da36\u003c/code\u003e\u003c/a\u003e\nBump actions/checkout from 4 to 7 in the actions group (\u003ca\nhref\u003d\"https://redirect.github.com/srijs/rust-crc32fast/issues/63\"\u003e#63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/commit/6d5596ea1682dd59dd36149b8f1729e538ba986a\"\u003e\u003ccode\u003e6d5596e\u003c/code\u003e\u003c/a\u003e\nci: enable dependabot version updates (\u003ca\nhref\u003d\"https://redirect.github.com/srijs/rust-crc32fast/issues/62\"\u003e#62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/srijs/rust-crc32fast/compare/v1.5.2...v1.5.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e1bcd0942b87673b9b938dad22bf633d9c81262d",
      "tree": "95a85c6373159cea3d20c63ae7e06e3fa089bdaf",
      "parents": [
        "b391e5af7dff9f6909af45c01f7dddb68ba08c0f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Oct 24 07:15:49 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 07:15:49 2026 +0000"
      },
      "message": "chore(deps): bump black from 26.3.1 to 26.10.1 in /parquet/pytest (#11847)\n\nBumps [black](https://github.com/psf/black) from 26.3.1 to 26.10.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/psf/black/releases\"\u003eblack\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.10.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eThis release fixes a security issue in Black\u0027s bundled GitHub Action.\nRepositories that\nuse the action are encouraged to update to the latest version of Black\nimmediately. This\nupdate is received automatically when using\n\u003ccode\u003epsf/black@stable\u003c/code\u003e, and is independent of\nthe version of Black installed by the action.\u003c/p\u003e\n\u003cp\u003eWhen the GitHub Action reads version specifiers from\n\u003ccode\u003etool.black.required-version\u003c/code\u003e, it\nnow only accepts released versions of Black, as it already did for\n\u003ccode\u003eblack\u003c/code\u003e requirements\nin dependency lists. Other values, such as URL references, are now\nrejected. This issue\nhas been registered as \u003ccode\u003eGHSA-cg8m-r9f2-5wm2\u003c/code\u003e; a CVE\nidentifier is pending.\u003c/p\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a long Jupyter notebook assignment magic (for example \u003ccode\u003ex \u003d\n!ls -la\u003c/code\u003e) being wrapped\nin parentheses, which IPython can no longer run; such cells are now left\nunchanged\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep repeated lines outside the selected \u003ccode\u003e--line-ranges\u003c/code\u003e\nunchanged (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5436\"\u003e#5436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e--line-ranges\u003c/code\u003e formatting lines that follow a\nstatement when formatting joins or\nre-indents that statement (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e--line-ranges\u003c/code\u003e crashing with an internal error when\nan unselected statement has a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e comment on the last line before a closing\nbracket (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5477\"\u003e#5477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent moving an encoding declaration (for example \u003ccode\u003e# -*-\ncoding: latin-1 -*-\u003c/code\u003e) onto\nthe first two lines of a file (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5487\"\u003e#5487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix adding an extra trailing blank line inside a multi-line module\ndocstring when its\nlast line is near the line length limit (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5494\"\u003e#5494\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not split short expressions on delimiters (such as binary\noperators, comparisons,\nor comprehensions) inside brackets when preceded by a standalone comment\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5455\"\u003e#5455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the unstable \u003ccode\u003estring_processing\u003c/code\u003e feature removing\nbackslash-newline sequences from\nraw strings, which changed their value (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid adding unnecessary parentheses around unbreakable right-hand\nside expressions in\nassignments (such as annotated assignments or subscript targets) (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5473\"\u003e#5473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eParenthesize expressions with parameter comments when they exceed\nthe line length\nunder \u003ccode\u003e--preview\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5442\"\u003e#5442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ewrap_long_dict_values_in_parens\u003c/code\u003e dropping the\nparentheses around a right-hand\nside that contains a dictionary, leaving a line over the length limit\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5492\"\u003e#5492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the unstable \u003ccode\u003estring_processing\u003c/code\u003e feature adding a\nspace after \u003ccode\u003e*\u003c/code\u003e or \u003ccode\u003e**\u003c/code\u003e in a PEP\n695 type parameter (\u003ccode\u003e* Ts \u003d ...\u003c/code\u003e) when it splits a string in\nthe parameter\u0027s default\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5504\"\u003e#5504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary line splits of trailers (such as\nindexing/subscripts) when an\nearlier bracket split exceeds the line length only due to a trailing\ncomment (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5498\"\u003e#5498\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--cache-dir\u003c/code\u003e to configure the cache directory from\nthe command line (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5433\"\u003e#5433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon\u0027t cache a file as formatted after formatting or checking it with\n\u003ccode\u003e--line-ranges\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.10.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003eThis release fixes a security issue in Black\u0027s bundled GitHub Action.\nRepositories that\nuse the action are encouraged to update to the latest version of Black\nimmediately. This\nupdate is received automatically when using\n\u003ccode\u003epsf/black@stable\u003c/code\u003e, and is independent of\nthe version of Black installed by the action.\u003c/p\u003e\n\u003cp\u003eWhen the GitHub Action reads version specifiers from\n\u003ccode\u003etool.black.required-version\u003c/code\u003e, it\nnow only accepts released versions of Black, as it already did for\n\u003ccode\u003eblack\u003c/code\u003e requirements\nin dependency lists. Other values, such as URL references, are now\nrejected. This issue\nhas been registered as \u003ccode\u003eGHSA-cg8m-r9f2-5wm2\u003c/code\u003e; a CVE\nidentifier is pending.\u003c/p\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a long Jupyter notebook assignment magic (for example \u003ccode\u003ex \u003d\n!ls -la\u003c/code\u003e) being wrapped\nin parentheses, which IPython can no longer run; such cells are now left\nunchanged\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5481\"\u003e#5481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep repeated lines outside the selected \u003ccode\u003e--line-ranges\u003c/code\u003e\nunchanged (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5436\"\u003e#5436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e--line-ranges\u003c/code\u003e formatting lines that follow a\nstatement when formatting joins or\nre-indents that statement (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5484\"\u003e#5484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e--line-ranges\u003c/code\u003e crashing with an internal error when\nan unselected statement has a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e comment on the last line before a closing\nbracket (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5477\"\u003e#5477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent moving an encoding declaration (for example \u003ccode\u003e# -*-\ncoding: latin-1 -*-\u003c/code\u003e) onto\nthe first two lines of a file (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5487\"\u003e#5487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix adding an extra trailing blank line inside a multi-line module\ndocstring when its\nlast line is near the line length limit (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5494\"\u003e#5494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep the parentheses around a walrus that is the only item in a set\n(for example\n\u003ccode\u003e{(x :\u003d f())}\u003c/code\u003e) when targeting Python 3.9 or older, since\nPython 3.8 and 3.9.0 can\u0027t\nparse it without them (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5502\"\u003e#5502\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not split short expressions on delimiters (such as binary\noperators, comparisons,\nor comprehensions) inside brackets when preceded by a standalone comment\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5455\"\u003e#5455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the unstable \u003ccode\u003estring_processing\u003c/code\u003e feature removing\nbackslash-newline sequences from\nraw strings, which changed their value (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5482\"\u003e#5482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid adding unnecessary parentheses around unbreakable right-hand\nside expressions in\nassignments (such as annotated assignments or subscript targets) (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5473\"\u003e#5473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eParenthesize expressions with parameter comments when they exceed\nthe line length\nunder \u003ccode\u003e--preview\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5442\"\u003e#5442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ewrap_long_dict_values_in_parens\u003c/code\u003e dropping the\nparentheses around a right-hand\nside that contains a dictionary, leaving a line over the length limit\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5492\"\u003e#5492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the unstable \u003ccode\u003estring_processing\u003c/code\u003e feature adding a\nspace after \u003ccode\u003e*\u003c/code\u003e or \u003ccode\u003e**\u003c/code\u003e in a PEP\n695 type parameter (\u003ccode\u003e* Ts \u003d ...\u003c/code\u003e) when it splits a string in\nthe parameter\u0027s default\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5504\"\u003e#5504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary line splits of trailers (such as\nindexing/subscripts) when an\nearlier bracket split exceeds the line length only due to a trailing\ncomment (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5498\"\u003e#5498\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/258e7dbf348bc23cb70b8cdf693481c04634ebcc\"\u003e\u003ccode\u003e258e7db\u003c/code\u003e\u003c/a\u003e\nPrepare release 26.10.1 (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5511\"\u003e#5511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/ac1f71563aeccf73cf13ece00f231d9d6c66a514\"\u003e\u003ccode\u003eac1f715\u003c/code\u003e\u003c/a\u003e\nAction: validate required-version better (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5510\"\u003e#5510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/fe241ccc443acbabbd75c8240d2fbc06ba4e52d6\"\u003e\u003ccode\u003efe241cc\u003c/code\u003e\u003c/a\u003e\nAvoid splitting trailers when earlier bracket split exceeds length due\nto com...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/4fb2897a7ac539cc14d993e3697469e2529a265e\"\u003e\u003ccode\u003e4fb2897\u003c/code\u003e\u003c/a\u003e\nBump actions/upload-artifact from 7.0.1 to 7.0.2 (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5500\"\u003e#5500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/6d0f5575575dfc5d51e88a3b114816640e933388\"\u003e\u003ccode\u003e6d0f557\u003c/code\u003e\u003c/a\u003e\nBump actions/download-artifact from 8.0.1 to 8.0.2 (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5501\"\u003e#5501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/c45f21d0399747189eedcc6c9a1614b3cf49dc0f\"\u003e\u003ccode\u003ec45f21d\u003c/code\u003e\u003c/a\u003e\nHandle PEP 695 type parameter whitespace in whitespace() (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5504\"\u003e#5504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/8ec61a7fb6f1961377afd28bbe71f8a2095916ac\"\u003e\u003ccode\u003e8ec61a7\u003c/code\u003e\u003c/a\u003e\nSkip UTF-8 BOM when reading .gitignore (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5497\"\u003e#5497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/c9b1148b5b8799758756cbec7c0d1ac187d37f1a\"\u003e\u003ccode\u003ec9b1148\u003c/code\u003e\u003c/a\u003e\nFix module docstring last_line_length when docstring ends with newline\n(\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5494\"\u003e#5494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/eb8835829969f82c2567119f528b188769f3ac6d\"\u003e\u003ccode\u003eeb88358\u003c/code\u003e\u003c/a\u003e\nParenthesize expressions with parameter comments in preview (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/3113\"\u003e#3113\u003c/a\u003e) (\u003ca\nhref\u003d\"https://redirect.github.com/psf/black/issues/5442\"\u003e#5442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/psf/black/commit/939fa93a1327d2a5f2829e6c1d7e4bd25a17b0f7\"\u003e\u003ccode\u003e939fa93\u003c/code\u003e\u003c/a\u003e\nKeep the parentheses around a right-hand side when a dict value\u0027s\nparentheses...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/psf/black/compare/26.3.1...26.10.1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dblack\u0026package-manager\u003dpip\u0026previous-version\u003d26.3.1\u0026new-version\u003d26.10.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/apache/arrow-rs/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b391e5af7dff9f6909af45c01f7dddb68ba08c0f",
      "tree": "a2b48ad8d45a54d8de83a9bd18221af6f7f166f7",
      "parents": [
        "a1eb45012234fe577090f2fa81c41388da0117ad"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Fri Oct 23 23:35:03 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 23:35:03 2026 +0000"
      },
      "message": "Update version to `60.1.0` and add CHANGELOG (#11750)\n\n# Which issue does this PR close?\n\n- Part of https://github.com/apache/arrow-rs/issues/10525\n\n# Rationale for this change\n\nPrepare for the `60.1.0` release\n\n# What changes are included in this PR?\n1. Update version to `60.1.0`\n2. Add `60.1.0` CHANGELOG (see rendered version\nhttps://github.com/alamb/arrow-rs/blob/alamb/prepare_60.1.0/CHANGELOG.md)\n\n# Are these changes tested?\nBy CI\n\n# Are there any user-facing changes?\n\nNew version and changelog\n\n---------\n\nCo-authored-by: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Jefffrey \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "a1eb45012234fe577090f2fa81c41388da0117ad",
      "tree": "3ecb8989c3e099d30115578624816557cc4a2b9f",
      "parents": [
        "afb3d77bda3581c44285cf9227ce483affdf3e22"
      ],
      "author": {
        "name": "Kosta Tarasov",
        "email": "33369833+sdf-jkl@users.noreply.github.com",
        "time": "Fri Oct 23 23:18:25 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 23:18:25 2026 +0000"
      },
      "message": "Run fork PR test suites in contributor forks (#11788)\n\n# Which issue does this PR close?\n\nNo linked Arrow issue. Adapts the approach in\n[apache/datafusion#25591](https://github.com/apache/datafusion/pull/25591).\n\n# Rationale for this change\n\nFork pull requests currently run their test suites upstream, consuming\nASF\u0027s shared CI capacity before the merge queue validates the merged\nresult. This change moves that initial test feedback to contributors\u0027\nforks while retaining full upstream validation in the merge queue.\n\n# What changes are included in this PR?\n\n- Run all regular CI suites, excluding Miri, on fork branch pushes and\nmanual runs. This includes documentation-only pushes. Superseded pushes\nto the same fork branch cancel earlier runs.\n- Keep lightweight checks upstream for fork PRs to `main`.\nSame-repository and release-branch PRs retain existing upstream testing;\nthe merge queue still runs every suite, including Miri.\n- Show an informational `CI (fork)` check linking to the fork run for\nthe current commit. A status bridge uses `workflow_run` and scheduled\npolling to discover results and reruns. It reads fork run metadata and\nwrites upstream checks without checking out PR code or consuming PR\nartifacts.\n- Keep docs deployment upstream-only and add contributor setup\ninstructions and CI configuration checks.\n\nFork results are informational because contributors control their\nworkflows. They do not replace the required merge-queue checks.\n\n# Are these changes tested?\n\nRouting and configuration tests cover fork pushes, PR targets, manual\nruns, and merge-queue validation. Bridge tests use mocked GitHub APIs to\ncover missing runs, reruns, stale commits, API failures, polling, and\ncancellation. All 8 routing/configuration tests and 29 bridge tests\npassed locally, along with workflow linting, spelling, and Markdown\nformatting checks.\n\nHosted end-to-end validation remains outstanding. The bridge must be\ninstalled on a test repository\u0027s default branch to exercise\n`workflow_run` and scheduled updates.\n\n# Are there any significant user-facing changes?\n\nContributors must enable Actions in their forks and update their\nbranches to include these workflows. Results and reruns are available in\nthe fork\u0027s Actions tab; the upstream status check may update later. No\nlibrary API changes.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "afb3d77bda3581c44285cf9227ce483affdf3e22",
      "tree": "93a01f8daee34ece424ed583f1a6bd92ee9e7d41",
      "parents": [
        "46a4abb8bc242dc898246f8c3a4829d2d6f14bfc"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Fri Oct 23 21:23:10 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 21:23:10 2026 +0000"
      },
      "message": "bench: Add 0.5% selectivity to coalesce benchmarks (#11772)\n\n## Why\nExercise the sparse filter path around its 1/128 selectivity cutoff.\nThis follows up on\nhttps://github.com/apache/arrow-rs/pull/11732#discussion_r4338277053.\n\n## What changed\nAdded 0.005 selectivity to the coalesce filter benchmark matrix."
    },
    {
      "commit": "46a4abb8bc242dc898246f8c3a4829d2d6f14bfc",
      "tree": "a1602808f59002fcfd329febbe6fb859bb2a2c08",
      "parents": [
        "f1a5016241134c198522a40eb98778dc4666ebf5"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Fri Oct 23 20:39:07 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 20:39:07 2026 +0000"
      },
      "message": "Fix BatchCoalescer::is_empty documentation (#11790)\n\n# Which issue does this PR close?\n\n- Closes #11606\n\n# Rationale for this change\n\nThe rustdoc describes the opposite of what `BatchCoalescer::is_empty`\nreturns.\n\n# What changes are included in this PR?\n\nCorrect the rustdoc to match the method behavior.\n\n# Are these changes tested?\n\nNo new tests. This only changes documentation; the existing coalescer\ntests cover empty and non-empty states.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "f1a5016241134c198522a40eb98778dc4666ebf5",
      "tree": "dba3a04b9fad29744aa4fddad32c2dcea59b3091",
      "parents": [
        "31caa38f5a63a66b5cbce4049da5deb6d91778c0"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Fri Oct 23 20:29:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 20:29:06 2026 +0000"
      },
      "message": "perf(arrow-buffer): divide `i256` by a single word with a reciprocal on 64-bit targets other than x86_64 (#11580)\n\n# Which issue does this PR close?\n\n- Part of #11451.\n- Part of #11421.\n\n# Rationale for this change\n\nOutside x86_64,\n[`div_rem_word`](https://github.com/apache/arrow-rs/blob/418340d5188f6e2949c4a0545b3e437dfdc848f8/arrow-buffer/src/bigint/div.rs#L186-L211)\ndivides a two-word number by one word with a `u128` division, which is a\ncall to `__udivti3`.\n[`div_rem_small`](https://github.com/apache/arrow-rs/blob/418340d5188f6e2949c4a0545b3e437dfdc848f8/arrow-buffer/src/bigint/div.rs#L61-L73)\ncalls it once per word, so dividing an `i256` by a divisor below 2^64\nmakes four calls\n([comment](https://github.com/apache/arrow-rs/issues/11451#issuecomment-6064895595)).\n\n# What changes are included in this PR?\n\nOn 64-bit targets other than x86_64, and under Miri, `div_rem_small`\nshifts both operands so that the divisor\u0027s top bit is set. It computes a\nreciprocal of the divisor once with algorithm 2 of [Moller and Granlund\n(2011)](https://gmplib.org/~tege/division-paper.pdf), which uses a\n256-entry table and multiplies. It then divides each word with their\nalgorithm 4, which uses one full multiply, one low multiply and two\ncorrections, and no divide. x86_64 keeps the `div` instruction. 32-bit\ntargets, including wasm32, keep `div_rem_word`, because each\n64x64-to-128-bit product would be a call to `__multi3` there.\n\nComputing the reciprocal with a `u128` division instead made the `i256`\nbench slower than `main`, because that one `__udivti3` call cost more\nthan the four it replaced.\n\nDividends and divisors whose magnitudes are both below 2^128 still take\nthe `u128` division from #11530. This change applies when the dividend\nis at least 2^128 and the divisor is below 2^64, which for `Decimal256`\nmeans about 39 digits or more divided by at most 19 digits.\n\n# Are these changes tested?\n\nThe new tests in `arrow-buffer/src/bigint/div.rs` compile on every\ntarget:\n\n- `test_reciprocal_word` checks the reciprocal against a `u128` division\nfor the divisors 2^63 and `u64::MAX` and their neighbors, the divisors\nat and next to each boundary between table entries, and random divisors.\n- `test_div_rem_word_reciprocal` checks each word\u0027s division against\n`u128` division, including an input that reaches the second correction.\n- `test_div_rem_small_reciprocal` compares the new path with the\nper-word `div_rem_word` path for every normalization shift, powers of\nten up to 10^19 and their neighbors, one, two and four words, and random\ninputs.\n\nThe existing `test_i256_fuzz` and `test_div_rem_powers_of_ten` reach the\nnew path on targets other than x86_64 and under Miri.\n\nThe benchmark bot ran `i256_div_rem` in the `i256` benchmark, whose rows\neach have their own divisor, on\n[arm64](https://github.com/apache/arrow-rs/pull/11580#issuecomment-6194268453)\nand\n[x86_64](https://github.com/apache/arrow-rs/pull/11580#issuecomment-6194334512).\nOn arm64 it also ran `decimal256_scalar` in the `decimal_division`\nbenchmark from #11427\n([run](https://github.com/apache/arrow-rs/pull/11580#issuecomment-6194355455))\nand the `Decimal256` cases of `decimal_downscale` in the `cast_decimal`\nbenchmark from #11426\n([run](https://github.com/apache/arrow-rs/pull/11580#issuecomment-6194434803)).\nThe arm64 runner is a Neoverse-V2.\n\n\u003cimg width\u003d\"1600\" height\u003d\"1172\" alt\u003d\"div-rem-small-bot\"\nsrc\u003d\"https://github.com/user-attachments/assets/5f6a1a4b-270b-482f-ab08-a0090cb806ba\"\n/\u003e\n\n\u003cdetails\u003e\u003csummary\u003eNumbers behind the chart\u003c/summary\u003e\n\nIn us with no nulls, per 1024 values for `i256` and the division cases\nand per 8192 values for the casts:\n\n| Case | `main` | This PR |\n|---|---|---|\n| `i256` small divisor | 43.1 | 24.2 |\n| 60 digits / 4 digits | 75.0 | 55.5 |\n| 60 digits % 4 digits | 76.1 | 57.4 |\n| 72 digits / 4 digits, through `scaled_div` | 227.3 | 204.3 |\n| (76, 10) to (76, 2), 60 digits | 429.8 | 288.7 |\n| (76, 20) to `Decimal128` (38, 6), 48 digits, fallible | 444.4 | 339.3\n|\n| `i256` small quotient | 25.8 | 25.4 |\n| 30 digits / 4 digits | 40.4 | 40.5 |\n| 60 digits / 40 digits | 86.1 | 86.9 |\n| (41, 20) to `Decimal128` (38, 6), 30 digits | 217.1 | 221.6 |\n| (76, 40) to `Decimal128` (38, 6), 42 digits, fallible | 391.3 | 399.6\n|\n\n\u003c/details\u003e\n\nThe first six cases take the new path, and the cases with nulls changed\nby about the same amount. The rest don\u0027t reach it: their magnitudes are\nbelow 2^128, or the divisor is wider than 64 bits. On x86_64,\n`i256_div_rem` didn\u0027t change (14.5 vs 14.5 us for small divisor, 30.8 vs\n30.7 us for small quotient).\n\nThe `(76, 10)` to `(76, 2)` cast with 38-digit values was 18% slower\n(154.7 vs 183.0 us), but its values are below 2^128 and it runs the same\ninstructions on both sides. With every function and branch target\naligned to 64 bytes on both sides, it was 8% faster with this PR (174.4\nvs 161.3 us), and the cases on the new path kept their gains\n([run](https://github.com/apache/arrow-rs/pull/11580#issuecomment-6195355966)).\nA later aligned run on the current merge base was 18% faster (190.6 vs\n161.2 us), with the cases on the new path unchanged\n([run](https://github.com/apache/arrow-rs/pull/11580#issuecomment-6297003526)).\nThe PR side is stable across runs and the `main` side is not.\n\n# Are there any significant user-facing changes?\n\nNo.\n\n## AI Disclosure\n\nI wrote this PR with help from Claude but understand and support the\ncore approach, implementation, and test coverage."
    },
    {
      "commit": "31caa38f5a63a66b5cbce4049da5deb6d91778c0",
      "tree": "2bc2a5f62c6306939d04c7272116657dc45316bd",
      "parents": [
        "9c9b6a0ce5ab1db804fde77c5be745774ace19e1"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Fri Oct 23 19:29:02 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:29:02 2026 +0000"
      },
      "message": "ci: move several jobs to `ubuntu-slim` runner (#11774)\n\n# Which issue does this PR close?\n\n- Related to #9536 and #11803\n- closes https://github.com/apache/arrow-rs/pull/11774\n\n# Rationale for this change\n\nThe shared ASF Infra `ubuntu-latest` runner pool is frequently\nsaturated. [ASF Infra recommends using the `ubuntu-slim` pool\ninstead](https://infra.apache.org/services.html), when possible:\n\n\u003e Use lightweight runners: For small, short jobs, consider using\nruns-on: ubuntu-slim. These provide 1 vCPU, 5GB RAM, no Docker engine,\nand a 15-minute hard limit. They churn much more quickly during peak\ntimes, allowing you to bypass the standard ubuntu-latest queue while\nfreeing up capacity for others.\n\nThis PR moves the following CI jobs to run on `ubuntu-slim`:\n\n- Select and validate CI suites (ci.yml)\n- Lint (cargo fmt) (rust.yml)\n- Check unused dependencies (rust.yml)\n- Audit (audit.yml)\n- Release Audit Tool (RAT) (dev.yml)\n- Spell Check with Typos (dev.yml)\n- deploy (docs.yml)\n- Publish (release.yml)\n\nThe RAT and Publish changes were also proposed in #11803.\n\n`ubuntu-slim` has no Rust toolchain, Java, or container engine, so a few\njobs need adjusting:\n\n- Lint and Check unused dependencies no longer run inside the\n`amd64/rust` container. Instead, they install the Rust toolchain with a\nnew `setup-rustup` action. Neither job compiles the workspace.\n- Audit calls `cargo-audit audit` directly, since there is no `cargo` to\ndispatch `cargo audit`.\n- RAT installs JDK 17 with `actions/setup-java`.\n\nThe jobs that remain on `ubuntu-latest` compile Rust code or run in a\ncontainer.\n\n# What changes are included in this PR?\n\nSee above. This PR also adds a note to `.github/workflows/README.md`\nrecommending `ubuntu-slim` for new jobs that are small and short.\n\n# Are these changes tested?\n\nCI change only. This PR\u0027s CI runs every moved job except deploy and\nPublish, which only run on pushes to `main` and on release tags,\nrespectively.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "9c9b6a0ce5ab1db804fde77c5be745774ace19e1",
      "tree": "aa3e797c6cffa7361524c79e58800dee85cd30aa",
      "parents": [
        "2a22dd74387f818e1aa52ebc66a24f577db6f55f"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Fri Oct 23 19:04:52 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:04:52 2026 +0000"
      },
      "message": "fix(arrow-select): reject nulls in non-nullable columns in take_record_batch (#11831)\n\n# Which issue does this PR close?\n\n- Closes #11824.\n\n# Rationale for this change\n\n#10945 is not in a release yet, so this fix should go in 60.1.0\n(#10525).\n\nThis PR changes the same lines of `take_record_batch` as #11829, so it\nshould merge after #11829. I will rebase it then.\n\n# What changes are included in this PR?\n\n`take_record_batch` builds its result with\n`RecordBatch::try_new_with_options` instead of\n`RecordBatch::new_unchecked`, so it checks nullability as 60.0.0 did. It\npasses the row count so a batch with no columns still works.\n\n# Are these changes tested?\n\n`take_record_batch` had no tests of its own, only its doc example and\none test through `BatchCoalescer::push_batch_with_indices`. The new\n`test_take_record_batch_*` tests in `arrow-select/src/take.rs` cover a\nnull index into non-nullable primitive, string, dictionary, struct, and\nfixed-size list columns, indices whose validity buffer has no nulls, and\na batch with no columns.\n\nThe benchmark bot shows `take_record_batch` within 2% of `main`\n([default](https://github.com/apache/arrow-rs/pull/11831#issuecomment-6350836350),\n[aligned](https://github.com/apache/arrow-rs/pull/11831#issuecomment-6350853613)).\n\n# Are there any significant user-facing changes?\n\nNo. This restores the 60.0.0 behavior.\n\n---------\n\nCo-authored-by: Jefffrey \u003cjeffrey.vo.australia@gmail.com\u003e"
    },
    {
      "commit": "2a22dd74387f818e1aa52ebc66a24f577db6f55f",
      "tree": "738ea5892f1586b1fa2259e4c9cb22959a8f5bc3",
      "parents": [
        "df4dc3ede59bd43b5f71847231212381d068bb72"
      ],
      "author": {
        "name": "Artem Osipov",
        "email": "59066880+osipovartem@users.noreply.github.com",
        "time": "Fri Oct 23 17:27:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 17:27:40 2026 +0000"
      },
      "message": "[Variant] Restore object field offsets after failed append (#11403)\n\n### Why\n`ObjectBuilder` updates its field-offset map before appending a value.\nWith duplicate-key validation enabled, rejecting a duplicate can leave\nthe map changed. With validation disabled, a failed fallible overwrite\ntruncates bytes but leaves the previous offset unrestored. Continuing to\nbuild the object can then produce an invalid value.\n\n### Change\nReject validated duplicates before mutation and restore the previous\noffset when a permitted overwrite fails. The default non-validating path\nkeeps its existing `fields.insert` fast path. Add regression tests that\ncontinue building after each error. This is independent of the fallible\ntrait API in #11106; it is the unique correction extracted from\nsuperseded #11401.\n\n### Validation\n- `cargo +1.98.1 test -p parquet-variant --lib`: 176 passed.\n- Formatting and `cargo +1.98.1 clippy -p parquet-variant --lib` pass\n(installed 1.98.1 reports the repo\u0027s newer lint as unknown).\n- Focused short Criterion runs showed no repeatable regression, but WSL\nmeasurements were noisy; the default insert path is unchanged.\n- Independent read-only review covered correctness, regressions,\nperformance, API compatibility, and tests; approved with no blockers."
    },
    {
      "commit": "df4dc3ede59bd43b5f71847231212381d068bb72",
      "tree": "3ecfa7da0998cbece5091093a2ee4efa04076ec2",
      "parents": [
        "3db18f75b40921b8abf17daed32999ec58064f7d"
      ],
      "author": {
        "name": "Kosta Tarasov",
        "email": "33369833+sdf-jkl@users.noreply.github.com",
        "time": "Fri Oct 23 07:02:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 07:02:16 2026 +0000"
      },
      "message": "Run Miri on a daily schedule, require it before releases (#11631)\n\n## Which issue does this PR close?\n\nPart of #11548.\n\n## Rationale for this change\n\nMiri runs are expensive and delay the merge queue. Run Miri daily and on\ndemand before a release.\n\n## What changes are included in this PR?\n\n- Remove Miri from merge-queue execution and required checks.\n- Enable manual runs through `workflow_dispatch`.\n- Run Miri daily 3:17 UTC\n- Add release instructions to run Miri before cutting a release commit,\nverify all partitions pass, and link the results in the release issue.\n\n## Are these changes tested?\n\nUpdated CI routing tests pass. Workflow linting, Markdown formatting,\nand spelling checks pass. The Miri suite itself was not run.\n\n## Are there any significant user-facing changes?\n\nNo.\n\nAI assisted with implementation and validation.\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "3db18f75b40921b8abf17daed32999ec58064f7d",
      "tree": "1ae4f91e70013b2f5237cf3885920f8b47ed56bb",
      "parents": [
        "b90914fecd0ba85a8827f386af3bcc51cce5b162"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Fri Oct 23 05:42:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 05:42:00 2026 +0000"
      },
      "message": "bench: improve `concat`, `coalesce_kernels` benchmarks (#11768)\n\n# Which issue does this PR close?\n\n- N/A\n\n# Rationale for this change\n\nThis PR improves the `concat` and `coalesce_kernels` benchmarks:\n\n* `concat`: Add a case that mixes inline and out-of-line strings (3 to\n19 bytes). Previously, every string in a case had the same length (12,\n20 or 128 bytes).\n* `concat`: Each case concatenated 10 copies of the same 8192-row array,\nso after the first copy the input views were already in cache.\nReal-world data doesn\u0027t look like this; each each iteration now\nconcatenates the next 10 of 32 arrays with different seeds.\n* `coalesce_kernels`: Add a benchmark case for out-of-line strings that\ndon\u0027t take the copy-path in the coalescer.\n* `coalesce_kernels`: For `Utf8View`, `Utf8`, and `Dictionary(Int32,\nUtf8)` inputs, the RNG seed was ignored. Fix it to pass the seed to the\nRNG, so we don\u0027t generate identical data.\n\n# What changes are included in this PR?\n\nSee above.\n\n# Are these changes tested?\n\nBenchmark change only.\n\n# Are there any significant user-facing changes?\n\nNo, benchmark change only."
    },
    {
      "commit": "b90914fecd0ba85a8827f386af3bcc51cce5b162",
      "tree": "de5ed34cd18bd7d32f7d3f8e84705455cf5685ae",
      "parents": [
        "d03274a7f69d9ec18e2d74920f8b880dd0a722a0"
      ],
      "author": {
        "name": "Matt Butrovich",
        "email": "mbutrovich@users.noreply.github.com",
        "time": "Fri Oct 23 05:35:26 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 05:35:26 2026 +0000"
      },
      "message": "fix(arrow-select): bounds-check take_record_batch once, with a faster check_bounds for null indices (#11829)\n\n# Which issue does this PR close?\n\n- Closes #11825.\n\n# Rationale for this change\n\n#10945 is not in a release yet, so this fix should go in 60.1.0\n(#10525).\n\n# What changes are included in this PR?\n\n`take_record_batch` now checks the indices once against the row count\nwith `check_bounds`, then takes every column unchecked. It used to rely\non a checked take of the first column, which reads no index for some\ntypes.\n\nIn local testing, the new `check_bounds` call made `take_record_batch`\nwith null indices noticeably slower, because `check_bounds` checks null\nindices one at a time. So this PR also makes `check_bounds` run its\nvectorized loop first, and fall back to the null-aware loop only if that\nfinds a value out of bounds. New benchmarks cover this path.\n\n# Are these changes tested?\n\n`take_record_batch` had no tests of its own, only its doc example and\none test through `BatchCoalescer::push_batch_with_indices`. The new\n`test_take_record_batch*` tests in `arrow-select/src/take.rs` cover\ncolumns whose take reads no index, out-of-bounds and negative indices,\nnull index slots holding out-of-bounds values, empty batches, and\nbatches with no columns.\n\nOn the benchmark bot, the `check_bounds` optimization makes `take` with\nnull indices 1.7-1.9x faster\n([default](https://github.com/apache/arrow-rs/pull/11829#issuecomment-6350317380),\n[aligned](https://github.com/apache/arrow-rs/pull/11829#issuecomment-6350327308)).\n`take_record_batch` is within 3% of `main`, except 5 primitive columns,\nwhich is 7-8% slower\n([default](https://github.com/apache/arrow-rs/pull/11829#issuecomment-6350319889),\n[aligned](https://github.com/apache/arrow-rs/pull/11829#issuecomment-6350328767)).\nAgainst 60.0.0 it is 1-4% faster, except string and binary columns\n([run](https://github.com/apache/arrow-rs/pull/11829#issuecomment-6351018551)).\n\n\u003cimg width\u003d\"1600\" height\u003d\"452\" alt\u003d\"check-bounds-bot\"\nsrc\u003d\"https://github.com/user-attachments/assets/9f589430-3197-4a08-9608-7a186347f1e0\"\n/\u003e\n\n\u003cimg width\u003d\"1600\" height\u003d\"868\" alt\u003d\"take-record-batch-bot\"\nsrc\u003d\"https://github.com/user-attachments/assets/7fd88471-346c-4f84-929d-52ddb4429c8f\"\n/\u003e\n\n# Are there any significant user-facing changes?\n\n`take_record_batch` returns an error for an out-of-bounds index. 60.0.0\npanicked for most column types, and accepted the index when no column\nread it, for example in a batch of only `Null` columns."
    },
    {
      "commit": "d03274a7f69d9ec18e2d74920f8b880dd0a722a0",
      "tree": "67cffc67eec2116e63571204fc17f82b9392cb45",
      "parents": [
        "2177b8e86fb28a6b9ec6f253dd5a59e6ed4a37cd"
      ],
      "author": {
        "name": "Neil Conway",
        "email": "neil.conway@gmail.com",
        "time": "Fri Oct 23 01:10:50 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 01:10:50 2026 +0000"
      },
      "message": "bench: add `MutableBuffer::extend`, enhance `MutableArrayData` (#11742)\n\n# Which issue does this PR close?\n\n- N/A. Split out of #11656, which uses these benchmarks.\n\n# Rationale for this change\n\nExtend the benchmarks for `MutableBuffer::extend` to cover more iterator\nshapes, and extend the `MutableArrayData` benchmarks to cover more data\ntypes. We also revise how data is generated for the `zip_kernels` and\n`mutable_array` benchmarks: the previous approach repeatedly passed the\nsame input data to the functions on every iteration. This allows the\nbranch predictor to do much better than it would on real-world data,\nwhich initially hid the ARM regression described above.\n\nThese improvements are intended to evaluate #11656 more accurately.\n\n# What changes are included in this PR?\n\n- Add an arrow-buffer `mutable_buffer_extend` benchmark that appends\n32Ki items, one `extend` call per chunk, with chunks of random length\n(16 or 1024 items on average). It covers copied and mapped slices, an\n`i32` range, `repeat_n`, a `Chain` of two slices, and a `Filter`, whose\nsize hint is not exact.\n- Add `Utf8View` and dictionary cases to `mutable_array`, with the\nexisting long random slices and with slices of 1 to 8 rows. Every case\nnow starts with room for all the rows it copies, so its time goes to the\ncopies rather than to growing the buffers.\n- Cycle `zip_kernels`, `mutable_array` and `mutable_buffer_extend`\nthrough 16 to 64 inputs instead of reusing one. Scalars and the constant\nmasks stay the same, as they would across the batches of a query.\n\n# Are these changes tested?\n\nBenchmark-only change.\n\n# Are there any significant user-facing changes?\n\nNo.\n\n# AI usage\n\nClaude Code (Opus 5.5), reviewed with Codex (Astra 6.1).\n\nCo-authored-by: Ed Seidl \u003cetseidl@users.noreply.github.com\u003e"
    },
    {
      "commit": "2177b8e86fb28a6b9ec6f253dd5a59e6ed4a37cd",
      "tree": "b098ddde158f5f05696ceeae81c51303f5375994",
      "parents": [
        "01a9917658fecd639991e92a5a5810be710b539c"
      ],
      "author": {
        "name": "Andrew Lamb",
        "email": "andrew@nerdnetworks.org",
        "time": "Thu Oct 22 20:53:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 20:53:40 2026 +0000"
      },
      "message": "Fix CI on ubuntu-latest (Ubuntu 26.04): use Python 3.12 and JDK 17 instead of pinning runners (#11799)\n\n# Which issue does this PR close?\n\n- Closes https://github.com/apache/arrow-rs/issues/11789\n\n# Rationale for this change\n\nThe `ubuntu-latest` runner label is [migrating from Ubuntu 24.04 to\n26.04](https://github.blog/changelog/2026-09-17-ubuntu-26-generally-available-and-latest-migration/)\nbetween October 19 and November 19, 2026. Three jobs on `main` break on\nthe new image (see\nhttps://github.com/apache/arrow-rs/actions/runs/39673895251):\n\n| Job | Failure on 26.04 |\n| --- | --- |\n| dev / Release Audit Tool (RAT) | `The version \u00273.8\u0027 with architecture\n\u0027x64\u0027 was not found for Ubuntu 26.04` |\n| integration / Pyarrow C Data Interface | same: no Python 3.8 in the\ntoolcache |\n| parquet / PySpark Integration Test |\n`java.lang.UnsupportedOperationException: getSubject is not supported` |\n\nThe maintenance branches were fixed by pinning those jobs back to\n`ubuntu-24.04` (#11778, #11781). This PR instead updates the jobs so\nthey run on the current image, as suggested in the issue.\n\n# What changes are included in this PR?\n\n- **RAT** (`dev.yml`): Python `3.8` → `3.12`. `check-rat-report.py` only\nuses the standard library.\n- **Pyarrow C Data Interface** (`integration.yml`): Python `3.8` →\n`3.12`. 3.12 is the newest version with wheels for every pyarrow in the\nmatrix (`15`, `16`, `17`); pyarrow 15 has no 3.13 wheels, and\n`pyarrow\u003d\u003d15` resolves to 15.0.2 which pins `numpy\u003c2`, so the install\nstill works. `pyo3` 0.29 supports 3.12.\n- **PySpark Integration Test** (`parquet.yml`): add an\n`actions/setup-java` step for Temurin 17. The 26.04 image ships JDK\n11/17/21/25 with 25 as default; `Subject.getSubject` is disabled on JDK\n24+ (JEP 486) so Hadoop/Spark 3.5 cannot start a `SparkContext`. Spark\n3.5 supports Java 8/11/17, and 17 is already in the runner toolcache so\nthe step is fast.\n\n`actions/setup-java` is pinned by SHA to `v6.1.0`, matching the\nconvention for other actions in this repo.\n\nNo RUSTSEC / `cargo audit` changes are needed on `main`: the\n`rustls-webpki` / `webpki-roots` updates from the maintenance branches\n(#11793, #11794) were originally made on `main` in #11752, and `main`\nalready has `quick-xml` 0.41.0 so it does not need the `--ignore\nRUSTSEC-2026-0194/0195` flags the maintenance branches carry.\n\n# Are these changes tested?\n\nBy CI on this PR. Whether the jobs land on a 24.04 or 26.04 runner\nduring the rollout window, all three should pass with these settings.\n\n# Are there any user-facing changes?\n\nNo\n\n---------\n\nCo-authored-by: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "01a9917658fecd639991e92a5a5810be710b539c",
      "tree": "dc51bf11b26f1561e3ea55d82284ef87a2b5a343",
      "parents": [
        "8ecd35b1aa8e7d4ecca79162aefe5ebd846fa174"
      ],
      "author": {
        "name": "Kosta Tarasov",
        "email": "33369833+sdf-jkl@users.noreply.github.com",
        "time": "Wed Oct 21 05:27:32 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 05:27:32 2026 +0000"
      },
      "message": "Add variant_get benchmarks for per-row metadata (#11624)\n\n# Which issue does this PR close?\n\nRelated to #10358\n\n# Rationale for this change\n\nAs @cetra3 pointed out in [this\ncomment](https://github.com/apache/arrow-rs/pull/10358#issuecomment-6086383082),\nthe existing object-path `variant_get` benchmark shares one metadata\ndictionary across all rows and misses the regression with separate\nper-row dictionaries. This PR adds cases covering `json_to_variant` and\n`VariantArrayBuilder` output, plus a fixed unshared-metadata fixture, in\nresponse to that feedback.\n\n# What changes are included in this PR?\n\nAdds a `variant_get_object_path_metadata` group with three fixture\nsources:\n\n- `json_to_variant`: measures extraction from JSON conversion output.\n- `variant_array_builder`: inserts fields in reverse order to exercise\nunsorted metadata.\n- `per_row_metadata`: explicitly gives each row its own metadata bytes,\npreserving this case even if the producers later share dictionaries.\n\nEach case extracts `attr.140` as `Int32` from 8,192 rows with 300\nfields, alternating between two key sets that both contain the target.\nFixture creation is outside the timed loop. The producer cases can\ntherefore reflect future improvements to metadata sharing without\nincluding conversion time.\n\n# Are these changes tested?\n\nAll three cases pass a benchmark smoke run. Before timing, they assert\nthe output length and extracted values. The fixed per-row fixture also\nchecks that repeated dictionaries occupy distinct byte ranges.\n\nThe new cases reproduce the regression when comparing #10358 at\n`38296248d0` with its base, `1a41738b79`:\n\n| Case | Base | PR #10358 | PR time / base time |\n| --- | ---: | ---: | ---: |\n| `json_to_variant` | 11.48 ms | 18.44 ms | 1.61× |\n| `variant_array_builder` | 10.60 ms | 24.28 ms | 2.29× |\n| `per_row_metadata` | 10.01 ms | 18.60 ms | 1.86× |\n\nThese are local mean times from paired runs pinned to CPU 4, with 20\nsamples per case and the same compiler and dependencies. Another\nbenchmark was running concurrently on the host.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "8ecd35b1aa8e7d4ecca79162aefe5ebd846fa174",
      "tree": "c513b3f7498ef169870671c82b1c403a589d57a6",
      "parents": [
        "b13f2bb9fac8e1c2603c8e530dc8000f9e1a0abf"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Wed Oct 21 05:25:09 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 05:25:09 2026 +0000"
      },
      "message": "bench(arrow): cover Boolean, Dictionary, and REE coalescing (#11722)\n\nCloses #11721.\n\nAdds single-column Dictionary and REE cases to the existing coalesce\nfilter, take, and interleave benchmarks. Boolean is already covered.\n\nStacked on #11519; leaving this as a draft until that merges."
    },
    {
      "commit": "b13f2bb9fac8e1c2603c8e530dc8000f9e1a0abf",
      "tree": "3e78442d69c107d455db186bc11160c7b447febc",
      "parents": [
        "235a93b5f3b32db19752e64cc7b2f1af02d841ab"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Wed Oct 21 05:22:37 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 05:22:37 2026 +0000"
      },
      "message": "perf(parquet): skip per-batch key-bounds scan when RLE bit width prov… (#11462)\n\n# Which issue does this PR close?\n\n- Closes https://github.com/apache/arrow-rs/issues/11414\n\n# Rationale for this change\n\n- https://github.com/apache/datafusion/issues/24111\n\n- see https://github.com/apache/arrow-rs/issues/11414 for more context\n\n# split out of https://github.com/apache/arrow-rs/pull/11423 , see\ncomment for\n[context](https://github.com/apache/arrow-rs/pull/11423#pullrequestreview-5459190670)\n\nSkip the per-batch key bounds scan when the RLE bit width already proves\nit\u0027s safe. `DictionaryBuffer::Dict` now carries an optional\nkey_upper_bound: Option\u003cu64\u003e, populated from the RLE page\u0027s bit_width as\n2^bit_width, an exclusive upper bound on anything the decoder can\nproduce. if key_upper_bound \u003c\u003d values.len(), every representable key is\nalready a valid dictionary index, so the min/max fold over keys is\nskipped entirely.\n\n\n**This removes a per-batch O(n) pass that dominated the profile on\nlow-cardinality shapes.**"
    },
    {
      "commit": "235a93b5f3b32db19752e64cc7b2f1af02d841ab",
      "tree": "490b4328b40ad338645bc9831f61eda7cd957da3",
      "parents": [
        "dbd35c9ee095d2f0bb19270e82b3198eba7ee15f"
      ],
      "author": {
        "name": "Hippolyte Barraud",
        "email": "hippolyte.barraud@datadoghq.com",
        "time": "Wed Oct 21 05:22:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 05:22:23 2026 +0000"
      },
      "message": "fix(parquet): align encoded Arrow schemas and nested nullability (#11278)\n\n# Which issue does this PR close?\n\n- Closes #11277.\n- Contributes to #9731\n- Part of #11273\n\n# Rationale for this change\n\nThe writer produces schemas that do not always match the logical data it\nstores.\n\nThe main case involves run-end-encoded arrays. REE arrays have no parent\nvalidity bitmap and report a physical null count of zero even when their\nrun values contain nulls. The writer can therefore declare a\nnon-nullable outer REE field as a required Parquet column, then encode\nnullable run values without the definition levels needed to represent\nthose nulls. This silently replaces nulls with ordinary values.\n\nEmbedded Arrow metadata has a related consistency problem. It can\npreserve dictionary wrappers around nested values that the Rust reader\ncannot reconstruct. The physical Parquet values and levels are valid in\nthese cases, but `ARROW:schema` describes a representation that prevents\nthe default reader from opening the file.\n\nThis PR is extracted from the native REE writer work in #11273; the\nbroader nested compatibility included here is needed by that series.\n\n# What changes are included in this PR?\n\n- Recursively resolve REE value types when deriving the Parquet schema\nand remove REE wrappers from embedded Arrow metadata, while preserving\nfield names and metadata.\n- Merge enclosing-field and run-value nullability so nullable run values\nuse optional Parquet fields and the corresponding definition levels.\n- Preserve supported scalar dictionary hints, including dictionaries of\n`Utf8View` and `BinaryView`, while removing dictionary wrappers around\nnested values that the reader cannot reconstruct.\n- Recurse through dictionary value types when constructing column\nwriters.\n- Generate nested levels from the writer\u0027s target child fields rather\nthan from child declarations on the incoming array.\n- Compare compatible inputs recursively by logical value type, including\ndictionary/REE wrappers nested under `Struct`, `List`, `LargeList`,\n`ListView`, `LargeListView`, `FixedSizeList`, and `Map`. Container\nvariants must still match; existing string/binary offset-width and view\ncompatibility also applies within them.\n- Validate resolved map-key nullability during Arrow-to-Parquet schema\nconversion, rejecting key schemas that are nullable through their\nencoding wrappers.\n\n# Are these changes tested?\n\nYes. Regression coverage includes:\n\n- Recursive REE schema conversion and propagation of run-value\nnullability.\n- Nested metadata normalization and preservation of supported scalar\nview-dictionary hints.\n- Logically nullable map-key schema rejection, with controls for\nrequired keys and nullable members inside valid key structures.\n- Dense batches written under compatible nested dictionary/REE schemas,\nincluding struct, list, and map children.\n\n# Are there any user-facing changes?\n\nYes. This is a **correctness-driven schema compatibility change**:\n\n- Affected REE fields may become optional where they were previously\ndeclared required, allowing their logical nulls to be represented\ncorrectly.\n- Embedded Arrow metadata is normalized to reader-supported\nrepresentations. Unsupported nested dictionary wrappers are no longer\npreserved, while supported scalar dictionary hints remain intact.\n- Arrow-to-Parquet schema conversion rejects map-key schemas whose\nresolved keys are nullable instead of emitting nullable Parquet map\nkeys.\n\n---------\n\nSigned-off-by: Hippolyte Barraud \u003chippolyte.barraud@datadoghq.com\u003e"
    },
    {
      "commit": "dbd35c9ee095d2f0bb19270e82b3198eba7ee15f",
      "tree": "0ed6a634f00a9c5d1c7cbf18f6a380fa2131b934",
      "parents": [
        "d58a0fce35b67836ac9b2e20a7efe47a584e0a86"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Wed Oct 21 03:17:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 03:17:23 2026 +0000"
      },
      "message": "chore: fix CI; update webpki dependencies (#11752)\n\nUpdates the affected webpki dependencies to patched releases so `cargo\naudit` passes."
    },
    {
      "commit": "d58a0fce35b67836ac9b2e20a7efe47a584e0a86",
      "tree": "135b1b41c3d28462cdaa1da2d6968b7d53adabb6",
      "parents": [
        "6f3d92253941ac2d72572c44ab174656b5f5bc13"
      ],
      "author": {
        "name": "DeviousCardi",
        "email": "115358213+DeviousCardi@users.noreply.github.com",
        "time": "Tue Oct 20 06:03:08 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 06:03:08 2026 +0000"
      },
      "message": "Fix incorrect Decimal statistics for BYTE_ARRAY columns written via ArrowColumnWriter (#11092)\n\n## Summary\nFixes #11073.\n\nWriting a Decimal-logical-type column backed by an Arrow\n`BinaryArray`/`ByteArray` through `ArrowColumnWriter` produced wrong\nmin/max column statistics, because the statistics computation used plain\nunsigned lexicographic `Ord` comparison on the raw\ntwo\u0027s-complement-encoded bytes. The direct `parquet::file::writer`\ncolumn-writer path (and the `FixedSizeBinaryArray` path) already handled\nthis correctly via a signed, decimal-aware comparator.\n\n## Changes\n- `parquet/src/column/writer/mod.rs`: widened\n`compare_greater_byte_array_decimals` to `pub(crate)`; added a shared\n`is_decimal_descr()` helper (used by both this file\u0027s `compare_greater`\nand the Arrow writer) to avoid duplicating the decimal-type-detection\ncheck.\n- `parquet/src/arrow/arrow_writer/byte_array.rs`: `ByteArrayEncoder` now\ndetects decimal columns at construction and uses the signed comparator\nfor both the running min/max computation and the cross-batch min/max\nmerge.\n- `truncate_statistics`/`can_truncate_value` (`column/writer/mod.rs`):\n`BYTE_ARRAY` decimal columns are now excluded from statistics\ntruncation, matching the existing guard already in place for\n`FIXED_LEN_BYTE_ARRAY` decimals — truncating a decimal\u0027s\ntwo\u0027s-complement bytes with unsigned `increment()` could otherwise\nreintroduce a corrupted bound for long decimals.\n- Two regression tests added, based on the issue\u0027s repro and a\ntruncation-specific case.\n\n## Test plan\n- [x] `cargo test -p parquet --lib arrow_writer` — 166 passed\n- [x] `cargo test -p parquet --lib column::writer` — 112 passed\n- [x] `cargo clippy -p parquet --lib --all-targets` — clean\n- [x] `cargo build -p parquet` — clean\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nWritten by Codex.\n\n---------\n\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Ed Seidl \u003cetseidl@users.noreply.github.com\u003e"
    },
    {
      "commit": "6f3d92253941ac2d72572c44ab174656b5f5bc13",
      "tree": "4f898be4a78dcc6f02ed0872f9716fcaff685f22",
      "parents": [
        "1357f25f26ca67634e992bdb35220b4ee59c780f"
      ],
      "author": {
        "name": "Huang Qiwei",
        "email": "qiwei_huang@qq.com",
        "time": "Tue Oct 20 04:36:33 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 04:36:33 2026 +0000"
      },
      "message": "fix(parquet): return an error for RLE run lengths above the spec limit (#11517)\n\n# Which issue does this PR close?\n\n- Closes #11516.\n\n# Rationale for this change\n\nA corrupt RLE / bit-packed hybrid run header can decode to any 64-bit\nvalue. `RleDecoder::reload` multiplied the bit-packed group count by 8\nin `i64` without a check, so reading such a page panics with `attempt to\nmultiply with overflow` when overflow checks are enabled (e.g. debug\nbuilds). Otherwise the length wraps, decoding continues with a bogus run\nlength, and the read fails later with an unrelated error or panics\nelsewhere. `PackedDecoder`, the definition level fast path, parses run\nheaders itself and has the same unchecked multiplication.\n\n# What changes are included in this PR?\n\n- Add `run_len`, which returns the number of values in a run, or an\nerror if it is above 2^31 - 1, the maximum run length allowed by the\n[Parquet\nspec](https://github.com/apache/parquet-format/blob/master/Encodings.md#run-length-encoding--bit-packing-hybrid-rle--3).\nArrow C++ enforces the same limit.\n- Use it in `RleDecoder::reload` and `PackedDecoder::next_rle_block`.\n\n# Are these changes tested?\n\nYes. `test_run_len_limit` checks that the longest runs allowed by the\nspec are accepted and that longer ones are rejected, including headers\nwhose length overflows `i64` and headers that are negative as `i64`.\n`test_packed_decoder_invalid_run_len` covers `PackedDecoder`. Both tests\nfail without this change.\n\n# Are there any significant user-facing changes?\n\nNo.\n\n---\n\nThis PR was written with the help of Claude Code and Codex: the fix, the\ntests and this description were AI-generated.\n\nI have reviewed the change, and it was verified locally, including\nagainst the corrupt file that first triggered the panic.\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Ed Seidl \u003cetseidl@users.noreply.github.com\u003e\nCo-authored-by: Hippolyte Barraud \u003chippolyte.barraud@gmail.com\u003e"
    },
    {
      "commit": "1357f25f26ca67634e992bdb35220b4ee59c780f",
      "tree": "3b966b6018a7e633dec1d9486626649cf1ae270c",
      "parents": [
        "5c70030eaab45ea8427861ffcbe2dc95d2e118c8"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Tue Oct 20 01:16:17 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 01:16:17 2026 +0000"
      },
      "message": "Implement `BatchCoalescer::push_batch_interleaved` (#11519)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\n- Closes #11141\n\n# Rationale for this change\n\nsee #11141\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\n\n# What changes are included in this PR?\n\nadds stump for `push_batch_interleaved` that just uses `interleave` +\n`push_batch` for now just like `push_batch_indices`\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\n# Are these changes tested?\n\nyes 2 new test that cover this code path\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\n\n# Are there any significant user-facing changes?\n\nyes new public method on `batchCoalecer`\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e"
    },
    {
      "commit": "5c70030eaab45ea8427861ffcbe2dc95d2e118c8",
      "tree": "e92b481070be180f5300bf7195182dba149a2c5d",
      "parents": [
        "c1b3cfb6f0d85acb3cccf122f6967c54861d4ad5"
      ],
      "author": {
        "name": "RIchard Baah",
        "email": "137434454+Rich-T-kid@users.noreply.github.com",
        "time": "Mon Oct 19 19:40:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:40:51 2026 +0000"
      },
      "message": "perf(arrow-cmp): add fast paths to dictionary_cmp (#11407)\n\n# Which issue does this PR close?\n\nCloses #11413.\n\n# Rationale\n\nDictionary comparisons go through a generic value comparator for every\nrow. For byte-backed dictionaries, resolving the keys and comparing the\nvalues directly avoids that overhead.\n\n# What changed?\n\nAdds fast paths for matching `Utf8`, `LargeUtf8`, `Binary`,\n`LargeBinary`, and `FixedSizeBinary` dictionary values. Other value\ntypes continue to use the generic path.\n\nThe current `dict_cmp` benchmarks are around 14–19% faster.\n\n# Testing\n\nAdded tests for comparison results, null ordering, fixed-size binary\nvalues, and out-of-bounds indices."
    },
    {
      "commit": "c1b3cfb6f0d85acb3cccf122f6967c54861d4ad5",
      "tree": "061ec9f0e1c719ac7c63ae862066db421f7c64de",
      "parents": [
        "a9455d4a269d1edce4891c0927fed1c2bf24fb72"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 19 18:11:18 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 18:11:18 2026 +0000"
      },
      "message": "chore(deps): bump the all-other-cargo-deps group across 1 directory with 2 updates (#11711)\n\nBumps the all-other-cargo-deps group with 2 updates in the / directory:\n[tokio](https://github.com/tokio-rs/tokio) and\n[wkb](https://github.com/georust/wkb).\n\nUpdates `tokio` from 1.53.2 to 1.53.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/releases\"\u003etokio\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTokio v1.53.3\u003c/h2\u003e\n\u003ch1\u003e1.53.3 (October 13th, 2026)\u003c/h1\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eio: add \u003ccode\u003eAsyncFd::register\u003c/code\u003e and\n\u003ccode\u003eAsyncFd::register_with_interest\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8587\"\u003e#8587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eio: deprecate \u003ccode\u003eAsyncFd::{new, with_interest, try_new,\ntry_with_interest}\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8587\"\u003e#8587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eio: wake and drop \u003ccode\u003eDuplexStream\u003c/code\u003e wakers outside the lock\n(\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8618\"\u003e#8618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emacros: avoid \u003ccode\u003eunreachable_code\u003c/code\u003e in \u003ccode\u003ejoin!\u003c/code\u003e\nand \u003ccode\u003etry_join!\u003c/code\u003e for \u003ccode\u003eInfallible\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8518\"\u003e#8518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eruntime: fix paused time auto-advancing when I/O wakes a task on\n\u003ccode\u003ecurrent_thread\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esync: wake waiters outside the lock when closing a semaphore (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8529\"\u003e#8529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest: fix several flaky tests (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8196\"\u003e#8196\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8427\"\u003e#8427\u003c/a\u003e,\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8609\"\u003e#8609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed (unstable)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ert: keep \u003ccode\u003eio_uring\u003c/code\u003e op alive when submission fails after\npush (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8185\"\u003e#8185\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8185\"\u003e#8185\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8185\"\u003etokio-rs/tokio#8185\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8196\"\u003e#8196\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8196\"\u003etokio-rs/tokio#8196\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8427\"\u003e#8427\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8427\"\u003etokio-rs/tokio#8427\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8518\"\u003e#8518\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8518\"\u003etokio-rs/tokio#8518\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8529\"\u003e#8529\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8529\"\u003etokio-rs/tokio#8529\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8587\"\u003e#8587\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8587\"\u003etokio-rs/tokio#8587\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8595\"\u003e#8595\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8595\"\u003etokio-rs/tokio#8595\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8609\"\u003e#8609\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8609\"\u003etokio-rs/tokio#8609\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8618\"\u003e#8618\u003c/a\u003e:\n\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/pull/8618\"\u003etokio-rs/tokio#8618\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/a85c3f5baa298a6b554fd3700daf0342289881af\"\u003e\u003ccode\u003ea85c3f5\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.53.3 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8639\"\u003e#8639\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/df4443e989689956cc4f8034172c1944b27d8011\"\u003e\u003ccode\u003edf4443e\u003c/code\u003e\u003c/a\u003e\nMerge \u0027tokio-1.51.6\u0027 into \u0027tokio-1.53.x\u0027 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8638\"\u003e#8638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/f00b2e6c932f51126b327cee6f8fa94e7b0e396d\"\u003e\u003ccode\u003ef00b2e6\u003c/code\u003e\u003c/a\u003e\nchore: prepare Tokio v1.51.6 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8637\"\u003e#8637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/482eaddec0347431b37566b45a63f2be62db5ab4\"\u003e\u003ccode\u003e482eadd\u003c/code\u003e\u003c/a\u003e\nruntime: record time wake when unparking tasks on current thread (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/55fbab70dc8b80d7af925e3829f124c2f0d236d7\"\u003e\u003ccode\u003e55fbab7\u003c/code\u003e\u003c/a\u003e\nio: wake and drop \u003ccode\u003eDuplexStream\u003c/code\u003e wakers outside the lock (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8618\"\u003e#8618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/c5e4d9e69c17e0d349f6de349274093e3e41238b\"\u003e\u003ccode\u003ec5e4d9e\u003c/code\u003e\u003c/a\u003e\nruntime: keep io_uring op alive when submission fails after push (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8185\"\u003e#8185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/0448618493188e1c34e284908ef3c17f2edfc6b2\"\u003e\u003ccode\u003e0448618\u003c/code\u003e\u003c/a\u003e\nsync: make \u003ccode\u003etracing_sync\u003c/code\u003e tests synchronous (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8427\"\u003e#8427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/2bc1146787aaaf0546f74bd5e1183d5278f58777\"\u003e\u003ccode\u003e2bc1146\u003c/code\u003e\u003c/a\u003e\nnet: accept ConnectionReset in shutdown_after_tcp_reset test (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8196\"\u003e#8196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/bb28a941498e89aa15dd226d3f04194b414905c3\"\u003e\u003ccode\u003ebb28a94\u003c/code\u003e\u003c/a\u003e\nMerge \u0027tokio-1.51.x\u0027 into \u0027tokio-1.53.x\u0027 (\u003ca\nhref\u003d\"https://redirect.github.com/tokio-rs/tokio/issues/8624\"\u003e#8624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/commit/6b97913c4677dd387f591ad96f8667bbd27e2178\"\u003e\u003ccode\u003e6b97913\u003c/code\u003e\u003c/a\u003e\nmacros: avoid \u003ccode\u003eunreachable_code\u003c/code\u003e in \u003ccode\u003ejoin!\u003c/code\u003e and\n\u003ccode\u003etry_join!\u003c/code\u003e for \u003ccode\u003eInfallible\u003c/code\u003e ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/tokio-rs/tokio/compare/tokio-1.53.2...tokio-1.53.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wkb` from 0.9.2 to 0.9.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/georust/wkb/blob/main/CHANGELOG.md\"\u003ewkb\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.9.3 - 2026-10-14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid stack overflow and huge allocations on malformed WKB by\ncapping GeometryCollection nesting depth and bounding collection\npre-allocation to the remaining buffer size (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/93\"\u003e#93\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eWkbType\u003c/code\u003e variants instead of magic numbers in\ninvalid WKB tests (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/94\"\u003e#94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace removed \u003ccode\u003edoc_auto_cfg\u003c/code\u003e feature with\n\u003ccode\u003edoc_cfg\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated \u003ccode\u003ecore::f64::NAN\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/f15fa9ccabcfbe064ef211f2f0ceec1396e70ab6\"\u003e\u003ccode\u003ef15fa9c\u003c/code\u003e\u003c/a\u003e\nUpdate CHANGELOG for 0.9.3 release (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/99\"\u003e#99\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/217f163d2f613d12fbb6255a86ee16defc1c2d59\"\u003e\u003ccode\u003e217f163\u003c/code\u003e\u003c/a\u003e\nchore: Replace defunct \u003ccode\u003edoc_auto_cfg\u003c/code\u003e with\n\u003ccode\u003edoc_cfg\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/c64afab21266b66436a85084a40cb8261b7b96a1\"\u003e\u003ccode\u003ec64afab\u003c/code\u003e\u003c/a\u003e\nUse WkbType variants instead of magic numbers in invalid WKB tests (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/94\"\u003e#94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/3b76c8f4eafd50973515afc51f681e3c2fe9e118\"\u003e\u003ccode\u003e3b76c8f\u003c/code\u003e\u003c/a\u003e\nchore: Remove deprecated core::f64::NAN (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/a495fb4b0ce553eb4c26f1376ca701c6968f5d89\"\u003e\u003ccode\u003ea495fb4\u003c/code\u003e\u003c/a\u003e\nPrepare for 0.9.3 release (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/95\"\u003e#95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/db13685f9fc7ba4b1e3fd0d53888bc09f21855d3\"\u003e\u003ccode\u003edb13685\u003c/code\u003e\u003c/a\u003e\nBound recursion depth and pre-allocation when parsing untrusted WKB (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/georust/wkb/commit/58f58f6c98a761fdaab99041b46705d4ad3142cf\"\u003e\u003ccode\u003e58f58f6\u003c/code\u003e\u003c/a\u003e\nMake hyperlinks in README clickable (\u003ca\nhref\u003d\"https://redirect.github.com/georust/wkb/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/georust/wkb/compare/v0.9.2...v0.9.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s major version (unless you unignore this specific\ndependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this\ngroup update PR and stop Dependabot creating any more for the specific\ndependency\u0027s minor version (unless you unignore this specific\ndependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR\nand stop Dependabot creating any more for the specific dependency\n(unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore\nconditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will\nremove the ignore condition of the specified dependency and ignore\nconditions\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a9455d4a269d1edce4891c0927fed1c2bf24fb72",
      "tree": "b4014b87708c8b3fd8b189746ee1593382806cab",
      "parents": [
        "837b6703f0ea8e33b891584511bb99d84794d2ef"
      ],
      "author": {
        "name": "Jeffrey Vo",
        "email": "jeffrey.vo.australia@gmail.com",
        "time": "Mon Oct 19 18:07:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 18:07:00 2026 +0000"
      },
      "message": "fix: use correct length in runarray validation (#11668)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\n- Closes #11587\n\n# Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\n\nFix incorrect validation of run arrays\n\n# What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\nUse correct parent logical length when validating run values\n\n# Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\n\nYes\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e\n\nNo\n\n---------\n\nCo-authored-by: Andrew Lamb \u003candrew@nerdnetworks.org\u003e"
    },
    {
      "commit": "837b6703f0ea8e33b891584511bb99d84794d2ef",
      "tree": "5b54cec4047253defcc7ad3a0d4345d49ddb32d2",
      "parents": [
        "ee9f2a38f640f7147b2e849ea4fafa7f4333a45a"
      ],
      "author": {
        "name": "ump45nose",
        "email": "52391318+ump45nose@users.noreply.github.com",
        "time": "Mon Oct 19 16:55:37 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:55:37 2026 +0000"
      },
      "message": "fix(parquet): return an error when the footer metadata length exceeds the file in ParquetMetaDataPushDecoder (#11697)\n\n# Which issue does this PR close?\n\n- Closes #11690.\n\n# Rationale for this change\n\n`ParquetMetaDataPushDecoder::try_decode` computed the metadata start as\n`file_len - footer_len - metadata_len` without checking the footer\u0027s\nmetadata length against the file length. A corrupt footer that claims\nmore metadata than the file holds made that subtraction underflow: it\npanicked with overflow checks on, and without them the wrapped value\nlater panicked in `Bytes::slice`. `ParquetMetaDataReader` already\nreturns an EOF error for the same bytes.\n\n# What changes are included in this PR?\n\n`try_decode` in `parquet/src/file/metadata/push_decoder.rs` uses\n`checked_sub` for the metadata start and returns the same `EOF: Parquet\nfile too small. Size is N but need M` error as `ParquetMetaDataReader`\nwhen the footer and metadata don\u0027t fit in the file.\n\n# Are these changes tested?\n\nYes. `test_metadata_decoder_metadata_length_exceeds_file` builds the\n12-byte file from the issue (4 data bytes and a footer claiming 1000\nbytes of metadata) and checks that `try_decode` returns `EOF: Parquet\nfile too small. Size is 12 but need 1008`. Without the fix the test\npanics with `attempt to subtract with overflow`.\n\nI also ran `cargo test -p parquet --lib push_decoder`, `cargo fmt -p\nparquet -- --check` and `cargo clippy -p parquet --lib --tests -- -D\nwarnings`.\n\n# Are there any significant user-facing changes?\n\nNo. Corrupt files that used to panic now return an error.\n\nAI disclosure: I used an AI coding assistant to write the fix, the test\nand this description, and I reviewed all of it. The part worth a\nreviewer\u0027s look is that the decoder is left in its intermediate state\nafter this error, the same as for the other decode errors in\n`try_decode` (for example a bad footer magic), rather than being\nrestored so the call can be retried."
    },
    {
      "commit": "ee9f2a38f640f7147b2e849ea4fafa7f4333a45a",
      "tree": "7d17893d639920ced348105ab597daf5b0d671cd",
      "parents": [
        "3327fbef1c3381a149e9a413a5bb22813e11639e"
      ],
      "author": {
        "name": "Jeffrey Vo",
        "email": "jeffrey.vo.australia@gmail.com",
        "time": "Mon Oct 19 16:26:07 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:26:07 2026 +0000"
      },
      "message": "fix: account for offset when building RunArray from ArrayData (#11660)\n\n# Which issue does this PR close?\n\n\u003c!--\nIt is not necessary to raise an issue, but it is encouraged if it is a\nnon-trivial\nenhancement/bug.\n\nIf this PR relates to an existing issue, but does not fully resolve it,\nplease change\nthe wording below from \"Closes #NNN\" to \"Relates to #NNN\" or \"Part of\n#NNN\" to avoid\nfalse closing an issue.\n--\u003e\n\nNone\n\n# Rationale for this change\n\n\u003c!--\nWhy are you proposing this change? If this is already explained clearly\nin the\nissue then this section is not needed. Explaining clearly why changes\nare proposed\nhelps reviewers understand your changes and offer better suggestions for\nfixes.\n\nPlease try to explain the problem you are trying to solve in terms of\nthe user-visible\nbehavior, rather than the implementation.\n--\u003e\n\nCorrectness issue when building run arrays from array data\n\n# What changes are included in this PR?\n\n\u003c!--\nThere is no need to duplicate the description in the issue here but it\nis\nsometimes worth providing a summary of the individual changes in this\nPR.\n--\u003e\n\nApply arraydata offset to run ends child array when constructing\nrunarray from data\n\n# Are these changes tested?\n\n\u003c!--\nWe typically require tests for all PRs in order to:\n1. Prevent the code from being accidentally broken by subsequent changes\n2. Serve as another way to document the expected behavior of the code\n\nIf tests are not included in your PR, please explain why (for example,\nare they\ncovered by existing tests, if so identify these tests)?\n\nIf this PR claims a performance improvement, please include evidence\nsuch as\nbenchmark results.\n\nDO NOT simply paste a list of commands ran to verify the code; this is\nwhat our\nCI is for and it pollutes the PR. ONLY explain if testing was included\nwith this\nPR, or why it wasn\u0027t.\n--\u003e\n\nyes\n\n# Are there any significant user-facing changes?\n\n\u003c!--\nSignificant user-facing changes include:\n- Breaking public API change\n- Significant change to existing functionality (e.g. function returns\nsomething different)\n\nThese need to be explicitly called out to ensure we have proper\ndocumentation if\nrequired and to ensure we follow proper semantic versioning.\n\nDO NOT restate the changes of this PR; if a bug was fixed and already\nexplained\nabove, we don\u0027t need this to be restated as a user-facing change.\n--\u003e\n\nno"
    },
    {
      "commit": "3327fbef1c3381a149e9a413a5bb22813e11639e",
      "tree": "cfcaa635adff9a4f484cfd6b46913f327f0e9eaf",
      "parents": [
        "49219f867f77422525627a07b84cd7a87207dcbe"
      ],
      "author": {
        "name": "ump45nose",
        "email": "52391318+ump45nose@users.noreply.github.com",
        "time": "Mon Oct 19 01:18:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 01:18:27 2026 +0000"
      },
      "message": "fix(arrow-data): account for sparse union parent offset in MutableArrayData (#11693)\n\n# Which issue does this PR close?\n\n- Closes #11686.\n\n# Rationale for this change\n\n`MutableArrayData::extend` on sparse union `ArrayData` with a nonzero\noffset took the type ids from the right rows but copied the children\u0027s\nvalues from the rows before the offset. So each type id was paired with\nthe wrong value. A sparse union\u0027s children are not sliced by the\nparent\u0027s offset, and `array.buffer::\u003ci8\u003e(0)` applies the offset only to\nthe type ids.\n\n# What changes are included in this PR?\n\n`build_extend_sparse` in `arrow-data/src/transform/union.rs` adds\n`array.offset()` to `start` before it extends the children, the same way\n#10934 did for structs and #11636 did for fixed size lists. The overflow\nchecks match those two fixes. Dense unions are not changed, because\ntheir offsets buffer already gives each row\u0027s child index.\n\n# Are these changes tested?\n\nYes. `test_extend_sparse_union_accounts_for_parent_offset` in\n`arrow-data/src/data.rs` (next to the struct and fixed size list tests)\nbuilds a sparse union with two children and offset 1, extends it, and\nchecks the type ids and both children. Without the fix, child `a` comes\nback as `[10, 20]` instead of `[20, 30]`.\n\nI also ran `cargo test -p arrow-data`, `cargo test -p arrow --test\narray_transform`, `cargo test -p arrow-select --lib` and `cargo clippy\n-p arrow-data --all-targets -- -D warnings`.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI disclosure: I used an AI coding assistant to write the fix, the test\nand this description, and I reviewed all of it. The part worth a\nreviewer\u0027s look is that the type ids keep using the already offset\nbuffer while only the children get the added offset."
    },
    {
      "commit": "49219f867f77422525627a07b84cd7a87207dcbe",
      "tree": "9374d4a98274a4bd78bc83b31d9b0962c0b643b4",
      "parents": [
        "1a52c3440523103b9457b991e0b6342c9d8a0950"
      ],
      "author": {
        "name": "Aleksandar Zecevic",
        "email": "aleksandar.zecevic@databricks.com",
        "time": "Mon Oct 19 01:03:01 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 01:03:01 2026 +0000"
      },
      "message": "Write empty validity buffers for arrays without nulls in IPC writer (#11694)\n\n# Which issue does this PR close?\n\nN/A\n\n# Rationale for this change\n\nThe IPC writer writes a validity bitmap for every array that has a\nvalidity buffer, also when the array has no nulls. If the array has no\nnull buffer, `write_array_data` creates an all-ones bitmap of `ceil(len\n/ 8)` bytes for it. Readers do not use it: the arrow-rs reader, like the\nC++ reader, ignores the validity buffer when `null_count` is 0.\n\nThe format allows a 0-length buffer instead. [`FieldNode.null_count` in\n`Message.fbs`](https://github.com/apache/arrow/blob/9f0341314ca96eb58081d4132c77b460d880b2b0/format/Message.fbs#L39-L41):\n\n\u003e Fields with null_count \u003d\u003d 0 may choose not to write their physical\nvalidity bitmap out as a materialized buffer, instead setting the length\nof the bitmap buffer to 0.\n\nThe\n[C++](https://github.com/apache/arrow/blob/9f0341314ca96eb58081d4132c77b460d880b2b0/cpp/src/arrow/ipc/writer.cc#L178-L187),\n[Go](https://github.com/apache/arrow-go/blob/a6e44ad7a6aaa4c02a7d277032af8eebd5cc2508/arrow/ipc/writer.go#L634-L638)\nand\n[JS](https://github.com/apache/arrow-js/blob/43c9547baf3766e79eb44d3fedcd0787f899d956/src/visitor/vectorassembler.ts#L95-L98)\nwriters already do this. So arrow-rs already reads such buffers, in the\nintegration tests and in the `arrow-testing` gold files, which C++\nwrote.\n\n# What changes are included in this PR?\n\n- `write_array_data` writes a 0-length validity buffer when `null_count`\nis 0. This also covers sliced arrays whose null buffer has no nulls in\nthe slice. Arrays with nulls are written as before.\n- `test_decimal128_alignment8_is_unaligned` relied on the all-ones\nbitmap to move the decimal values to an 8-byte offset. It now uses a\nnullable column with a null, so it gets the expected misalignment error\nwith both the old and the new writer.\n- The exact overage limits in the arrow-flight `verify_encoded_split`\ntests go down, for example from 120 to 88.\n\n# Are these changes tested?\n\nYes. `test_write_empty_validity_buffer_without_nulls` encodes a batch\nwith three columns: an array without a null buffer, a slice without\nnulls that keeps its null buffer, and an array with a null. It checks\nthe validity buffer lengths in the encoded message (`[0, 0, 1]`) and the\nround trip. Without the change, the first two columns get 1-byte bitmaps\nand the test fails.\n\n# Are there any significant user-facing changes?\n\nThe IPC output for arrays without nulls is smaller. The spec allows\nthis, and the C++, Java, Go, JS, C# and nanoarrow readers accept it.\nCode that compares IPC output byte for byte, or expects exact sizes,\nwill see a difference. There are no API changes."
    },
    {
      "commit": "1a52c3440523103b9457b991e0b6342c9d8a0950",
      "tree": "14cbe5dbf1e78bf1d2ca73303b20e42c3e6c3f92",
      "parents": [
        "33d338ddf661b6e85364a9b0bd4d367c3468257d"
      ],
      "author": {
        "name": "Adam Reeve",
        "email": "adam.reeve@gr-oss.io",
        "time": "Mon Oct 19 00:41:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 00:41:16 2026 +0000"
      },
      "message": "chore: use the correct testing submodule commits in release verification (#11610)\n\n# Which issue does this PR close?\n\n- Closes #10078\n\n# Rationale for this change\n\nThe `bad_data::test_invalid_files` test has caused issues for people\nduring release verification at least 3 times now, when new invalid files\nhave been added to `parquet-testing` since the version of that\nrepository that\u0027s referenced by the release version\u0027s source repository.\n\n# What changes are included in this PR?\n\n* Write a `.gitmodules-versions` file and include it in the source\ntarball generated by `dev/release/create-tarball.sh`\n* In `verify-release-candidate.sh`, read commits to check out from\n`.gitmodules-versions`\n\n# Are these changes tested?\n\nYes, as much as I could locally without a full RC.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "33d338ddf661b6e85364a9b0bd4d367c3468257d",
      "tree": "9f2a9290f686f6623ba8bcfee0bf621c7be3bcc2",
      "parents": [
        "3658fc01e8fed4179d476aa3efc34b2723f89dd3"
      ],
      "author": {
        "name": "Adrian Garcia Badaracco",
        "email": "1755071+adriangb@users.noreply.github.com",
        "time": "Sun Oct 18 14:28:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 14:28:16 2026 +0000"
      },
      "message": "Parquet: list the dictionary page first in page_encoding_stats (#11682)\n\n# Which issue does this PR close?\n\n- Closes https://github.com/apache/arrow-rs/issues/11659\n\n# Rationale for this change\n\nSince 59.0.0, `ArrowWriter` writes the dictionary page\u0027s\n`encoding_stats` entry after the data page entries. The file layout did\nnot change: the dictionary page is still written first. Arrow C++\n([`IsColumnChunkFullyDictionaryEncoded`](https://github.com/apache/arrow/blob/9f0341314ca96eb58081d4132c77b460d880b2b0/cpp/src/parquet/file_reader.cc#L63-L88))\nrequires `encoding_stats[0]` to be the dictionary page. With the 59.x\norder, Arrow C++ does not see any parquet-rs column chunk as fully\ndictionary encoded, so it cannot use its dictionary fast path.\n\n| | `encoding_stats` (file order) |\n|---|---|\n| before this PR | `DATA_PAGE RLE_DICTIONARY`, `DICTIONARY_PAGE PLAIN` |\n| after this PR (and 58.x) | `DICTIONARY_PAGE PLAIN`, `DATA_PAGE\nRLE_DICTIONARY` |\n\nThe new order was not a design goal of\nhttps://github.com/apache/arrow-rs/pull/10020. It was a side effect: the\ndeferred-ordering page writer gets the dictionary page last, and the\nstats were recorded in the order the pages were produced. Review\naccepted this because the spec defines the list as a set\n(https://github.com/apache/arrow-rs/pull/10051 was closed for that\nreason). But a known reader depends on the order, and restoring it\nchanges only metadata, so the change has no memory or throughput cost.\n\n# What changes are included in this PR?\n\n`GenericColumnWriter::write_dictionary_page` now inserts the dictionary\nentry at the front of `encoding_stats` instead of appending it. The\ndictionary page is always laid out first, on both the deferred (Arrow)\npath and the `SerializedFileWriter` path, so the stats now follow file\norder. On the non-deferred path the list is still empty when the\ndictionary is written, so its output does not change. When the writer\nfalls back from dictionary to plain encoding, the result is `DICTIONARY,\nRLE_DICTIONARY data, PLAIN data`, which also matches the file layout.\n\n# Are these changes tested?\n\nYes. The new `dictionary_page_encoding_stats_lists_dictionary_first`\ntest (adapted from https://github.com/apache/arrow-rs/pull/10051) checks\nthat `stats[0]` is the dictionary page. It fails on `main` and passes\nwith this change. The existing column writer and arrow writer tests\npass.\n\n# Are there any user-facing changes?\n\nOnly the order of `page_encoding_stats` in files written by\n`ArrowWriter`. It goes back to the order used before 59.0.0.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "3658fc01e8fed4179d476aa3efc34b2723f89dd3",
      "tree": "13b3510462eba6c22394364ec07bd41f7e5aa15f",
      "parents": [
        "ccc426cc27770b1327cc0c0c9d7e6584579965b6"
      ],
      "author": {
        "name": "Kyon",
        "email": "251157463+skyon0522-ai@users.noreply.github.com",
        "time": "Sun Oct 18 09:46:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 09:46:46 2026 +0000"
      },
      "message": "Fix IPC serialization of unions in sliced lists (#11651)\n\n# Which issue does this PR close?\n\n- Closes #11586\n\n# Rationale for this change\n\nWriting a union inside a sliced List or LargeList currently writes\nunsliced union buffers despite the sliced row count. Dense unions can\nread back values from different rows, while sparse unions can fail with\na child-length mismatch.\n\n# What changes are included in this PR?\n\nSlice union type-ID and dense-offset buffers to the selected row range,\nand apply that row slice to sparse children before encoding. Retain\ndense children and the absolute offset values within their existing\nchild views.\n\n# Are these changes tested?\n\nA regression test round-trips List arrays containing dense or sparse\nunions through both File and Stream writers. It covers full,\nnonzero-offset and empty slices, nullable values, custom type IDs, and\nnonmonotonic dense offsets, comparing decoded rows and validating\ninput/output data.\n\nAI assistance was used to analyze the serialization path and draft the\ncode, regression test, and this description.\n\n# Are there any significant user-facing changes?\n\nNo public API changes."
    },
    {
      "commit": "ccc426cc27770b1327cc0c0c9d7e6584579965b6",
      "tree": "1d70d450343eae90561dc33c27e9f67639215155",
      "parents": [
        "534da94754aae712849ce46e6dc06f9eedf39979"
      ],
      "author": {
        "name": "ranflarion",
        "email": "ran@flarion.io",
        "time": "Sun Oct 18 09:38:54 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 09:38:54 2026 +0000"
      },
      "message": "fix: assemble split IPC messages in StreamDecoder at their declared size (#11648)\n\n# Which issue does this PR close?\n\n- Closes #11647.\n\n# Rationale for this change\n\n`StreamDecoder` assembles a message that arrives split across input\nbuffers in a scratch `MutableBuffer` that starts empty and doubles as\nthe pieces are copied in, and the decoded batch is zero-copy over that\nbuffer, so it keeps between 1x and 2x its body alive. A reader that\nfeeds fixed-size chunks hits this on nearly every message large enough\nto span one: DataFusion 55 reads spill files back in 128 KiB chunks, and\na spilling sort\u0027s read-back batches held 2,969 MiB for 2,198 MiB of\ndata. `StreamReader` avoids it since #10522 by reading a body into\n`min(body_length, MAX_PREALLOC_BYTES)` up front.\n\n# What changes are included in this PR?\n\nWhen the first bytes of a message flatbuffer or body are copied into the\nempty scratch buffer, the decoder now reserves the declared length,\ncapped at `MAX_PREALLOC_BYTES` the same way `read_body_bounded` caps it.\nA message up to 64 MiB is therefore allocated once at its size, while an\nimplausible declared length still reserves at most 64 MiB and leaves the\ndecoder waiting for bytes that never arrive. Larger messages keep\ngrowing geometrically past the cap, as they do in `StreamReader`. The\npath that slices a message straight out of a single input buffer is\nunchanged.\n\n# Are these changes tested?\n\nYes, two tests in `arrow-ipc/src/reader/stream.rs`.\n`test_split_body_is_buffered_at_its_declared_size` feeds a 99,272 byte\nstream one byte at a time and checks the decoded batch holds no more\nthan the stream: without the change it holds 131,072 bytes.\n`test_implausible_body_length_reserves_a_bounded_buffer` declares body\nlengths of `i64::MAX` and `1 \u003c\u003c 50` and checks the decoder keeps waiting\nfor the body: reserving the declared length without the cap fails it\nwith `MemoryError(\"invalid allocation layout for requested capacity\")`.\n\nIn the DataFusion sort from the issue, built against arrow 59.3 with\nthis change, peak native allocation went from 201.8 MiB to 161.0 MiB.\n\nThe `arrow-ipc` suite passes (138 library tests, including the two\nabove), along with `cargo fmt --all -- --check` and `cargo clippy -p\narrow-ipc --all-targets --all-features -- -D warnings`.\n\n# Are there any user-facing changes?\n\nNo API changes. Batches decoded from split messages hold less memory. No\nbreaking changes."
    },
    {
      "commit": "534da94754aae712849ce46e6dc06f9eedf39979",
      "tree": "cc5c008d1ee4b140329ebec9d882b00fa3390752",
      "parents": [
        "f0e855f02ffe3c09ebe051558c21a5b52f7648e6"
      ],
      "author": {
        "name": "ump45nose",
        "email": "52391318+ump45nose@users.noreply.github.com",
        "time": "Sun Oct 18 09:36:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 09:36:23 2026 +0000"
      },
      "message": "fix(arrow-cast): truncate Timestamp to Date64 casts to whole days (#11632)\n\n# Which issue does this PR close?\n\n- Closes #11592.\n\n# Rationale for this change\n\n`Timestamp -\u003e Date64` kept the time of day, so the result could hold\nvalues that are not multiples of `86_400_000`, which the `Date64` docs\nsay are invalid. `Timestamp -\u003e Date32` already truncates to the date, so\nthe two casts disagreed.\n\n# What changes are included in this PR?\n\nThe four `Timestamp -\u003e Date64` arms now go through a new\n`timestamp_to_date64` helper next to `timestamp_to_date32`, using the\nsame rules:\n\n- Without a timezone, the value is floored to the start of its UTC day,\nso timestamps before the epoch land on the previous day. Flooring\n`i64::MIN` milliseconds to a day overflows, so that case is null for a\nsafe cast and an error otherwise, the same as the existing seconds\noverflow.\n- With a timezone, the result is the local date, which answers the\nquestion @mbutrovich raised on the issue: for `-05:00`,\n`1970-01-01T00:00:01Z` becomes `1969-12-31`. In other words, `cast(ts,\nDate64)` now equals `cast(cast(ts, Date32), Date64)`. I went with this\nbecause it matches `Date32`; if you\u0027d prefer flooring the UTC value for\nzoned timestamps instead, that\u0027s an easy change.\n\n# Are these changes tested?\n\nYes. `test_cast_timestamp_to_date64` now expects whole days, and a new\n`test_cast_timestamp_to_date64_whole_days` covers all four units\n(including a timestamp just before the epoch), the timezone case checked\nagainst the `Date32` path, and the overflow case.\n\n# Are there any significant user-facing changes?\n\nYes, the cast returns different values than before: any `Timestamp -\u003e\nDate64` cast that used to keep a time of day now returns midnight, and\nzoned timestamps return the local date. Values that were outside\nchrono\u0027s date range in a zoned array now become null (or an error for a\nnon-safe cast), as they already do for `Date32`.\n\nAI disclosure: I used an AI coding assistant to write the change, tests,\nand this description. I reviewed the diff and the test expectations.\n\nCo-authored-by: ump45nose \u003cump45nose@users.noreply.github.com\u003e"
    },
    {
      "commit": "f0e855f02ffe3c09ebe051558c21a5b52f7648e6",
      "tree": "61c3b47b841b45f780a2d91c9d2a8561950bacf7",
      "parents": [
        "88b5c5a3952bc715fa8d13d76e45c407717b12b6"
      ],
      "author": {
        "name": "Michael Kleen",
        "email": "mkleen@gmail.com",
        "time": "Sun Oct 18 09:33:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 09:33:29 2026 +0000"
      },
      "message": "fix: Fix zip with a short falsy scalar that still has buffers (#11625)\n\n# Which issue does this PR close?\n\n- Closes #11593\n\n# Rationale for this change\n\nA short falsy value is stored inline in its view, but a scalar sliced\nfrom a larger array can keep that array\u0027s buffers. Checking for buffers\nthen wrongly rewrote the view. Check the value\u0027s length instead.\n\n# What changes are included in this PR?\n\nSee above. \n\n# Are these changes tested?\n\nYes.\n\n# Are there any significant user-facing changes?\n\nNo."
    },
    {
      "commit": "88b5c5a3952bc715fa8d13d76e45c407717b12b6",
      "tree": "4ec17f4c51233a81443059e7b0e9e668e31b8e8c",
      "parents": [
        "df2f8f454e8a29446813bc72cf613f9185d261a1"
      ],
      "author": {
        "name": "Kyon",
        "email": "251157463+skyon0522-ai@users.noreply.github.com",
        "time": "Sun Oct 18 09:31:09 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 09:31:09 2026 +0000"
      },
      "message": "Respect dictionary value nulls in aggregates (#11650)\n\n# Which issue does this PR close?\n\n- Closes #11596\n\n# Rationale for this change\n\nDictionary values can be null even when their keys are valid. Min/max\ncurrently include the underlying payload of those null values, and both\nsum APIs return a zero result when all referenced values are null\ninstead of returning `None`.\n\n# What changes are included in this PR?\n\nUse the logical null mask for min/max and return a dictionary sum only\nafter encountering a non-null row. Preserve the existing zero-seeded\nwrapping and checked accumulation.\n\n# Are these changes tested?\n\nA regression test compares all four aggregate APIs with equivalent\nprimitive-array rows, covering mixed key/value nulls, entirely null\nresults, unused null dictionary values, and empty input.\n\nAI assistance was used to analyze the aggregate paths and draft the\ncode, regression test, and this description.\n\n# Are there any significant user-facing changes?\n\nNo public API changes."
    },
    {
      "commit": "df2f8f454e8a29446813bc72cf613f9185d261a1",
      "tree": "57d78261ce3bb8800e6a9c559ff3c599c31a25ab",
      "parents": [
        "b9d56a732a23ad001dc9a8b3c08586cd96cbc878"
      ],
      "author": {
        "name": "Sean",
        "email": "2579935313@qq.com",
        "time": "Sun Oct 18 04:58:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 04:58:15 2026 +0000"
      },
      "message": "feat(parquet): convert INT96 timestamp statistics (#11348)\n\n# Which issue does this PR close?\n\nPart of https://github.com/apache/datafusion/issues/25484.\n\n# Rationale for this change\n\n`StatisticsConverter` currently returns null bounds for INT96\ntimestamps, preventing pruning even when a file advertises the new\ntimestamp column order.\n\n# What changes are included in this PR?\n\n- Convert row-group and page INT96 bounds directly to the requested\ntimestamp unit, preserving timezone and the reader\u0027s pre-epoch rounding.\n- Discard both bounds when either overflows the target unit. The reader\nwraps out-of-range values, so keeping only the opposite bound could\nincorrectly prune matching rows.\n- Reject deprecated signed INT96 bounds.\n- Document that callers must verify `INT96_TIMESTAMP_ORDER` in the file\nfooter before using these bounds for pruning.\n\nThis updates the existing converter APIs. The direct-from-bytes API\nproposed in #11285 is separate and should use the same conversion rules\nif it lands first.\n\nThis review update used AI assistance for conversion reuse, timestamp\niterators, and regression tests.\n\n# Are these changes tested?\n\nNew real-file statistics tests cover all four timestamp units,\ntimezones, null groups, negative sub-second timestamps, exact i64\nboundaries, overflow on either endpoint, and agreement with decoded\nvalues. An additional test covers missing, invalid, and deprecated\nbounds. Existing INT64 timestamp behavior remains covered by the\nstatistics suite. Coverage also includes signed Julian-day extremes and\none-sided INT64 timestamp statistics.\n\n# Are there any significant user-facing changes?\n\nINT96 timestamp statistics become available when representable. No\npublic API changes."
    },
    {
      "commit": "b9d56a732a23ad001dc9a8b3c08586cd96cbc878",
      "tree": "8340a0e26d61bebe6a1b9628bb0b866194ebcba8",
      "parents": [
        "a9341121687aea7881063ff07b88c14967ee9a9d"
      ],
      "author": {
        "name": "RanaPriyansh",
        "email": "87440899+RanaPriyansh@users.noreply.github.com",
        "time": "Sun Oct 18 04:00:25 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 04:00:25 2026 +0000"
      },
      "message": "Reject mismatched input schemas in FlightDataEncoder (#11293)\n\n# Which issue does this PR close?\n\n- Closes #4234.\n\n# Rationale for this change\n\n`FlightDataEncoder` can encode a batch whose input schema differs from\nthe stream schema. In Hydrate mode, an extra column can be omitted\nwithout an error.\n\n# What changes are included in this PR?\n\nThe encoder compares each batch\u0027s original schema with the supplied\nschema or the first batch\u0027s schema. It returns a schema error before\ndictionary hydration or batch encoding when schemas differ.\n\n# Are these changes tested?\n\nPublic encoder-stream tests cover first and later batch mismatches in\nHydrate and Resend modes. They cover extra columns, field names, types,\nnullability, and metadata. A matching-schema control round-trips changed\ndictionary values.\n\n`cargo test -p arrow-flight`, `cargo test -p arrow-flight\n--all-features`, the Flight SQL example tests, Clippy, format, and crate\ndocumentation checks pass locally.\n\n# Are there any user-facing changes?\n\nStreams with mismatched input batch schemas now return an error and end.\nMatching-schema streams and the encoded schema remain unchanged.\n\nCodex used. AI generated the implementation, tests, and PR description."
    },
    {
      "commit": "a9341121687aea7881063ff07b88c14967ee9a9d",
      "tree": "105dea7905058936c0ec8afe922eeb79cdcf21f6",
      "parents": [
        "f53b221bd6a002d6ca1ed4775b695e1df51d087f"
      ],
      "author": {
        "name": "Kyon",
        "email": "251157463+skyon0522-ai@users.noreply.github.com",
        "time": "Sun Oct 18 03:24:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 03:24:16 2026 +0000"
      },
      "message": "Fix sliced sparse union ArrayData conversion (#11649)\n\n# Which issue does this PR close?\n\n- Closes #11582\n\n# Rationale for this change\n\nConverting sliced sparse union `ArrayData` into an array currently reads\nvalues outside the slice. A single-child union can also return a logical\nnull mask longer than the resulting array.\n\n# What changes are included in this PR?\n\nApply the parent offset and length to sparse child data before\nconstructing the child arrays. Dense children retain their existing\noffsets and lengths.\n\n# Are these changes tested?\n\nRegression tests compare conversion from sliced `ArrayData` with direct\nunion slicing, including nonzero offsets, truncation at offset zero,\nempty slices, custom type IDs, nullable values, and a dense-union\ncontrol.\n\nAI assistance was used to analyze the conversion path and draft the\ncode, regression tests, and this description.\n\n# Are there any significant user-facing changes?\n\nNo public API changes."
    },
    {
      "commit": "f53b221bd6a002d6ca1ed4775b695e1df51d087f",
      "tree": "b40f0652ff9b8655c1d78d31dad6ff014d67fd25",
      "parents": [
        "c0970925a2bb29efe2f855305a76986959171685"
      ],
      "author": {
        "name": "Efe",
        "email": "gokdemirefe1903@gmail.com",
        "time": "Sun Oct 18 03:03:50 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 03:03:50 2026 +0000"
      },
      "message": "fix: handle zero-length null extension for empty unions (#11209)\n\n## Summary\n\n`MutableArrayData::try_extend_nulls(0)` remains a no-op for empty\nunions. For non-empty sparse and dense unions, null extension now uses a\nnullable child field rather than assuming the first child is nullable.\n\nFixes #11198\n\n## Testing\n\n- `cargo test --locked --manifest-path arrow-data/Cargo.toml -p\narrow-data --lib` (64 passed)\n- `cargo fmt --all -- --check`\n- `git diff --check HEAD^ HEAD`\n\nAI assistance was used during implementation.\n\n---------\n\nSigned-off-by: Efe Gökdemir \u003cefe@rexcode.co.uk\u003e"
    },
    {
      "commit": "c0970925a2bb29efe2f855305a76986959171685",
      "tree": "014f3611f48b37861672acf98b43e2e9d7cd4d11",
      "parents": [
        "24c53c7b0803d32575e5bcb302bf78065ded31b6"
      ],
      "author": {
        "name": "ump45nose",
        "email": "52391318+ump45nose@users.noreply.github.com",
        "time": "Sun Oct 18 02:37:20 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 02:37:20 2026 +0000"
      },
      "message": "fix(arrow-data): check view nulls at the right index in `ArrayData` equality (#11642)\n\n# Which issue does this PR close?\n\n- Closes #11583.\n\n# Rationale for this change\n\nWhen a list, list view, fixed-size list or struct compares a `Utf8View`\n/ `BinaryView` child range that doesn\u0027t start at 0, `byte_view_equal`\nread the null bit of the wrong child slot. Arrays that only differ in\nthe data under a null compared unequal, and a real difference in a valid\nslot could be skipped and compare equal.\n\n# What changes are included in this PR?\n\n`byte_view_equal` now checks `lhs.is_null(lhs_start + idx)` instead of\n`lhs.is_null(idx)`, since `idx` counts from the start of the compared\nrange. The views it compares were already offset by `lhs_start`, so this\nonly lines the null check up with them.\n\n# Are these changes tested?\n\nYes. `test_list_of_view_child_nulls_past_start` in\n`arrow/tests/array_equal.rs` builds a two-row list over a `Utf8View` and\na `BinaryView` child and compares the second row sliced off, covering\nboth directions: two `[[null]]` values with different hidden data (now\nequal) and two valid rows with different values next to a null at child\nindex 0 (now unequal). It fails without the fix.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI disclosure: I used an AI coding assistant to write the fix, the test\nand this description, and I reviewed all of it.\n\nCo-authored-by: ump45nose \u003cump45nose@users.noreply.github.com\u003e"
    },
    {
      "commit": "24c53c7b0803d32575e5bcb302bf78065ded31b6",
      "tree": "64f86907e9a36e704ce50ec9eff3b349ad2ddf56",
      "parents": [
        "a2b405fe22b6657fd4f69eb139e6836cafa3b55f"
      ],
      "author": {
        "name": "Chang Yong Lik",
        "email": "51813538+ahlag@users.noreply.github.com",
        "time": "Sun Oct 18 02:36:03 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 02:36:03 2026 +0000"
      },
      "message": "fix(arrow-array): use the field\u0027s type id in dense union logical_nulls (#11643)\n\n# Which issue does this PR close?\n\n- Closes #11595.\n\n# Rationale for this change\n\nA dense union with a single field whose type id is not 0 reported no\nlogical nulls, so `logical_null_count`, `is_null` and `is_not_null` were\nwrong for it.\n\n# What changes are included in this PR?\n\nThe single-field path of `UnionArray::logical_nulls` passed the child\nnulls to `gather_nulls` under type id 0. It now passes the field\u0027s own\ntype id, enumerating `self.fields` the same way `fields_logical_nulls`\ndoes.\n\n# Are these changes tested?\n\nYes, `test_dense_union_one_field_nonzero_type_id_logical_nulls`. It\nfails without the fix.\n\n# Are there any significant user-facing changes?\n\nNo.\n\nAI use: I used Claude Code to find the cause and write the fix and test.\nI reviewed the change and checked that the test fails without the fix."
    }
  ],
  "next": "a2b405fe22b6657fd4f69eb139e6836cafa3b55f"
}
