Disk Format
* Update on-disk format because of the new available compressor for Dictionary-encoding of strings [3042](https://github.com/TileDB-Inc/TileDB/pull/3042)
New features
* Add virtual filesystem ls_with_sizes function [2971](https://github.com/TileDB-Inc/TileDB/pull/2971)
* Add new CMake build option for `TILEDB_EXPERIMENTAL_FEATURES` to compile time protect experimental features. [2748](https://github.com/TileDB-Inc/TileDB/pull/2748)
* Forwardport Group API [3058](https://github.com/TileDB-Inc/TileDB/pull/3058)
* Support Dictionary-encoding filter for string dimensions and attributes [3077](https://github.com/TileDB-Inc/TileDB/pull/3077)
* Use legacy sparse global order reader for 2.9 [3096](https://github.com/TileDB-Inc/TileDB/pull/3096)
* Add libmagic to build process. [3088](https://github.com/TileDB-Inc/TileDB/pull/3088)
* New file storage APIs (tiledb_filestore_...) [3121](https://github.com/TileDB-Inc/TileDB/pull/3121)
Improvements
* Convert FilterPipeline deserialize function to static factory function [2799](https://github.com/TileDB-Inc/TileDB/pull/2799)
* Convert array metadata deserialize function to factory function [2784](https://github.com/TileDB-Inc/TileDB/pull/2784)
* A new thread pool with modern C++ compatible API and exception-safe behavior. [2944](https://github.com/TileDB-Inc/TileDB/pull/2944)
* Smart pointer conversion: ArraySchema Domain [2948](https://github.com/TileDB-Inc/TileDB/pull/2948)
* Declare all C API functions `noexcept`. Put existing C API functions inside exception safety wrappers to meet the declaration change. [2961](https://github.com/TileDB-Inc/TileDB/pull/2961)
* Add support for compile-time assertion configuration [2962](https://github.com/TileDB-Inc/TileDB/pull/2962)
* Refactored tiledb::sm::serialization::attribute_from_capnp to be C41 compliant [2937](https://github.com/TileDB-Inc/TileDB/pull/2937)
* Smart pointer conversion: ArraySchema Dimension [2926](https://github.com/TileDB-Inc/TileDB/pull/2926)
* Refactored tiledb::sm::serialization::filter_pipeline_from_capnp to be C41 compliant [2943](https://github.com/TileDB-Inc/TileDB/pull/2943)
* Enable sparse global order reader by default. [2997](https://github.com/TileDB-Inc/TileDB/pull/2997)
* Add API for FragmentInfo::get_fragment_name [2977](https://github.com/TileDB-Inc/TileDB/pull/2977)
* add validity file format specification [2998](https://github.com/TileDB-Inc/TileDB/pull/2998)
* Convert Domain class deserialize function to factory function [2800](https://github.com/TileDB-Inc/TileDB/pull/2800)
* Dense reader: fix user buffer offset computation for multi-index queries. [3002](https://github.com/TileDB-Inc/TileDB/pull/3002)
* Sparse readers: using zipped coords buffers for fragment version < 5. [3016](https://github.com/TileDB-Inc/TileDB/pull/3016)
* Extra UTs on string RLEs [3024](https://github.com/TileDB-Inc/TileDB/pull/3024)
* Bump Catch2 version to 2.13.8 [3027](https://github.com/TileDB-Inc/TileDB/pull/3027)
* Split consolidator in multiple classes. [3004](https://github.com/TileDB-Inc/TileDB/pull/3004)
* HTML-render the existing format-spec Markdown docs. [3043](https://github.com/TileDB-Inc/TileDB/pull/3043)
* Add more detailed doc for schema evolution timestamp range functions. [3029](https://github.com/TileDB-Inc/TileDB/pull/3029)
* Run doc-render job on doc-only PRs, and not on non-doc PRs [3045](https://github.com/TileDB-Inc/TileDB/pull/3045)
* Support curl POSTing >2GB data to REST [3048](https://github.com/TileDB-Inc/TileDB/pull/3048)
* Dense reader: do not sort input ranges. [3036](https://github.com/TileDB-Inc/TileDB/pull/3036)
* Support consolidating non-contiguous fragments. [3037](https://github.com/TileDB-Inc/TileDB/pull/3037)
* Introduce dictionary-encoding as an enum option for filters [3042](https://github.com/TileDB-Inc/TileDB/pull/3042)
* Move `Range` to new `tiledb::type` namespace [3059](https://github.com/TileDB-Inc/TileDB/pull/3059)
* Convert tdb shared to shared [2965](https://github.com/TileDB-Inc/TileDB/pull/2965)
* Add `StatusException`, an exception class to be thrown instead of returning `Status` [3050](https://github.com/TileDB-Inc/TileDB/pull/3050)
* Cherry-pick 3061 [3064](https://github.com/TileDB-Inc/TileDB/pull/3064)
* Typo fix in group.cc [3078](https://github.com/TileDB-Inc/TileDB/pull/3078)
* Rename tiledb time.h/math.h to avoid possible conflicts with standard header files. [3087](https://github.com/TileDB-Inc/TileDB/pull/3087)
* Convert ArraySchema's deserialize to a factory function [3012](https://github.com/TileDB-Inc/TileDB/pull/3012)
* varying_size_datum_at: fixing comparison error. [3127](https://github.com/TileDB-Inc/TileDB/pull/3127)
* Global writes: check global order on write continuation. [3109](https://github.com/TileDB-Inc/TileDB/pull/3109)
Bug fixes
* [bug] Fix SC-17415: segfault due to underflow in for loop [3143](https://github.com/TileDB-Inc/TileDB/pull/3143)
* Sparse global order reader: prevent dims from being unfiltered twice. [3150](https://github.com/TileDB-Inc/TileDB/pull/3150)
* compare nullptr, avoid catch2 comparison warning failure [2970](https://github.com/TileDB-Inc/TileDB/pull/2970)
* Check that array is open before getting non_empty_domain [2980](https://github.com/TileDB-Inc/TileDB/pull/2980)
* Fix assertion failure in GCS, debug build [3001](https://github.com/TileDB-Inc/TileDB/pull/3001)
* Fix missing stats on cloud queries. [3009](https://github.com/TileDB-Inc/TileDB/pull/3009)
* Sparse unordered w/ dups reader: coord tiles management fix. [3023](https://github.com/TileDB-Inc/TileDB/pull/3023)
* Incorrect validity result count in REST query [3015](https://github.com/TileDB-Inc/TileDB/pull/3015)
* use different API approach to avoid possible file sharing violation [3056](https://github.com/TileDB-Inc/TileDB/pull/3056)
* avoid some potentially invalid vector references [2932](https://github.com/TileDB-Inc/TileDB/pull/2932)
* Sparse Global Order Reader Fix: Decrement Total Cells [3046](https://github.com/TileDB-Inc/TileDB/pull/3046)
API additions
C++ API
* Add function to check if Config contains a parameter [3082](https://github.com/TileDB-Inc/TileDB/pull/3082)