Changelog
58.0.0 (2026-02-19)
Breaking changes:
- Remove support for List types in bit_length kernel #9350 [arrow] (codephage2020)
- Optimize
from_bitwise_unary_op#9297 [arrow] (Dandandan) - Mark
BufferBuilder::new_from_bufferas unsafe #9292 [arrow] (Jefffrey) - [Variant] Support
['fieldName']in VariantPath parser #9276 (klion26) - Remove parquet arrow_cast dependency #9077 [parquet] (tustvold)
- feat: change default behavior for Parquet
PageEncodingStatsto bitmask #9051 [parquet] (WaterWhisperer) - [arrow] Minimize allocation in GenericViewArray::slice() #9016 [arrow] (maxburke)
Implemented enhancements:
- Avoid allocating a
VecinStructBuilder#9427 - Zstd context reuse #9401
- Optimize
from_bitwise_unary_op#9364 - Support
RunEndEncodedin ord comparator #9360 - Support
RunEndEncodedarrays inarrow-json#9359 - Support
BinaryViewinbit_lengthkernel #9351 - Remove support for
Listtypes inbit_lengthkernel #9349 - Support roundtrip
ListViewin parquet arrow writer #9344 - Support
ListViewinlengthkernel #9343 - Support
ListViewin sort kernel #9341 - Add some way to create a Timestamp from a
DateTime#9337 - Introduce
DataType::is_listandDataType::IsBinary#9326 - Performance of creating all null dictionary array can be improved #9321
- [arrow-avro] Add missing Arrow DataType support with
avro_custom_typesround-trip + non-custom fallbacks #9290
Fixed bugs:
- ArrowArrayStreamReader errors on zero-column record batches #9394
- Regression on main (58): Parquet argument error: Parquet error: Required field type_ is missing #9315 [parquet]
Documentation updates:
- Improve safety documentation of the
Arraytrait #9314 [arrow] (alamb) - Improve docs and add build() method to
{Null,Boolean,}BufferBuilder#9155 [arrow] (alamb) - Improve
ArrowReaderBuilder::with_row_filterdocumentation #9153 [parquet] (alamb) - docs: Improve main README.md and highlight community #9119 (alamb)
- Docs: Add additional documentation and example for
make_array#9112 [arrow] (alamb) - doc: fix link on FixedSizeListArray doc #9033 [arrow] (Jefffrey)
Performance improvements:
- Replace
ArrayDatawith direct Array construction #9338 [arrow] (liamzwbao) - Remove some
unsafeand allocations when creating PrimitiveArrays from Vec andfrom_trusted_len_iter#9299 [arrow] (alamb) - parquet: rle skip decode loop when batch contains all max levels (aka no nulls) #9258 [parquet] (lyang24)
- Improve parquet BinaryView / StringView decoder performance (up to -35%) #9236 [parquet] (Dandandan)
- Avoid a clone when creating
BooleanArrayfrom ArrayData #9159 [arrow] (alamb) - Avoid overallocating arrays in coalesce primitives / views #9132 [arrow] (Dandandan)
- perf: Avoid ArrayData allocation in PrimitiveArray::reinterpret_cast #9129 [arrow] (alamb)
- [Parquet] perf: Create StructArrays directly rather than via
ArrayData(1% improvement) #9120 [parquet] [arrow] (alamb) - Avoid clones in
make_arrayforStructArrayandGenericByteViewArray#9114 [arrow] (alamb) - perf: optimize hex decoding in json (1.8x faster in binary-heavy) #9091 [arrow] (Weijun-H)
- Speed up binary kernels (30% faster
andandor), addBooleanBuffer::from_bitwise_binary_op#9090 [arrow] (alamb) - perf: improve field indexing in JSON StructArrayDecoder (1.7x speed up) #9086 [arrow] (Weijun-H)
- bench: added to row_format benchmark conversion of 53 non-nested columns #9081 [arrow] (rluvaton)
- perf: improve calculating length performance for view byte array in row conversion #9080 [arrow] (rluvaton)
- perf: improve calculating length performance for nested arrays in row conversion #9079 [arrow] (rluvaton)
- perf: improve calculating length performance for
GenericByteArrayin row conversion #9078 [arrow] (rluvaton)
Closed issues:
- BatchCoalescer::push_batch panics on schema mismatch instead of returning error #9389
- Release arrow-rs / parquet Minor version
57.3.0(January 2026) #9240 - [Variant] support
..and['fieldName']syntax in the VariantPath parser #9050 - Support Float16 for create_random_array #9028
Merged pull requests:
- Avoid allocating a
VecinStructBuilder#9428 [arrow] (Fokko) - fix: fixed trait functions clash get_date_time_part_extract_fn (#8221) #9424 [arrow] (esavier)
- [Minor] Use per-predicate projection masks in arrow_reader_clickbench benchmark #9413 [parquet] (Dandandan)
- Fix
ArrowArrayStreamReaderfor 0-columns record batch streams #9405 [arrow] (jonded94) - Use zstd::bulk API in IPC and Parquet with context reuse for compression and decompression #9400 [parquet] [arrow] (Dandandan)
- Reproduce the issue of #9370 in a minimal, end-to-end way #9399 [parquet] (jonded94)
- perf: optimize skipper for varint values used when projecting Avro record types #9397 [arrow] (mzabaluev)
- fix: return error instead of panic on schema mismatch in BatchCoalescer::push_batch #9390 [arrow] (bvolpato-dd)
- Minor: Add additional test coverage for WriterProperties::{max_row_group_row_count,max_row_group_size} #9387 [parquet] (alamb)
- Moving invalid_utf8 tests into a separate mod #9384 [parquet] (sdf-jkl)
- Update sysinfo requirement from 0.37.1 to 0.38.1 #9383 [parquet] (dependabot[bot])
- feat: support RunEndEncoded arrays in arrow-json reader and writer #9379 [arrow] (Abhisheklearn12)
- Remove lint issues in parquet-related code. #9375 [parquet] (brunal)
- Add RunEndEncoded array comparator #9368 [arrow] (codephage2020)
- feat: support BinaryView in bit_length kernel #9363 [arrow] (Abhisheklearn12)
- Add regression tests for Parquet large binary offset overflow #9361 [parquet] (vigneshsiva11)
- feat: add max_row_group_bytes option to WriterProperties #9357 [parquet] (yonipeleg33)
- doc: remove disclaimer about
ListViewnot being fully supported #9356 [arrow] (Jefffrey) - Move row_filter async tests from parquet async reader #9355 [parquet] (sdf-jkl)
- [Parquet] Allow setting page size per column #9353 [parquet] (XiangpengHao)
- feat: Support roundtrip ListView in parquet arrow writer #9352 [parquet] (codephage2020)
- feat: add ListView and LargeListView support to arrow-ord #9347 [arrow] (codephage2020)
- Support ListView in length kernel #9346 [arrow] (vegarsti)
- feat: Add from_datetime method to Timestamp types #9345 [arrow] (codephage2020)
- [main] Update version to 57.3.0, add changelog #9334 (alamb)
- build(deps): update pyo3 requirement from 0.27.1 to 0.28.0 #9331 (dependabot[bot])
- Add
DataType::is_listandDataType::is_binary#9327 [arrow] (AdamGS) - Fix string array equality when the values buffer is the same and only the offsets to access it differ #9325 [arrow] (jhorstmann)
- perf: skip validation of dictionary keys if all null #9322 [arrow] (albertlockett)
- parquet: use rwlock instead of mutex in predicate cache #9319 [parquet] (lyang24)
- nit: remove usused code #9318 [parquet] (lyang24)
- Remove unnecessary Arc<ArrayRef> #9316 [parquet] [arrow] (scovich)
- Optimize data page statistics conversion (up to 4x) #9303 [parquet] [arrow] (Dandandan)
- [regression] Error with adaptive predicate pushdown: "Invalid offset in sparse column chunk data: 754, no matching page found." #9301 [parquet] (sdf-jkl)
- Improve
PrimitiveArray::from_iterperf #9294 [arrow] (Dandandan) - Add additional Arrow type support #9291 [arrow] (jecsand838)
- fix: ensure
BufferBuilder::truncatedoesn't overset length #9288 [arrow] (Jefffrey) - Add benchmark for row group index reader perf #9285 [parquet] (friendlymatthew)
- fix union array row converter to handle non-sequential type ids #9283 [arrow] (friendlymatthew)
- parquet: reduce clone in delta byte array decoder #9282 [parquet] (lyang24)
- fix: fix [[NULL]] array doesn't roundtrip in arrow-row bug #9275 [arrow] (lichuang)
- Enhance list casting, adding more cases for list views #9274 [arrow] (Jefffrey)
- [Variant] Add path index access tests for list #9273 (liamzwbao)
- Factor out json reader's static make_decoder args to a struct #9271 [arrow] (scovich)
- make_decoder accepts borrowed DataType instead of owned #9270 [arrow] (scovich)
- Implement a more generic from_nested_iter method for list arrays #9268 [arrow] (jhorstmann)
- Move extension type construction logic out of Field #9266 [parquet] [arrow] (scovich)
- fix: support casting string to f16 #9262 [arrow] (Jefffrey)
- Add additional coverage for StringViewArray comparisons #9257 [arrow] (alamb)
- Upgrade to object store 0.13.1 #9256 [parquet] (Dandandan)
- [Parquet] test adaptive predicate pushdown with skipped page #9251 [parquet] (sdf-jkl)
- Speed up string view comparison (up to 3x) #9250 [arrow] (Dandandan)
- Add bench for LocalFileSystem #9248 [parquet] (Dandandan)
- [Parquet] Add test for reading/writing long UTF8 StringViews #9246 [parquet] (alamb)
- [Parquet] test adaptive predicate pushdown with skipped page #9243 [parquet] (erratic-pattern)
- Add tests and fixes for schema resolution bug #9237 [arrow] (jecsand838)
- Revert "Seal Array trait (#9092)", mark
Arrayasunsafe#9234 [arrow] (gabotechs) - Speedup filter (up to ~1.5x)
FilterBuilder::Optimize/BitIndexIterator/iter_set_bits_rev#9229 [parquet] [arrow] (Dandandan) - optimize
RowGroupIndexReaderfor single row group reads #9226 [parquet] (friendlymatthew) - test: improve arrow-row fuzz tests #9222 [arrow] (rluvaton)
- arrow-cast: support packing to Dictionary(_, Utf8View/BinaryView) #9220 [arrow] (ethan-tyler)
- Add additional test coverage for
BatchCoalescerpush_batch_with_filter #9218 [arrow] (alamb) - [Parquet] Optimize appending max level comparison in DefinitionLevelDecoder #9217 [parquet] (jhorstmann)
- Remove dead code to fix clippy failure on main #9215 [arrow] (alamb)
- [Parquet] perf: reuse seeked File clone in ChunkReader::get_read() #9214 [parquet] (fvaleye)
- fix: [9018]Fixed RunArray slice offsets(row, cast, eq) #9213 [arrow] (manishkr)
- Add benchmarks for reading struct arrays from parquet #9210 [parquet] (jhorstmann)
- Support casting negative scale decimals to numeric #9207 [arrow] (Chiicake)
- Deprecate
ArrowReaderOptions::with_page_indexand update API #9199 [parquet] (friendlymatthew) - arrow-ipc: add reset method to DictionaryTracker #9196 [arrow] (albertlockett)
- Avoid a clone when creating
ListArrayfrom ArrayData #9194 [arrow] (alamb) - Avoid a clone when creating
ListViewArrayfrom ArrayData #9193 [arrow] (alamb) - Avoid a clone when creating
MapArrayfrom ArrayData #9192 [arrow] (alamb) - Avoid a clone when creating
NullArrayfrom ArrayData #9191 [arrow] (alamb) - Avoid a clone when creating
PrimitiveArrayfrom ArrayData #9190 [arrow] (alamb) - Avoid a clone when creating
RunEndArrayfrom ArrayData #9189 [arrow] (alamb) - Avoid a clone when creating
UnionArrayfrom ArrayData #9188 [arrow] (alamb) - Avoid a clone when creating
FixedSizeListArrayfrom ArrayData #9187 [arrow] (alamb) - Avoid a clone when creating
FixedSizeBinaryArrayfrom ArrayData #9186 [arrow] (alamb) - Avoid a clone when creating
DictionaryArrayfrom ArrayData #9185 [arrow] (alamb) - fix: take_run return empty array instead of panic. #9182 [arrow] (thorfour)
- lint: remove unused function (fix clippy #9178 [arrow] (rluvaton)
- add
#[inline]toBitIteratornextfunction #9177 [arrow] (rluvaton) - Add ListView support to
arrow-rowandarrow-ord#9176 [arrow] (brancz) - arrow-cast: Add display formatter for ListView #9175 [arrow] (brancz)
- Add BinaryFormatSupport and Row Encoder to
arrow-avroWriter #9171 [arrow] (jecsand838) - docs(parquet): move async parquet example into ArrowReaderBuilder docs #9167 [parquet] (vigneshsiva11)
- feat(array): add
RecordBatchStreamtrait #9166 [arrow] (lidavidm) - refactor: streamline date64 tests #9165 [arrow] (cht42)
- docs: update examples in ArrowReaderOptions to use in-memory buffers #9163 [parquet] (AndreaBozzo)
- Add Avro Reader projection API #9162 [arrow] (jecsand838)
- Avoid a clone when creating StringArray/BinaryArray from ArrayData #9160 [arrow] (alamb)
- fix missing utf8 check for conversion from BinaryViewArray to StringViewArray #9158 [arrow] (alamb)
- Minor: try and avoid an allocation creating
GenericByteViewArrayfromArrayData#9156 [arrow] (alamb) - Add find_nth_set_bit_position #9151 [arrow] (Dandandan)
- feat: add null comparison handling in make_comparator #9150 [arrow] (Weijun-H)
- Uncomment part of test_utf8_single_column_reader_test #9148 [parquet] (sdf-jkl)
- arrow-ipc: Add tests for nested dicts for Map and Union arrays #9146 [arrow] (brancz)
- Update ASF copyright year in NOTICE #9145 (mohit7705)
- Avoid panic on Date32 overflow #9144 [arrow] (cht42)
- feat: add
reservetoRows#9142 [arrow] (rluvaton) - docs(variant): fix VariantObject::get documentation to reflect Option return type #9139 (mohit7705)
- Add
BooleanBufferBuilder::extend_trusted_len#9137 [arrow] (Dandandan) - fix: support cast from
Nullto list view/run encoded/union types #9134 [arrow] (Jefffrey) - Fix clippy #9130 (alamb)
- Fix IPC roundtripping dicts nested in ListViews #9126 [arrow] (brancz)
- Update readme for geospatial crate #9124 (paleolimbot)
- [Parquet] perf: Create
PrimitiveArrays directly rather than viaArrayData#9122 [parquet] (alamb) - [Parquet] perf: Create Utf8/BinaryViewArray directly rather than via
ArrayData#9121 [parquet] (alamb) - [parquet] Add row group index virtual column #9117 [parquet] (friendlymatthew)
- docs(parquet): add example for preserving dictionary encoding #9116 [parquet] (AndreaBozzo)
- doc: add example of RowFilter usage #9115 [parquet] (sonhmai)
- docs: Update release schedule in README.md #9111 (alamb)
- feat: add benchmarks for json parser #9107 [arrow] (Weijun-H)
- chore: switch test from
bincodeto maintainedpostcardcrate (RUSTSEC-2025-0141 ) #9104 [arrow] (alamb) - Add nullif_kernel benchmark #9089 [arrow] (alamb)
- [Variant] Support Shredded Lists/Array in
variant_get#9049 (liamzwbao) - fix:[9018]Fixed RunArray slice offsets #9036 [arrow] (manishkr)
- Support Float16 for create_random_array #9029 [arrow] (niebayes)
- fix: display
0 secsfor empty DayTime/MonthDayNano intervals #9023 [arrow] (Jefffrey) - Add options to skip decoding
StatisticsandSizeStatisticsin Parquet metadata #9008 [parquet] (etseidl)
* This Changelog was automatically generated by github_changelog_generator