The major changes in this release include:
* Python 3.13 is now supported (PRs 3753 and 3728).
* For anyone building from source with GCC, we now require GCC 13 which has complete support for C++20 (PR 3677).
* PR 3723 carries out the removal of `used_shape` which was deprecated in TileDB-SOMA 1.15.0 and scheduled to be removed in TileDB-SOMA 1.16.0.
* The `used_shape` accessor, which was deprecated in TileDB-SOMA [1.15.0](https://github.com/single-cell-data/TileDB-SOMA/releases/tag/1.15.0) with scheduled removal in 1.16.0, is removed as of TileDB-SOMA 1.16.0. The `SparseNDArray` and `DenseNDArray` classes have (since 1.15.0) a `.shape` and `DataFrame` classes have a `.count`. Please see the [Academy tutorial](https://cloud.tiledb.com/academy/structure/life-sciences/single-cell/tutorials/shapes/) for more information.
* [TileDB core 2.27.1](https://github.com/TileDB-Inc/TileDB/releases/tag/2.27.1) (included by this TileDB-SOMA release) resolves a duplicate-read issue which occurs in a few corner cases reading schema-evolved dataframes. The user-facing error was `InvalidIndexError: Reindexing only valid with uniquely valued Index objects`.
* [TileDB core 2.27.2](https://github.com/TileDB-Inc/TileDB/releases/tag/2.27.2) (included by this TileDB-SOMA release) contains a performance improvement for dataframe reads.
* PRs 3688 and 3690 resolve an issue detailed on issue 3685.
New features added
* [python] Fix python 3.13 compatibility (3728)
* [python/ci] Try Python 3.13 in CI (3703) (3753)
* [c++/python] Add `GeometryDataFrame` creation by XanthosXanthopoulos in 3674
Breaking changes
* [python/r] Remove `used_shape`, which was deprecated in 1.15 with scheduled removal in 1.16 by johnkerl in 3723
* [c++] Add CMake check for GCC minimum version 13 by jp-dark in 3677
* [c++] Prohibit `soma_` prefix in axis names by jp-dark in 3639
Upcoming deprecation notices
None for this release.
Bug fixes
* [c++] Use core 2.27.2 (3754) (3755)
* [c++] Improve enumeration performance (3749) (3758)
* [python] Fix enum regression in PR 3647 by nguyenv in 3668
* [c++] Avoid abort on nameless legacy group entries by johnkerl in 3686
* [python] Correctly create null-filled enum-of-string columns in `tiledbsoma.io` by johnkerl in 3688
* [c++] Modify enum labels to `{name}_{dtype}` by nguyenv in 3690
* [python] Allow `("","")` for `binary` as well as `string` dataframe domain by johnkerl in 3695
* [c++,python] Correct slicing for `DenseNDArray` by nguyenv in 3708
* [c++] Update to core 2.27.1 by johnkerl in 3719
Minor changes
* [python] Show DataFrame `.count` in `show_experiment_shapes` (3765)
* [python/ci] New PyPI uploader workflow (3757) (3759)
* [python] Use `somacore` 1.0.28 (3756) (3760)
* [c++] Migrate current domain resize to use `SOMAColumn` by XanthosXanthopoulos in 3643
* [python] Resolve issue with 3611 and `pyarrow<17` by johnkerl in 3669
* [python] Add hypothesis tests by bkmartinjr in 3560
* [python/ci] Test against older dependency versions by johnkerl in 3680
* [r] Replace `SOMAArray` read and write calls with `ManagedQuery` by nguyenv in 3678
* [python/ci] Remote-storage CI YAML, part 1 of 2 by johnkerl in 3675
* [ci] Fix typo in new CI job by johnkerl in 3682
* [python/ci] Clean up a bit more after a test case by johnkerl in 3683
* [python] Move `df_to_arrow` to the io module by jp-dark in 3694
* [ci] Speed up a test case by johnkerl in 3692
* [c++] Fix some misbroken lines [trivial] by johnkerl in 3697
* [python] Remove some dead code by johnkerl in 3699
* [python] Skip checks for append to a dataframe when no new data: "Cannot construct `ChunkedArray`" by jp-dark in 3701
* [r/ci] Use R 4.4 for MacOS CI by johnkerl in 3706
* [python] Fix misc. typos in comments by ryan-williams in 3709
* [python] Improve an error message in `fastercsx` by johnkerl in 3713
* [python] Add more unit tests for `DenseNDArray` by nguyenv in 3714
* [c++] Add option to link installed `spdlog` lib by XanthosXanthopoulos in 3698
* [c++] Check arrays are open for write at write time by johnkerl in 3722
* [python] `tiledbsoma.io.{to,from}_anndata` round-trip test by bkmartinjr in 3710
New Contributors
* ivirshup made their first contribution in 2788
* spencerseale made their first contribution in 2942
* ktsitsi made their first contribution in 3403
**Full Changelog**: https://github.com/single-cell-data/TileDB-SOMA/compare/1.12.0rc0...1.16.0rc0