# Release history

Note: Releases in the 4.3.x series were developed in parallel with v5.0 on a separate branch and are not included here. See the [list of 4.x releases](https://github.com/scikit-hep/uproot5/releases?q=%224.3%22+OR+%22v4.3%22&expanded=true) for details.

## Unreleased ([main branch](https://github.com/scikit-hep/uproot5) on GitHub)

* PR [#1774](https://github.com/scikit-hep/uproot5/pull/1774): chore: require toml-sort>=0.25.0 for pretty-format-toml.
* PR [#1776](https://github.com/scikit-hep/uproot5/pull/1776): test: do not overwrite cached test files under pytest-xdist.
* PR [#1762](https://github.com/scikit-hep/uproot5/pull/1762): fix: form-driven RNTuple NumPy and pandas conversion ([#1760](https://github.com/scikit-hep/uproot5/issues/1760))
* PR [#1772](https://github.com/scikit-hep/uproot5/pull/1772): fix: reject non-positive integer step_size in iterate.
* PR [#1773](https://github.com/scikit-hep/uproot5/pull/1773): chore(deps): bump astral-sh/setup-uv from 10.2.0 to 10.3.0 in the actions group.
* PR [#1741](https://github.com/scikit-hep/uproot5/pull/1741): fix: read TArray members of a split std::vector without a header.
* PR [#1761](https://github.com/scikit-hep/uproot5/pull/1761): test: download all sample files before globbing them in test_0044.
* PR [#1758](https://github.com/scikit-hep/uproot5/pull/1758): feat: open only the first file in uproot.graphed, and add root_write for one-pass ROOT output.
* PR [#1752](https://github.com/scikit-hep/uproot5/pull/1752): fix: raise or warn on unrecognized options when opening files.
* PR [#1759](https://github.com/scikit-hep/uproot5/pull/1759): ci: pin pyarrow below 26 in the NumPy 1 job.
* PR [#1750](https://github.com/scikit-hep/uproot5/pull/1750): fix: support RNTuple in uproot.dask with library=”np” (**also:** [#1749](https://github.com/scikit-hep/uproot5/issues/1749))
* PR [#1755](https://github.com/scikit-hep/uproot5/pull/1755): chore(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 in the actions group.
* PR [#1747](https://github.com/scikit-hep/uproot5/pull/1747): chore: test on Python 3.15 and mark it as supported.
* PR [#1751](https://github.com/scikit-hep/uproot5/pull/1751): ci: test against the latest Pyodide without pinned versions.
* PR [#1743](https://github.com/scikit-hep/uproot5/pull/1743): fix: accept storage options in create, recreate and update. (**also:** [#1729](https://github.com/scikit-hep/uproot5/issues/1729))
* PR [#1734](https://github.com/scikit-hep/uproot5/pull/1734): fix: preserve fixed-size TTree array dimensions in Dask.
* PR [#1744](https://github.com/scikit-hep/uproot5/pull/1744): chore: update pre-commit hooks.
* PR [#1746](https://github.com/scikit-hep/uproot5/pull/1746): docs: add TaiSakuma as a contributor for infra, and maintenance.
* PR [#1740](https://github.com/scikit-hep/uproot5/pull/1740): chore(deps): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 in the actions group across 1 directory.

## Release [v5.7.7](https://github.com/scikit-hep/uproot5/releases/tag/v5.7.7)

**Tuesday, 06 October, 2026** ([pip](https://pypi.org/project/uproot/v5.7.7/), [tar](https://api.github.com/repos/scikit-hep/uproot5/tarball/v5.7.7), [zip](https://api.github.com/repos/scikit-hep/uproot5/zipball/v5.7.7))

<!– Release notes generated using configuration in .github/release.yml at db953cf9827349b3d24eb6742404158c1dfd5481 –>

## What’s Changed
### New features
\* feat: Add in-place TTree branch addition and row extension by @Yokubas in [https://github.com/scikit-hep/uproot5/pull/1690](https://github.com/scikit-hep/uproot5/pull/1690)
\* feat: Add RNTuple row extension and field addition via update mode by @Yokubas in [https://github.com/scikit-hep/uproot5/pull/1687](https://github.com/scikit-hep/uproot5/pull/1687)
\* feat: add hooks for working with graphed-org/graphed by @lgray in [https://github.com/scikit-hep/uproot5/pull/1720](https://github.com/scikit-hep/uproot5/pull/1720)
\* feat: basket-aligned partitioning for the graphed integration by @lgray in [https://github.com/scikit-hep/uproot5/pull/1727](https://github.com/scikit-hep/uproot5/pull/1727)
\* feat(docs): add llms.txt and Markdown page versions by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1719](https://github.com/scikit-hep/uproot5/pull/1719)
### Bug-fixes and performance
\* perf: project every graphed output’s buffers in one form replay by @lgray in [https://github.com/scikit-hep/uproot5/pull/1726](https://github.com/scikit-hep/uproot5/pull/1726)
\* fix: keep the object cache in the graphed TTree source by @lgray in [https://github.com/scikit-hep/uproot5/pull/1731](https://github.com/scikit-hep/uproot5/pull/1731)
\* fix: keep TTree branch lookup indices valid when a generated counter collides by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1698](https://github.com/scikit-hep/uproot5/pull/1698)
\* fix: Pandas global indices for how=dict and RNTuple entry ranges by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1696](https://github.com/scikit-hep/uproot5/pull/1696)
\* fix: executor shutdown race, dropped kwargs, chunk revalidation, unknown-class cache by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1699](https://github.com/scikit-hep/uproot5/pull/1699)
\* perf: batch sink flushes and cache cluster group records when extending RNTuples by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1700](https://github.com/scikit-hep/uproot5/pull/1700)
\* fix: keep std::array dimensions when reading RNTuple subfields directly by @ariostas in https://github.com/scikit-hep/uproot5/pull/1738
\* fix: include all subfields of a selected RNTuple field by @ariostas in https://github.com/scikit-hep/uproot5/pull/1739
\* fix: make uproot.recreate physically truncate an existing file by @ariostas in https://github.com/scikit-hep/uproot5/pull/1697
### Other
\* chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1710
\* docs: clarify max_num_elements behavior by @sapunyangkut in https://github.com/scikit-hep/uproot5/pull/1682
\* docs: add sapunyangkut as a contributor for doc by @allcontributors[bot] in https://github.com/scikit-hep/uproot5/pull/1711
\* chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1712
\* chore(deps): bump re-actors/alls-green from 1.2.2 to 1.3.0 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1716
\* docs: remove Gitter badge and references by @ariostas in https://github.com/scikit-hep/uproot5/pull/1715
\* chore(deps): bump the actions group with 2 updates by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1722
\* chore: update pre-commit hooks by @pre-commit-ci[bot] in https://github.com/scikit-hep/uproot5/pull/1717
\* chore(deps): bump codecov/codecov-action from 7.0.0 to 7.1.1 in the actions group by @dependabot[bot] in https://github.com/scikit-hep/uproot5/pull/1728
\* ci: install numba-cuda-mlir for the GPU tests by @ariostas in https://github.com/scikit-hep/uproot5/pull/1732
\* ci: install numba-cuda for the GPU tests by @ariostas in https://github.com/scikit-hep/uproot5/pull/1733
\* ci: remove redundant jobs and run the tests in parallel by @ariostas in https://github.com/scikit-hep/uproot5/pull/1735

## New Contributors
\* @Yokubas made their first contribution in [https://github.com/scikit-hep/uproot5/pull/1690](https://github.com/scikit-hep/uproot5/pull/1690)

**Full Changelog**: [https://github.com/scikit-hep/uproot5/compare/v5.7.6…v5.7.7](https://github.com/scikit-hep/uproot5/compare/v5.7.6...v5.7.7)

* PR [#1697](https://github.com/scikit-hep/uproot5/pull/1697): fix: make uproot.recreate physically truncate an existing file. (**also:** [#1016](https://github.com/scikit-hep/uproot5/issues/1016), [#1034](https://github.com/scikit-hep/uproot5/issues/1034))
* PR [#1739](https://github.com/scikit-hep/uproot5/pull/1739): fix: include all subfields of a selected RNTuple field. (**also:** [#1736](https://github.com/scikit-hep/uproot5/issues/1736))
* PR [#1738](https://github.com/scikit-hep/uproot5/pull/1738): fix: keep std::array dimensions when reading RNTuple subfields directly. (**also:** [#1737](https://github.com/scikit-hep/uproot5/issues/1737))
* PR [#1719](https://github.com/scikit-hep/uproot5/pull/1719): feat(docs): add llms.txt and Markdown page versions.
* PR [#1700](https://github.com/scikit-hep/uproot5/pull/1700): perf: batch sink flushes and cache cluster group records when extending RNTuples.
* PR [#1699](https://github.com/scikit-hep/uproot5/pull/1699): fix: executor shutdown race, dropped kwargs, chunk revalidation, unknown-class cache.
* PR [#1696](https://github.com/scikit-hep/uproot5/pull/1696): fix: Pandas global indices for how=dict and RNTuple entry ranges.
* PR [#1735](https://github.com/scikit-hep/uproot5/pull/1735): ci: remove redundant jobs and run the tests in parallel.
* PR [#1733](https://github.com/scikit-hep/uproot5/pull/1733): ci: install numba-cuda for the GPU tests.
* PR [#1698](https://github.com/scikit-hep/uproot5/pull/1698): fix: keep TTree branch lookup indices valid when a generated counter collides.
* PR [#1732](https://github.com/scikit-hep/uproot5/pull/1732): ci: install numba-cuda-mlir for the GPU tests.
* PR [#1731](https://github.com/scikit-hep/uproot5/pull/1731): fix: keep the object cache in the graphed TTree source.
* PR [#1726](https://github.com/scikit-hep/uproot5/pull/1726): perf: project every graphed output’s buffers in one form replay.
* PR [#1727](https://github.com/scikit-hep/uproot5/pull/1727): feat: basket-aligned partitioning for the graphed integration.
* PR [#1728](https://github.com/scikit-hep/uproot5/pull/1728): chore(deps): bump codecov/codecov-action from 7.0.0 to 7.1.1 in the actions group.
* PR [#1717](https://github.com/scikit-hep/uproot5/pull/1717): chore: update pre-commit hooks.
* PR [#1720](https://github.com/scikit-hep/uproot5/pull/1720): feat: add hooks for working with graphed-org/graphed.
* PR [#1722](https://github.com/scikit-hep/uproot5/pull/1722): chore(deps): bump the actions group with 2 updates.
* PR [#1715](https://github.com/scikit-hep/uproot5/pull/1715): docs: remove Gitter badge and references.
* PR [#1687](https://github.com/scikit-hep/uproot5/pull/1687): feat: Add RNTuple row extension and field addition via update mode.
* PR [#1716](https://github.com/scikit-hep/uproot5/pull/1716): chore(deps): bump re-actors/alls-green from 1.2.2 to 1.3.0 in the actions group.
* PR [#1690](https://github.com/scikit-hep/uproot5/pull/1690): feat: Add in-place TTree branch addition and row extension.
* PR [#1712](https://github.com/scikit-hep/uproot5/pull/1712): chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the actions group.
* PR [#1711](https://github.com/scikit-hep/uproot5/pull/1711): docs: add sapunyangkut as a contributor for doc.
* PR [#1682](https://github.com/scikit-hep/uproot5/pull/1682): docs: clarify max_num_elements behavior.
* PR [#1710](https://github.com/scikit-hep/uproot5/pull/1710): chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 in the actions group.

## Release [v5.7.6](https://github.com/scikit-hep/uproot5/releases/tag/v5.7.6)

**Thursday, 20 August, 2026** ([pip](https://pypi.org/project/uproot/v5.7.6/), [tar](https://api.github.com/repos/scikit-hep/uproot5/tarball/v5.7.6), [zip](https://api.github.com/repos/scikit-hep/uproot5/zipball/v5.7.6))

<!– Release notes generated using configuration in .github/release.yml at a7a99a029adea2abdcb2ce85bb241deff5a0c21c –>

## What’s Changed
### Bug-fixes and performance
\* perf: avoid full basket reads in num_entries_for and redundant reads on cache hits by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1649](https://github.com/scikit-hep/uproot5/pull/1649)
\* fix: RNTuple footer leak on extend, broken WritableNTuple.compression, directory \_\_delitem_\_ KeyError by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1650](https://github.com/scikit-hep/uproot5/pull/1650)
\* fix: TProfile2D/3D weighted and counts() were broken for N-D profiles by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1651](https://github.com/scikit-hep/uproot5/pull/1651)
\* fix: RNTuple/TBranch behavior edge cases (KeyInFileError, global iterate offsets, ak_add_doc forwarding) by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1658](https://github.com/scikit-hep/uproot5/pull/1658)
\* fix: RNTuple page deserialization copies, split-column sizing, and cluster-index pairing by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1652](https://github.com/scikit-hep/uproot5/pull/1652)
\* fix: utility-layer bugs (steps leakage, dask error paths, LRU cache) and Py2-era cleanup by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1661](https://github.com/scikit-hep/uproot5/pull/1661)
\* fix: HTTP source multipart batching, fallback leak, and close behavior by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1653](https://github.com/scikit-hep/uproot5/pull/1653)
\* fix: model member-name and AwkwardForth-API bugs in TTree v18, TTime, TAtt by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1655](https://github.com/scikit-hep/uproot5/pull/1655)
\* fix: source/sink error paths, leaks, and hot-path cleanups by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1654](https://github.com/scikit-hep/uproot5/pull/1654)
\* fix: TTree-writing bugs (sliced string arrays, nested recarrays, fLen, TGraph y-range, oversized compression blocks) by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1657](https://github.com/scikit-hep/uproot5/pull/1657)
\* fix: entry-range arithmetic in iterate/concatenate and basket selection by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1656](https://github.com/scikit-hep/uproot5/pull/1656)
\* fix: core model/streamer/deserialization bugs and hot-path performance by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1659](https://github.com/scikit-hep/uproot5/pull/1659)
\* fix: interpretation-layer bugs (pandas NaN fallback, typename parsing, strided objects, bitset) by @henryiii in [https://github.com/scikit-hep/uproot5/pull/1660](https://github.com/scikit-hep/uproot5/pull/1660)
\* fix: intermitten issue with fsspec on free-threaded Python by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1691](https://github.com/scikit-hep/uproot5/pull/1691)
\* fix: uproot.update should accept other valid UUID versions by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1689](https://github.com/scikit-hep/uproot5/pull/1689)
### Other
\* docs: add Yokubas as a contributor for code by @allcontributors[bot] in [https://github.com/scikit-hep/uproot5/pull/1678](https://github.com/scikit-hep/uproot5/pull/1678)
\* chore: update pre-commit hooks by @pre-commit-ci[bot] in [https://github.com/scikit-hep/uproot5/pull/1679](https://github.com/scikit-hep/uproot5/pull/1679)
\* chore(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in [https://github.com/scikit-hep/uproot5/pull/1684](https://github.com/scikit-hep/uproot5/pull/1684)
\* docs: document Awkward how=zip grouping by @sapunyangkut in [https://github.com/scikit-hep/uproot5/pull/1683](https://github.com/scikit-hep/uproot5/pull/1683)
\* chore(deps): bump the actions group with 4 updates by @dependabot[bot] in [https://github.com/scikit-hep/uproot5/pull/1692](https://github.com/scikit-hep/uproot5/pull/1692)
\* chore: update pre-commit hooks by @pre-commit-ci[bot] in [https://github.com/scikit-hep/uproot5/pull/1694](https://github.com/scikit-hep/uproot5/pull/1694)
\* chore(deps): bump the actions group with 3 updates by @dependabot[bot] in [https://github.com/scikit-hep/uproot5/pull/1701](https://github.com/scikit-hep/uproot5/pull/1701)
\* test: serve S3 tests from a local moto server by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1695](https://github.com/scikit-hep/uproot5/pull/1695)
\* chore(deps): bump the actions group with 2 updates by @dependabot[bot] in [https://github.com/scikit-hep/uproot5/pull/1703](https://github.com/scikit-hep/uproot5/pull/1703)
\* ci: automate release-note categorization with type labels by @TaiSakuma in [https://github.com/scikit-hep/uproot5/pull/1704](https://github.com/scikit-hep/uproot5/pull/1704)
\* ci: unbreak the GPU and Pyodide jobs by @ariostas in [https://github.com/scikit-hep/uproot5/pull/1707](https://github.com/scikit-hep/uproot5/pull/1707)
\* docs: add descriptions of reading and writing options by @tomeichlersmith in [https://github.com/scikit-hep/uproot5/pull/1702](https://github.com/scikit-hep/uproot5/pull/1702)
\* docs: add tomeichlersmith as a contributor for doc by @allcontributors[bot] in [https://github.com/scikit-hep/uproot5/pull/1708](https://github.com/scikit-hep/uproot5/pull/1708)

## New Contributors
\* @sapunyangkut made their first contribution in [https://github.com/scikit-hep/uproot5/pull/1683](https://github.com/scikit-hep/uproot5/pull/1683)
\* @TaiSakuma made their first contribution in [https://github.com/scikit-hep/uproot5/pull/1704](https://github.com/scikit-hep/uproot5/pull/1704)
\* @tomeichlersmith made their first contribution in [https://github.com/scikit-hep/uproot5/pull/1702](https://github.com/scikit-hep/uproot5/pull/1702)

**Full Changelog**: [https://github.com/scikit-hep/uproot5/compare/v5.7.5…v5.7.6](https://github.com/scikit-hep/uproot5/compare/v5.7.5...v5.7.6)

* PR [#1708](https://github.com/scikit-hep/uproot5/pull/1708): docs: add tomeichlersmith as a contributor for doc.
* PR [#1702](https://github.com/scikit-hep/uproot5/pull/1702): docs: add descriptions of reading and writing options.
* PR [#1707](https://github.com/scikit-hep/uproot5/pull/1707): ci: unbreak the GPU and Pyodide jobs.
* PR [#1704](https://github.com/scikit-hep/uproot5/pull/1704): ci: automate release-note categorization with type labels. (**also:** [scikit-hep/awkward#4125](https://github.com/scikit-hep/awkward/issues/4125))
* PR [#1703](https://github.com/scikit-hep/uproot5/pull/1703): chore(deps): bump the actions group with 2 updates.

## Earlier releases

Uproot versions 1 through 3 were in a different GitHub repository: [scikit-hep/uproot3](https://github.com/scikit-hep/uproot3).

* [GitHub release notes](https://github.com/scikit-hep/uproot3/releases)
* [PyPI full history](https://pypi.org/project/uproot/#history) (including versions 1 through 3).

This was to allow users to transition from Awkward Array 0.x and Uproot 3.x, which had different interfaces (especially Awkward Array). The transition completed on December 1, 2020.

![image](https://raw.githubusercontent.com/scikit-hep/uproot5/main/docs-img/diagrams/uproot-awkward-timeline.png)
