Changelog
59.0.0 (2026-06-04)
Breaking changes:
- chore: Remove some deprecated Arrow functions from the public API #10040 [arrow] (etseidl)
- chore: Remove some deprecated functions from parquet crate #10035 [parquet] (etseidl)
- Replace
From<Vec<_>>impls withTryFroms forFixedSizeBinaryArray#10019 [parquet] [arrow] (quantumish) - Use Thrift macro to generate Parquet
LogicalTypeserialization code #9997 [parquet] (etseidl) - refactor: make
BloomFilterPropertiesfpp/ndv private with accessors #9969 [parquet] (CuteChuanChuan) - Remove deprecated parquet::format module and thrift dependency #9962 [parquet] (jhorstmann)
- generic channel support for FlightClient #9933 [arrow] [arrow-flight] (rumenov)
- Add
CompressionCodecThrift enum for Parquet metadata #9864 [parquet] (etseidl) - [Variant] remove
BorrowedShreddingState#9791 (sdf-jkl) - Remove deprecated legacy
likekernels inarrow-string#9674 [arrow] (AdamGS)
Implemented enhancements:
- Allow casting plain struct to dictionary encoded struct #10038 [arrow]
- Optimize arrow-flight #10029
- Align buffers when importing via
from_ffi/ArrowArrayStreamReader#10028 [arrow] - Switch Parquet
LogicalTypeenum to macro generated version #9995 [parquet] - Future proof Parquet Thrift parser #9973 [parquet]
- Add
DatePart1-indexed variants #9964 [arrow] - perf: Rework Parquet Thrift handling of boolean fields #9946 [parquet]
- Add benchmarks for REE to parquet #9935 [parquet] [arrow]
- (re) Allow Large
FixedSizeBinaryArrays #9906 [arrow] - Add a is_normalized flag to DictionaryArray #9841
- [Variant] Remove
BorrowedShreddingState#9790 - [parquet] Expose whether FileDecryptionProperties uses a KeyRetriever #9721 [parquet]
- Align cast logic for from/to_decimal for variant to cast kernel #9688 [arrow]
Fixed bugs:
- parquet-variant build might fail on s390x #10026
FixedSizeBinaryArrayimplementsFrom<Vec<&[u8]>>etc despite conversion being fallible #10018 [parquet] [arrow]- string -> decimal cast should not treat empty string as 0 #10009 [arrow]
- Cast FixedSizeList to List will lost datatype metadata in list #10004 [arrow]
- Record reader panics with "index out of bounds" when row group num_rows exceeds actual column data #9992 [parquet]
- parquet predicate-cache: panic / silent row drop on single-leaf nullable struct #9982 [parquet]
- parquet-variant doesn't build on 32-bit targets #9977
- Date32 doesn't parse date with large year #9960 [arrow]
- msrv check failing on main due to
tonic@0.14.6#9938 [parquet] [arrow] [arrow-flight]
Documentation updates:
- Release arrow-rs / parquet Minor/Patch version
58.3.0or58.2.1(May 2026) #9859 - Add docs for
BitWriter#9949 [parquet] (alamb) - Add docs for
BitReader#9948 [parquet] (alamb)
Performance improvements:
- perf: parquet LevelInfoBuilder::write_list can be optimized? #10023 [parquet]
- perf(parquet): LevelInfoBuilder batch write when no repetition childs #10037 [parquet] (mapleFU)
- [arrow-select] Replace
ArrayDatawith directArrayconstruction in filter kernels #9986 [arrow] (liamzwbao) - Bulk-fill definition levels for majority-null leaf columns #9967 [parquet] (RyanJamesStewart)
- perf: Remove
bool_valfrom Parquet ThriftFieldIdentifier#9945 [parquet] (etseidl) - feat(parquet): compact level representation with generic writer dispatch #9831 [parquet] (HippoBaro)
Closed issues:
- Bound ArrowWriter peak memory #10071 [parquet]
- Parquet writer can produce massively oversized data pages for large variable-width values #10061 [parquet]
- Remove the
fused_inline_view_columnsfield fromBatchCoalescerif possible #10055 - DataType parser permits negative FixedSizeBinary size #10033 [arrow]
- Parquet: return error for overlong INT96 column metadata statistics #10002 [parquet]
Uuidextension type fails to deserialize whenARROW:extension:metadatais an empty string #10000 [arrow]- parquet: timeline for removing thrift crate dependency (CVE-2026-43868) #9999
- Failure in CI:
Archery test With other arrows-binary_view Rust producing, .NET consuming#9989 [arrow] - Validate FIXED_LEN_BYTE_ARRAY type_length for DECIMAL and INTERVAL in Parquet → Arrow schema conversion #9984 [parquet]
- IPC reader projection does not handle duplicate projection indices correctly #9950 [arrow]
AnyRunArraytrait #9909 [arrow]- Release arrow-rs / parquet Patch version
57.3.1(May 2026) #9858 [arrow] - Release arrow-rs / parquet Patch version
56.2.1(May 2026) #9857 [arrow] - parquet/arrow: should sync/async readers converge on a shared physical read planner #9764
arrow-stringhas a lot of macro-generated deprecated kernels inlike.rs#9675 [arrow]- [parquet] Add BloomFilterProperties builder API to make bloom filter configuration explicit #9667 [parquet]
Merged pull requests:
- Bump max throughput in
flightbenchmark before blocking #10070 [arrow] [arrow-flight] (Rich-T-kid) - Add coalesce inline-view filter benchmarks #10050 [arrow] (ClSlaid)
- fix: better error handling for negative size of FixedSizeBinary #10042 [arrow] (theirix)
- bench(parquet): add Sbbf check/insert benchmarks #10041 [parquet] (dmatth1)
- arrow-cast: Add ability to cast plain struct to dictionary #10039 [arrow] (brancz)
- [#10029][benchmarks] arrow-flight roundtrip as well as encode/decode #10031 [arrow] [arrow-flight] (Rich-T-kid)
- Call
align_buffers()infrom_ffi, remove redundant call fromarrow-pyarrow#10030 [arrow] (mbutrovich) - Adjust Variant size expectation for s390x architecture #10027 (frantisekz)
- bench(parquet): add short and large string
arrow_writerbenchmarks #10021 [parquet] (adriangb) - Pluggable page spilling API for the Parquet ArrowWriter (PageStore) #10020 [parquet] (adriangb)
- fix: Reject empty strings when casting strings to decimal #10010 [arrow] (neilconway)
- feat: Implement decimal <-> float16 casts #10008 [arrow] (neilconway)
- fix(cast): Trying to fix cast losting schema problem #10005 [arrow] (mapleFU)
- fix(parquet): validate INT96 column metadata statistics #10003 [parquet] (fallintoplace)
- fix(arrow-schema): allow empty metadata value for UUID extension type #10001 [arrow] (asubiotto)
- Add helper functions to create
LogicalTypestruct variants #9996 [parquet] (etseidl) - fix: prevent panic in record reader when row group metadata overcounts num_rows #9993 [parquet] (BoazC-MSFT)
- feat: extract
has_falseandhas_truefrom BooleanArray toBooleanBufferand reuse for no nulls #9987 [arrow] (rluvaton) - Validate FIXED_LEN_BYTE_ARRAY length for DECIMAL and INTERVAL types #9985 [parquet] (CynicDog)
- fix(parquet): exclude single-leaf struct roots from predicate cache #9983 [parquet] (imhy)
- Adds is_null function to RowAccessor #9979 [parquet] (choubacha)
- Fix parquet-variant build on wasm targets #9978 (AdamGS)
- Safely ignore Parquet fields with unimplemented Thrift types #9974 [parquet] (etseidl)
- fix(parquet): bound data page byte size for large variable-width values #9972 [parquet] (adriangb)
- feat(parquet): Add
ParquetPushDecoder::into_builderto allow swapping projections / row filters at row group boundaries #9968 [parquet] (adriangb) - chore(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 #9966 (dependabot[bot])
- Add
DatePartenum 1-indexed variants #9965 [arrow] (sdf-jkl) - fix(arrow-cast): support full Date32 range when parsing extended-year dates #9961 [arrow] (swanandx)
- Implement AnyRee #9959 [arrow] (Rich-T-kid)
- test: add overflow tests for MutableBuffer #9958 [arrow] (SoimanVasile)
- feat(parquet): generalize value encoder inputs #9955 [parquet] (HippoBaro)
- feat(parquet): add all-null fast paths for level building #9954 [parquet] (HippoBaro)
- fix(ipc): handle duplicate projection indices in IPC reader #9952 [arrow] (pchintar)
- Fix MSRV check by checking in Cargo.lock #9941 (alamb)
- benchmarks for writing REE arrays to parquet #9936 [parquet] [arrow] (Rich-T-kid)
- Validate encoded Thrift lists match the schema #9924 [parquet] (etseidl)
- [arrow-array] use usize arithmetic in FixedSizeBinaryArray, aggressive overflow checks #9910 [arrow] (alamb)
- feat(parquet): add uses_key_retriever method to FileDecryptionProperties #9895 [parquet] (adamreeve)
- Support ListView/BinaryView/RunEndEncoded types in integration test JSON parser #9888 [arrow] (paleolimbot)
- feat(parquet): add BloomFilterPropertiesBuilder #9877 [parquet] (CuteChuanChuan)
- perf[arrow-select]: add specialized REE interleave #9856 [arrow] (asubiotto)
- bench(parquet): add
ListArraybenchmarks for runtime and peak memory #9846 [parquet] (HippoBaro) - feat(parquet): separate push decoder frontier state from row-group decoding #9804 [parquet] (HippoBaro)
- arrow: add oversized coalesce take benchmarks #9799 [arrow] (ClSlaid)
- Remove redundant benchmarks in
cast_kernels#9789 [arrow] (alamb) - [Variant] Align cast logic for from/to_decimal for variant #9689 [arrow] (klion26)
- [Parquet]: GH-563: Make
path_in_schemaoptional #9678 [parquet] (etseidl) - Add support for FixedSizeList to variant_to_arrow #9663 (rishvin)
- Reduce Miri runtime even more #9650 [arrow] (AdamGS)
* This Changelog was automatically generated by github_changelog_generator