PackageTrack
Sign in Get early access

arrow-arith

Arrow arithmetic kernels

59.2.0 72M downloads/mo #977 most downloaded on crates.io apache/arrow-rs

What this package is like to depend on

Last release 17 days ago

06 Aug 2026

Ships fairly regularly

a new release about every 4 weeks

Nearly every release is documented

notes for 55 of 59 stable releases

Nothing withdrawn

no release was ever pulled

4 years old

59 releases · first in 2023

15 releases in the last 12 months

see the full history below

Release timeline

59 releases · Jan 2023 to Aug 2026
2024 2025 2026
Release Pre-release

Releases

latest 59
  1. 59.2.0 06 Aug 2026
    Release notes

    Changelog

    59.2.0 - (2026-08-02)

    Full Changelog

    Enhancements

    • arrow-avro: Deprecate object_store integration by @brancz in #10484
    • chore(arrow): add unchecked array builder methods by @Rich-T-kid in #10440
    • feat(arrow-ipc): add sans-IO stream encoder by @Phoenix500526 in #10277
    • chore(arrow-cast): support suffix white space in arrow-cast parse by @Rich-T-kid in #10396
    • feat(coalesce): add size function by @rluvaton in #10331
    • fix(parquet): support mask filtering across skipped pages by @hhhizzz in #10288
    • chore(arrow-cast): support white space prefixed parse for ints and floats by @Rich-T-kid in #10374
    • chore(arrow-buffer): Make more of i256 available in const code by @AdamGS in #10363
    • feat(arrow-array): Expose builder buffer capacity accessors by @Weijun-H in #10342
    • feat(arrow-arith): Add interval multiplication by i64 by @peterxcli in #10336
    • fix: Make parquet-index work with column paths by @korowa in #10330
    • feat(arrow-csv): add support for parsing Float16 by @Glatzel in #10343
    • Remove the unmaintained paste dependency from arrow by @Phoenix500526 in #10303
    • chore: formalize the default map field names to match default arrow spec by @rluvaton in #10297
    • feat(variant): Add variant_to_arrow Map type support by @sdf-jkl in #10307

    Bug fixes

    • fix(arrow-schema): Persist dictionary ordered flag on FFI schema import by @borchero in #10514
    • fix(arrow-json): validate ListView child nullability by @dk3yyyy in #10486
    • fix(arrow-json): validate map value nullability by @subotac in #10475
    • avro: bound VLQDecoder::long against overlong varints by @STiFLeR7 in #10407
    • arrow-row: Fix decode_fixed_size_list to apply the corrected_type step for dictionary children by @zhuqi-lucas in #10414
    • [Variant] make value mandatory field for VariantArray/ShreddingState by @sdf-jkl in #10318
    • fix off by one error for slice accounting by @Rich-T-kid in #10406
    • fix: GenericByteViewArray::gc() drops inline views on the multi-buffer slow path by @adriangb in #10287
    • fix(arrow-json): render coerced f32 as its value in the string decoder by @hareshkh in #10386
    • fix(arrow-cast): make b64_encode reject invalid UTF-8 from misbehaving Engine impls by @bit2swaz in #10324
    • fix: take FFI_ArrowArrayStream errno values from libc by @fornwall in #10299
    • fix(arrow-data): allow full dictionary key range when concatenating by @raphaelroshan in #10323
    • Don't panic on invalid c ffi schema name by @robert3005 in #10328
    • fix(REE): check upfront if sorting empty array or 0 limit by @Jefffrey in #10293
    • fix(arrow-avro): bound untrusted OCF block size and item counts by @miniex in #10237
    • fix(arrow-array): disallow creating MapArray with nullable key field by @rluvaton in #10272
    • fix: don't panic on ArrayData::try_new on bad input even when force_validate feature is on by @rluvaton in #10282

    Performance improvements

    • perf(parquet): slice up contiguous buffer for decimals and fsb by @MassivePizza in #10364
    • feat(parquet): RowSelection can be backed by a BooleanBuffer by @haohuaijin in #10141
    • perf(parquet): use Cursor in ZSTDCodec to avoid Vec alloc and copy by @MassivePizza in #10345
    • optimize(parquet): Nested list batching child.write calls by @mapleFU in #10085
    • perf(parquet): splice buffered pages with write_all instead of io::copy (adapts #10052) by @adriangb in #10353
    • hoist calls for null_sentinel by @Rich-T-kid in #10356
    • perf: speed up substring_by_char with an ASCII fast path and single-pass bounds by @andygrove in #10334
    • Cache encoded field name in FieldEncoder by @MassivePizza in #10296
    • perf: allow users to skip utf8 validation in arrow-row by @Rich-T-kid in #10319
    • perf: Improve decimal addition and subtraction when scale is equal by @AdamGS in #10333
    • optimize(interleave): implement interleave for FixedSizeList/Map type by @mapleFU in #10046
    • Perf: Pre-size buffer allocations to avoid intermediate allocations by @Rich-T-kid in #10262
    • Perf: create dictionary reader config and default unsafeflag to false by @Rich-T-kid in #10260
    • Perf: Introduce zero copy path when tonic returns an aligned buffer by @Rich-T-kid in #10273
    • Validate short view strings in separate buffer in arrow-row by @Jefffrey in #10250

    Documentation updates

    • chore(parquet): add link to ticket in object_store deprecation message by @alamb in #10502
    • chore(avro): add link to ticket in object_store deprecation message by @alamb in #10503
    • docs: clarify decimal negative scale behavior by @ByteBaker in #10304
    • Docs: fix mutableArrayData comments by @Rich-T-kid in #10326
    • docs: trim release schedule for released versions by @alamb in #10280
    • Align parquet-geospatial crate docs with README by @paleolimbot in #10302

    Miscellaneous

    • Revert "chore: formalize the default map field names to match default arrow spec (#10297)" by @alamb in #10506
    • parquet: deprecate explicit object_store integration by @brancz in #10354
    • fix(parquet): restore opaque return type for RowSelection::iter by @haohuaijin in #10450
    • refactor(parquet): split arrow_reader/selection into smaller modules by @haohuaijin in #10434
    • chore: deduplicate filter nulls code in coalesce/filter kernel by @Jefffrey in #10348
    • chore: remove parquet dependency from parquet_derive by @ByteBaker in #10327
    Open source →
  2. 59.1.0 07 Jul 2026
    Release notes

    Changelog

    59.1.0 (2026-07-03)

    Full Changelog

    Implemented enhancements:

    • Fast path for nested DictionaryArray casting #10247 [arrow]
    • parquet/arrow: reading multiple nested columns fails with "Not all children array length are the same!" when a list continues across DataPageV2 page boundary #10243 [parquet]
    • Add product aggregate kernel to arrow-rs #10150 [arrow]
    • Stricter DataType parsing #10146 [arrow]
    • Support validating CSV headers against Schema #10143 [arrow]
    • arrow-ipc: Supports compression level configuration for arrow-ipc writer #10132 [arrow]
    • [Variant] VariantArray field API naming #10093
    • Add StructArray::field_ APIs symmetric to StructArray::column_ ones #10092 [arrow]
    • arrow-buffer: implement Saturating, CheckedShl, Not num-traits for i256 #10087 [arrow]
    • feat: native concat for MapArray #10047 [arrow]
    • [Variant] Add variant_to_arrow Dictionary/REE type support #10013

    Fixed bugs:

    • arrow-row on fixed size binary/list with size 0 and no nulls return wrong length #10270
    • casting list to 0-size fixedsizelist can cause incorrect output length #10227 [arrow]
    • Buffer count mismatched with metadata when encoding records with dictionary of dictionaries #10213 [arrow]
    • Buffer::into_mutable is not consistent regarding sliced data and can lead to panics #10117 [arrow]
    • parquet_derive: cannot read or write columns whose name is a Rust keyword (raw identifiers like r#type become column "r#type") #10112
    • parquet: fix OffsetBuffer panic on corrupt input #10107 [parquet]
    • Parquet geospatial conversion uses metadata key "algorithm" instead of "edges" in geoarrow metadata #9929 [parquet]

    Documentation updates:

    Performance improvements:

    Closed issues:

    • Soundness: Unsound alignment contract in public FromBytes trait and BitReader::get_batch #10164 [parquet]
    • ParquetPushDecoder: expose the next row-group index that try_next_reader will yield #10148 [parquet]
    • arrow-ipc: Extend writer benchmarks to include dictionaries #10119 [arrow]
    • bench(parquet): benchmark for nested list write #10083 [parquet]
    • Support i256 implement From<i128> #10080 [arrow]

    Merged pull requests:

    * This Changelog was automatically generated by github_changelog_generator

    Open source →
    Release notes

    Full Changelog

    Implemented enhancements:

    • Fast path for nested DictionaryArray casting #10247 [arrow]
    • parquet/arrow: reading multiple nested columns fails with "Not all children array length are the same!" when a list continues across DataPageV2 page boundary #10243 [parquet]
    • Add product aggregate kernel to arrow-rs #10150 [arrow]
    • Stricter DataType parsing #10146 [arrow]
    • Support validating CSV headers against Schema #10143 [arrow]
    • arrow-ipc: Supports compression level configuration for arrow-ipc writer #10132 [arrow]
    • [Variant] VariantArray field API naming #10093
    • Add StructArray::field_ APIs symmetric to StructArray::column_ ones #10092 [arrow]
    • arrow-buffer: implement Saturating, CheckedShl, Not num-traits for i256 #10087 [arrow]
    • feat: native concat for MapArray #10047 [arrow]
    • [Variant] Add variant_to_arrow Dictionary/REE type support #10013

    Fixed bugs:

    • arrow-row on fixed size binary/list with size 0 and no nulls return wrong length #10270
    • casting list to 0-size fixedsizelist can cause incorrect output length #10227 [arrow]
    • Buffer count mismatched with metadata when encoding records with dictionary of dictionaries #10213 [arrow]
    • Buffer::into_mutable is not consistent regarding sliced data and can lead to panics #10117 [arrow]
    • parquet_derive: cannot read or write columns whose name is a Rust keyword (raw identifiers like r#type become column "r#type") #10112
    • parquet: fix OffsetBuffer panic on corrupt input #10107 [parquet]
    • Parquet geospatial conversion uses metadata key "algorithm" instead of "edges" in geoarrow metadata #9929 [parquet]

    Documentation updates:

    Performance improvements:

    Closed issues:

    • Soundness: Unsound alignment contract in public FromBytes trait and BitReader::get_batch #10164 [parquet]
    • ParquetPushDecoder: expose the next row-group index that try_next_reader will yield #10148 [parquet]
    • arrow-ipc: Extend writer benchmarks to include dictionaries #10119 [arrow]
    • bench(parquet): benchmark for nested list write #10083 [parquet]
    • Support i256 implement From<i128> #10080 [arrow]

    Merged pull requests:

    Open source →
  3. 59.0.0 09 Jun 2026
    Release notes

    Changelog

    59.0.0 (2026-06-04)

    Full Changelog

    Breaking changes:

    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 LogicalType enum to macro generated version #9995 [parquet]
    • Future proof Parquet Thrift parser #9973 [parquet]
    • Add DatePart 1-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
    • FixedSizeBinaryArray implements From<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 [email protected] #9938 [parquet] [arrow] [arrow-flight]

    Documentation updates:

    Performance improvements:

    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_columns field from BatchCoalescer if possible #10055
    • DataType parser permits negative FixedSizeBinary size #10033 [arrow]
    • Parquet: return error for overlong INT96 column metadata statistics #10002 [parquet]
    • Uuid extension type fails to deserialize when ARROW:extension:metadata is 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]
    • AnyRunArray trait #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-string has a lot of macro-generated deprecated kernels in like.rs #9675 [arrow]
    • [parquet] Add BloomFilterProperties builder API to make bloom filter configuration explicit #9667 [parquet]

    Merged pull requests:

    * This Changelog was automatically generated by github_changelog_generator

    Open source →
    Release notes

    Full Changelog

    Breaking changes:

    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 LogicalType enum to macro generated version #9995 [parquet]
    • Future proof Parquet Thrift parser #9973 [parquet]
    • Add DatePart 1-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
    • FixedSizeBinaryArray implements From<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 [email protected] #9938 [parquet] [arrow] [arrow-flight]

    Documentation updates:

    Performance improvements:

    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_columns field from BatchCoalescer if possible #10055
    • DataType parser permits negative FixedSizeBinary size #10033 [arrow]
    • Parquet: return error for overlong INT96 column metadata statistics #10002 [parquet]
    • Uuid extension type fails to deserialize when ARROW:extension:metadata is 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]
    • AnyRunArray trait #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-string has a lot of macro-generated deprecated kernels in like.rs #9675 [arrow]
    • [parquet] Add BloomFilterProperties builder API to make bloom filter configuration explicit #9667 [parquet]

    Merged pull requests:

    Open source →
  4. 58.4.0 22 Jul 2026
    Release notes

    Changelog

    58.4.0 (2026-07-17)

    Full Changelog

    Merged pull requests:

    * This Changelog was automatically generated by github_changelog_generator

    Open source →
  5. 58.3.0 11 May 2026
    Release notes

    Changelog

    58.3.0 (2026-05-07)

    Full Changelog

    Implemented enhancements:

    • Add DatePart::from_str API #9930 [arrow]
    • should use DictionaryArray::with_values instead of try_new on the dictionary fast path #9889 [arrow]
    • [arrow-string] add concat_elements for BinaryViewArray and FixedSizeBinary #9875 [arrow]
    • Expose eq ignore ascii case from arrow-string #9870 [arrow]
    • Configurable data page v2 compression threshold #9827 [parquet]

    Fixed bugs:

    • [arrow-cast] incorrect Time32 -> Time64 conversion #9851 [arrow]
    • Panic when reading malformed compact-Thrift bool fields in Parquet page metadata #9839 [parquet]
    • Parquet DeltaBitPackDecoder::skip could panic on "non-standard" miniblocks #9793 [parquet]

    Documentation updates:

    • docs: Add guidance for AI assisted submissions to CONTRIBUTING.md #9892 (etseidl)
    • Update release schedule on README #9881 (alamb)
    • Add more documentation for FixedSizeBinary arrays #9866 [arrow] (alamb)
    • Minor: document why FixedSizeBinary offset is always 0 #9861 [arrow] (alamb)
    • docs: Update contributing guidelines with benchmark results #9782 (alamb)

    Closed issues:

    • GenericByteDictionaryBuilder::with_capacity does not pre-size dedup HashTable #9907 [arrow]
    • [arrow-buffer] Integer overflow in repeat_slice_n_times leads to undefined behavior #9904 [arrow]
    • [arrow-buffer] Integer overflow in BitChunks::new leads to undefined behavior #9903 [arrow]
    • [arrow-row] Integer overflow in Rows::row index handling leads to undefined behavior #9901 [arrow]
    • [arrow-data] Integer overflow in ArrayData validation leads to undefined behavior #9900 [arrow]
    • [arrow-data] Integer overflow in ArrayData::slice leads to undefined behavior #9899 [arrow]
    • [arrow-array] Integer overflow in FixedSizeBinaryArray::value leads to undefined behavior #9898 [arrow]
    • [arrow-buffer] Integer overflow in BufferBuilder::reserve leads to undefined behavior #9897 [arrow]
    • arrow-csv: integer overflow panic in Reader::records::flush #9885 [arrow]
    • Make an API to help with the pattern of 'replaces the values of the REE array' #9854 [arrow]
    • Parquet reader rejects canonical UNKNOWN logical type on BOOLEAN physical columns #9844 [parquet]
    • ColumnIndex length mismatch can cause panic during decoding in Parquet #9832 [parquet]
    • Bug converting json to fixed list of zero size #9780 [arrow]

    Merged pull requests:

    * This Changelog was automatically generated by github_changelog_generator

    Open source →
    Release notes

    Full Changelog

    Implemented enhancements:

    • Add DatePart::from_str API #9930 [arrow]
    • should use DictionaryArray::with_values instead of try_new on the dictionary fast path #9889 [arrow]
    • [arrow-string] add concat_elements for BinaryViewArray and FixedSizeBinary #9875 [arrow]
    • Expose eq ignore ascii case from arrow-string #9870 [arrow]
    • Configurable data page v2 compression threshold #9827 [parquet]

    Fixed bugs:

    • [arrow-cast] incorrect Time32 -> Time64 conversion #9851 [arrow]
    • Panic when reading malformed compact-Thrift bool fields in Parquet page metadata #9839 [parquet]
    • Parquet DeltaBitPackDecoder::skip could panic on "non-standard" miniblocks #9793 [parquet]

    Documentation updates:

    • docs: Add guidance for AI assisted submissions to CONTRIBUTING.md #9892 (etseidl)
    • Update release schedule on README #9881 (alamb)
    • Add more documentation for FixedSizeBinary arrays #9866 [arrow] (alamb)
    • Minor: document why FixedSizeBinary offset is always 0 #9861 [arrow] (alamb)
    • docs: Update contributing guidelines with benchmark results #9782 (alamb)

    Closed issues:

    • GenericByteDictionaryBuilder::with_capacity does not pre-size dedup HashTable #9907 [arrow]
    • [arrow-buffer] Integer overflow in repeat_slice_n_times leads to undefined behavior #9904 [arrow]
    • [arrow-buffer] Integer overflow in BitChunks::new leads to undefined behavior #9903 [arrow]
    • [arrow-row] Integer overflow in Rows::row index handling leads to undefined behavior #9901 [arrow]
    • [arrow-data] Integer overflow in ArrayData validation leads to undefined behavior #9900 [arrow]
    • [arrow-data] Integer overflow in ArrayData::slice leads to undefined behavior #9899 [arrow]
    • [arrow-array] Integer overflow in FixedSizeBinaryArray::value leads to undefined behavior #9898 [arrow]
    • [arrow-buffer] Integer overflow in BufferBuilder::reserve leads to undefined behavior #9897 [arrow]
    • arrow-csv: integer overflow panic in Reader::records::flush #9885 [arrow]
    • Make an API to help with the pattern of 'replaces the values of the REE array' #9854 [arrow]
    • Parquet reader rejects canonical UNKNOWN logical type on BOOLEAN physical columns #9844 [parquet]
    • ColumnIndex length mismatch can cause panic during decoding in Parquet #9832 [parquet]
    • Bug converting json to fixed list of zero size #9780 [arrow]

    Merged pull requests:

    Open source →
  6. 58.2.0 02 May 2026
    Release notes

    Full Changelog

    Implemented enhancements:

    • Expose ColumnCloseResult on ArrowColumnChunk #9774 [parquet]
    • Expose FFI data structures fields #9771 [arrow]
    • short-circuit last predicate in RowFilter when with_limit(N) is set #9765 [parquet]
    • vectorise dict-index bounds check #9747 [parquet]
    • Refactor RleEncoder::flush_bit_packed_run #9734 [parquet]
    • Add benchmark for cast from/to decimals #9728 [arrow]
    • Add a security policy for arrow-rs #9727 [parquet] [arrow] [arrow-flight]
    • Support FixedSizeList in arrow-json reader #9714 [arrow]
    • [Variant] Add VariantArrayBuilder::append_nulls API #9684
    • [Json] RunEndEncoded decoder optimization #9645 [arrow]
    • [Variant] variant_get(..., List<_>) non-Struct types support #9615
    • [Variant] Add unshredded Struct fast-path for variant_get(..., Struct) #9596
    • Allow setting custom line terminator for CSV writer #9571 [arrow]
    • [Variant] Align cast logic for variant_get to cast kernel for numeric/bool types #9564 [arrow]
    • ci: use ubuntu-slim where applicable #9536
    • Publicly export arrow_string::Predicate and its methods? #9480
    • Don't create CompressionContext when no compression is selected [IPC] #9463 [arrow]
    • Parquet: Raw level buffering causes unbounded memory growth for sparse columns #9446 [parquet]
    • Parallel Parquet Reading #9381 [parquet]

    Fixed bugs:

    • [Variant] unshred_variant panics on malformed bytes despite returning Result #9740
    • RecordBatch::normalize() does not propagate top level null bitmap into the results #9732 [arrow]
    • Incorrect accounting in DictEncoder::estimated_memory_size #9719 [parquet]
    • arrow-ipc writer does not comply with spec for empty variable-size arrays #9716 [arrow]
    • Panic when reading corrupt parquet file with truncated data instead of ParquetError #9705 [parquet]
    • NOTICE.txt is inaccurate #9703 [arrow]
    • Unnecessary dependency on regex crate #9672
    • [arrow-avro] Avro reader produces incorrect results when reader schema and writer schema differ #9655 [arrow]
    • parquet docs are broken on docs.rs #9649
    • [Parquet] ArrowWriter with CDC panics on nested ListArrays #9637 [parquet] [arrow] [arrow-flight]
    • Use release KEYS file for verification instead of dev KEYS #9603
    • IPC reader: handling of dictionaries with only null values #9595 [arrow]
    • Parquet RleDecoder::get_batch_with_dict panics on oob dictionary indices #9434 [parquet]

    Documentation updates:

    Performance improvements:

    • parquet: avoid decode and heap allocation on terminal skip in DeltaBitPackDecoder #9784 [parquet]
    • parquet: O(1) skip for bw=0 miniblocks in DeltaBitPackDecoder #9783 [parquet]
    • Remove per-message flush overhead in Arrow IPC writer #9762 [arrow]
    • Support GenericListViewArray::new_unchecked and refactor ListView json decoder #9646 [arrow]
    • Support nested REE in arrow-ord partition function #9640 [arrow]
    • [Parquet] Remove the BIT_PACKED encoder #9635 [parquet]
    • Pre-reserve output capacity in ByteView/ByteArray dictionary decoding #9587 [parquet]
    • Fuse RLE decoding and view gathering for StringView dictionary decoding #9582 [parquet]
    • Use branchless index clamping and add get_batch_direct to RleDecoder #9581 [parquet]
    • Reduce per-byte overhead in VLQ integer decoding #9580 [parquet]
    • feat(parquet): batch RLE runs in level encoder via scan-ahead #9830 [parquet] (HippoBaro)
    • fix: lazy-init zstd compression contexts to avoid unnecessary FFI calls #9808 [arrow] (mbutrovich)
    • parquet: O(1) skip for bw=0 miniblocks in DeltaBitPackDecoder #9786 [parquet] (sahuagin)
    • chore: add benchmark for row filters with LIMIT short-circuit #9767 [parquet] (haohuaijin)
    • Push LIMIT / OFFSET into the last RowFilter predicate and skip unused row groups #9766 [parquet] (haohuaijin)
    • feat(ipc): Remove per-message flush in IPC writer hot path #9763 [arrow] (pchintar)
    • perf(parquet): Defer fixed length byte array buffer alloc and skip zero-batch init #9756 [parquet] (lyang24)
    • feat(parquet): batch consecutive null/empty rows in write_list #9752 [parquet] (HippoBaro)
    • Remove len field from buffer builder #9750 [arrow] (cetra3)
    • perf(parquet): Vectorize dict-index bounds check in RleDecoder::get_batch_with_dict (up to -7.9%) #9746 [parquet] (Dandandan)
    • feat(parquet): precompute offset_index_disabled at build-time #9724 [parquet] (HippoBaro)
    • [Parquet] Improve dictionary decoder by unrolling loops #9662 [parquet] (Dandandan)
    • [Json] Use partition and take in RunEndEncoded decoder #9658 [arrow] (liamzwbao)
    • Improve take performance on List arrays #9643 [arrow] (AdamGS)
    • [Json] Replace ArrayData with typed Array construction in json-reader #9497 [arrow] (liamzwbao)
    • feat(parquet): stream-encode definition/repetition levels incrementally #9447 [parquet] (HippoBaro)

    Closed issues:

    • Incorrect buffer skipping for V4 Union types in IPC skip_field #9828 [arrow]
    • Replace wildcard match in skip_field with explicit DataType handling #9821 [arrow]
    • Column projection misalignment for ListView / LargeListView in IPC reader #9805 [arrow]
    • Avoid panic on malformed compressed buffer prefix in IPC #9801 [arrow]
    • DeltaByteArrayDecoder panics on invalid prefix lengths #9796 [parquet]
    • Use NullBufferBuilder when reading json #9781 [arrow]
    • Perfectly shredded arrays with top-level null values loss nullability when typed_value is extracted #9701
    • [Parquet Metadata] API to determine page-index presence separately from page-index load #9693
    • Union cast is incorrect for duplicate field names #9664 [arrow]
    • List and ListView are missing take benchmarks #9627 [arrow]
    • Support RunEndEncoded arrays in comparison kernels (eq, lt, etc.) #9620 [arrow]
    • variant_get should follow JSONpath semantics #9606
    • GenericByteViewArray: support finding total length of all strings #9435 [arrow]

    Merged pull requests:

    Open source →
  7. 58.1.0 24 Mar 2026
    Release notes

    Full Changelog

    Implemented enhancements:

    • Reuse compression dict lz4_block #9566
    • [Variant] Add variant_to_arrow Struct type support #9529
    • [Variant] Add unshred_variant support for Binary and LargeBinary types #9526
    • [Variant] Add shred_variant support for LargeUtf8 and LargeBinary types #9525
    • [Variant] variant_get tests clean up #9517
    • parquet_variant: Support LargeUtf8 typed value in unshred_variant #9513
    • parquet-variant: Support string view typed value in unshred_variant #9512
    • Deprecate ArrowTimestampType::make_value in favor of from_naive_datetime #9490 [arrow]
    • Followup for support ['fieldName'] in VariantPath #9478
    • Speedup DELTA_BINARY_PACKED decoding when bitwidth is 0 #9476 [parquet]
    • Support CSV files encoded with charsets other than UTF-8 #9465 [arrow]
    • Expose Avro writer schema when building the reader #9460 [arrow]
    • Python: avoid importing pyarrow classes ever time #9438
    • Add append_nulls to MapBuilder #9431 [arrow]
    • Add append_non_nulls to StructBuilder #9429 [arrow]
    • Add append_value_n to GenericByteBuilder #9425 [arrow]
    • Optimize from_bitwise_binary_op #9378 [arrow]
    • Configurable Arrow representation of UTC timestamps for Avro reader #9279 [arrow]

    Fixed bugs:

    • MutableArrayData::extend does not copy child values for ListView arrays #9561 [arrow]
    • ListView interleave bug #9559 [arrow]
    • Flight encoding panics with "no dict id for field" with nested dict arrays #9555 [arrow] [arrow-flight]
    • "DeltaBitPackDecoder only supports Int32Type and Int64Type" but unsigned types are supported too #9551 [parquet]
    • Potential overflow when calling util::bit_mask::set_bits (soundness issue) #9543 [arrow]
    • handle Null type in try_merge for Struct, List, LargeList, and Union #9523 [arrow]
    • Invalid offset in sparse column chunk data for multiple predicates #9516 [parquet]
    • debug_assert_eq! in BatchCoalescer panics in debug mode when batch_size < 4 #9506 [arrow]
    • Parquet Statistics::null_count_opt wrongly returns Some(0) when stats are missing #9451 [parquet]
    • Error "Not all children array length are the same!" when decoding rows spanning across page boundaries in parquet file when using RowSelection #9370 [parquet]
    • Avro schema resolution not properly supported for complex types #9336 [arrow]

    Documentation updates:

    • Update planned release schedule in README.md #9466 (alamb)

    Performance improvements:

    • Introduce NullBuffer::try_from_unsliced to simplify array construction #9385 [parquet] [arrow]
    • perf: Coalesce page fetches when RowSelection selects all rows #9578 [parquet] (Dandandan)
    • Use chunks_exact for has_true/has_false to enable compiler unrolling #9570 [arrow] (adriangb)
    • pyarrow: Cache the imported classes to avoid importing them each time #9439 (Tpt)

    Closed issues:

    • Duplicate macro definition: partially_shredded_variant_array_gen #9492
    • Enable LargeList / ListView / LargeListView for VariantArray::try_new #9455
    • Support variables/expressions in record_batch! macro #9245 [arrow]

    Merged pull requests:

    Open source →
  8. 58.0.0 23 Feb 2026
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Avoid allocating a Vec in StructBuilder #9427
    • Zstd context reuse #9401
    • Optimize from_bitwise_unary_op #9364
    • Support RunEndEncoded in ord comparator #9360
    • Support RunEndEncoded arrays in arrow-json #9359
    • Support BinaryView in bit_length kernel #9351
    • Remove support for List types in bit_length kernel #9349
    • Support roundtrip ListView in parquet arrow writer #9344
    • Support ListView in length kernel #9343
    • Support ListView in sort kernel #9341
    • Add some way to create a Timestamp from a DateTime #9337
    • Introduce DataType::is_list and DataType::IsBinary #9326
    • Performance of creating all null dictionary array can be improved #9321
    • [arrow-avro] Add missing Arrow DataType support with avro_custom_types round-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 Array trait #9314 [arrow] (alamb)
    • Improve docs and add build() method to {Null,Boolean,}BufferBuilder #9155 [arrow] (alamb)
    • Improve ArrowReaderBuilder::with_row_filter documentation #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 ArrayData with direct Array construction #9338 [arrow] (liamzwbao)
    • Remove some unsafe and allocations when creating PrimitiveArrays from Vec and from_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 BooleanArray from 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_array for StructArray and GenericByteViewArray #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 and and or), add BooleanBuffer::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 GenericByteArray in 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:

    Open source →
  9. 57.3.1 11 May 2026

    Nothing published for this version

  10. 57.3.0 06 Feb 2026
    Release notes

    Full Changelog

    Breaking changes:

    Fixed bugs:

    Open source →
  11. 57.2.0 11 Jan 2026
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • [parquet] further relax LevelInfoBuilder::types_compatible for ArrowWriter #9098
    • Update arrow-row documentation with Union encoding #9084
    • Add code examples for min and max compute functions #9055
    • Add append_n to bytes view builder API #9034 [arrow]
    • Move RunArray::get_physical_indices to RunEndBuffer #9025 [arrow]
    • Allow quote style in csv writer #9003 [arrow]
    • IPC support for ListView #9002 [arrow]
    • Implement BinaryArrayType for &FixedSizeBinaryArrays #8992 [arrow]
    • arrow-buffer: implement num-traits for i256 #8976 [arrow]
    • Support for Arc<str> in ParquetRecordWriter derive macro #8972
    • [arrow-avro] suggest switching from xz to liblzma #8970 [arrow]
    • arrow-buffer: add i256::trailing_zeros #8968 [arrow]
    • arrow-buffer: make i256::leading_zeros public #8965 [arrow]
    • Add spark like ignoreLeadingWhiteSpace and ignoreTrailingWhiteSpace options to the csv writer #8961 [arrow]
    • Add round trip benchmark for Parquet writer/reader #8955 [parquet]
    • Support performant interleave for List/LargeList #8952 [arrow]
    • [Variant] Support array access when parsing VariantPath #8946
    • Some panic!s could be represented as unimplemented!s #8932 [arrow]
    • [Variant] easier way to construct a shredded schema #8922
    • Support DataType::ListView and DataType::LargeListView in ArrayData::new_null #8908 [arrow]
    • Add GenericListViewArray::from_iter_primitive #8906 [arrow]
    • [Variant] Unify the cast option usage in ParquentVariant #8873
    • Blog post about efficient filter representation in Parquet filter pushdown #8843 [parquet]
    • Add comparison support for Union arrays in the cmp kernel #8837 [arrow]
    • [Variant] Support array shredding into List/LargeList/ListView/LargeListView #8830
    • Support Union data types for row format #8828 [arrow]
    • FFI support for ListView #8819 [arrow]
    • [Variant] Support more Arrow Datatypes from Variant primitive types #8805
    • FixedSizeBinaryBuilder supports append_array #8750 [arrow]
    • Implement special case zip with scalar for Utf8View #8724 [arrow]
    • [geometry] Wire up arrow reader/writer for GEOMETRY and GEOGRAPHY #8717 [parquet]

    Fixed bugs:

    • Soundness Bug in try_binary when Array is implemented incorrectly in external crate #9106
    • casting Dict(_, LargeUtf8) to Utf8View (StringViewArray) panics #9101
    • wrong results for null count of nullif kernel #9085 [parquet] [arrow]
    • Empty first line in some code examples #9063
    • GenericByteViewArray::slice is not zero-copy but ought to be #9014
    • Regression in struct casting in 57.2.0 (not yet released) #9005 [arrow]
    • Fix panic when decoding multiple Union columns in RowConverter #8999 [arrow]
    • take_fixed_size_binary Does Not Consider NULL Indices #8947 [arrow]
    • [arrow-avro] RecordEncoder Bugs #8934 [arrow]
    • FixedSizeBinaryArray::try_new(...) Panics with Item Length of Zero #8926 [arrow]
    • cargo test -p arrow-cast fails on main #8910 [arrow]
    • GenericListViewArray::new_null ignores len and returns an empty array #8904 [arrow]
    • FixedSizeBinaryArray::new_null Does Not Properly Set the Length of the Values Buffer #8900 [arrow]
    • Struct casting requires same order of fields #8870 [arrow]
    • Cannot cast string dictionary to binary view #8841 [arrow]

    Documentation updates:

    Performance improvements:

    • [parquet] Avoid a clone while resolving the read strategy #9056 [parquet] (alamb)
    • perf: improve performance of encoding GenericByteArray by 8% #9054 [arrow] (rluvaton)
    • Speed up unary not kernel by 50%, add BooleanBuffer::from_bitwise_unary #8996 [arrow] (alamb)
    • arrow-select: improve dictionary interleave fallback performance #8978 [arrow] (asubiotto)
    • Add special implementation for zip for Utf8View/BinaryView scalars #8963 [arrow] (mkleen)
    • arrow-select: implement specialized interleave_list #8953 [arrow] (asubiotto)

    Closed issues:

    Merged pull requests:

    Open source →
  12. 57.1.0 24 Nov 2025
    Release notes

    Full Changelog

    Implemented enhancements:

    • Eliminate bound checks in filter kernels #8865 [arrow]
    • Respect page index policy option for ParquetObjectReader when it's not skip #8856 [parquet]
    • Speed up collect_bool and remove unsafe #8848 [arrow]
    • Error reading parquet FileMetaData with empty lists encoded as element-type=0 #8826 [parquet]
    • ValueStatistics methods can't be used from generic context in external crate #8823 [parquet]
    • Custom Pretty-Printing Implementation for Column when Formatting Record Batches #8821 [arrow]
    • Parquet-concat: supports bloom filter and page index #8804 [parquet]
    • [Parquet] virtual row number support #7299
    • [Variant] Enforce shredded-type validation in shred_variant #8795 [arrow]
    • Simplify decision logic to call FilterBuilder::optimize or not #8781 [arrow]
    • [Variant] Add variant to arrow for DataType::{Binary, LargeBinary, BinaryView} #8767 [arrow]
    • Provide algorithm that allows zipping arrays whose values are not prealigned #8752 [arrow]
    • [Parquet] ParquetMetadataReader decodes too much metadata under point-get scenerio #8751 [parquet]
    • arrow-json supports encoding binary arrays, but not decoding #8736 [arrow]
    • Allow FilterPredicate instances to be reused for RecordBatches #8692 [arrow]
    • ArrowJsonBatch::from_batch is incomplete #8684 [arrow]
    • parquet-layout: More info about layout including footer size, page index, bloom filter? #8682 [parquet]
    • Rewrite ParquetRecordBatchStream (async API) in terms of the PushDecoder #8677 [parquet]
    • [JSON] Add encoding for binary view #8674 [arrow]
    • Refactor arrow-cast decimal casting to unify the rescale logic used in Parquet variant casts #8670 [arrow]
    • [Variant] Support Uuid/FixedSizeBinary(16) shredding #8665
    • [Parquet]There should be an encoding counter to know how many encodings the repo supports in total #8662 [parquet]
    • Improve parse_data_type for List, ListView, LargeList, LargeListView, FixedSizeList, Union, Map, RunEndCoded. #8648 [arrow]
    • [Variant] Support variant to arrow primitive support null/time/decimal_* #8637
    • Return error from RleDecoder::reset rather than panic #8632 [parquet]
    • Add bitwise ops on BooleanBufferBuilder and MutableBuffer that mutate directly the buffer #8618 [arrow]
    • [Variant] Add variant_to_arrow Utf-8, LargeUtf8, Utf8View types support #8567 [arrow]

    Fixed bugs:

    • Regression: Parsing List(Int64) results in nullable list in 57.0.0 and a non-nullable list in 57.1.0 #8883
    • Regression: FixedSlizeList data type parsing fails on 57.1.0 #8880
    • (dyn ArrayFormatterFactory + 'static) can't be safely shared between threads #8875
    • RowNumber reader has wrong row group ordering #8864 [parquet]
    • ThriftMetadataWriter::write_column_indexes cannot handle a ColumnIndexMetaData::NONE #8815 [parquet]
    • "Archery test With other arrows" Integration test failing on main: #8813 [arrow]
    • [Parquet] Writing in 57.0.0 seems 10% slower than 56.0.0 #8783 [parquet]
    • Parquet reader cannot handle files with unknown logical types #8776 [parquet]
    • zip now treats nulls as false in provided mask regardless of the underlying bit value #8721 [arrow]
    • [avro] Incorrect version in crate.io landing page #8691 [arrow]
    • Array: ViewType gc() has bug when array sum length exceed i32::MAX #8681 [arrow]
    • Parquet 56: encounter error: item_reader def levels are None when reading nested field with row filter #8657 [parquet]
    • Degnerate and non-nullable FixedSizeListArrays are not handled #8623 [arrow]
    • [Parquet]Performance Degradation with RowFilter on Unsorted Columns due to Fragmented ReadPlan #8565 [parquet]

    Documentation updates:

    Performance improvements:

    Closed issues:

    • Variant to NullType conversion ignores strict casting #8810
    • Unify display representation for Field #8784
    • Misleading configuration name: skip_arrow_metadata #8780
    • Inconsistent display for types with Metadata #8761 [arrow]
    • Internal arrow-integration-test crate is linked from arrow docs #8739 [arrow]
    • Add benchmark for RunEndEncoded casting #8709 [arrow]
    • [Varaint] Support VariantArray::value to return a Result<Variant> #8672

    Merged pull requests:

    Open source →
  13. 57.0.0 23 Oct 2025
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Added Avro support (new arrow-avro crate) #4886
    • parquet-rewrite: supports compression level and write batch size #8639
    • Error not panic when int96 stastistics aren't size 12 #8614 [parquet]
    • [Variant] Make VariantArray iterable #8612
    • [Variant] impl PartialEq for VariantArray #8610
    • [Variant] Remove potential panics when probing VariantArray #8609
    • [Variant] Remove ceremony of going from list of Variant to VariantArray #8606
    • Eliminate redundant validation in RecordBatch::project #8591 [arrow]
    • [PARQUET][BENCH] Arrow writer bench with compression and/or page v2 #8559 [parquet]
    • [Variant] casting functions are confusingly named #8531 [parquet]
    • Support writing GeospatialStatistics in Parquet writer #8523 [parquet]
    • [thrift-remodel] Optimize convert_row_groups #8517 [parquet]
    • [Variant] Add variant to arrow primitive support for boolean/timestamp/time #8515
    • Test thrift-remodel branch with DataFusion #8513 [parquet]
    • Make UnionArray::is_dense Method Public #8503 [arrow]
    • Add append_n method to FixedSizeBinaryDictionaryBuilder #8497 [arrow]
    • [Parquet] Reduce size of ParquetMetadata when encryption feature is enabled #8469 [parquet]
    • [Parquet] Remove useless mut requirements in geting bloom filter function #8461 [parquet]
    • Change serde dependency to serde_core where applicable #8451 [arrow]
    • [Parquet] Split ParquetMetadataReader into IO/decoder state machine and thrift parsing #8439 [parquet]
    • Remove compiler warning for redundant config enablement #8412 [arrow]
    • Add geospatial statistics creation support for GEOMETRY/GEOGRAPHY Parquet logical types #8411 [arrow]
    • arrow_json lacks with_timestamp_format functions like arrow_csv had offered #8398 [arrow]
    • Unify API for writing column chunks / row groups in parallel #8389 [parquet]
    • Reuse zstd context in arrow IPC writer #8386 [arrow] [arrow-flight]
    • [Variant] Support reading/writing Parquet Variant LogicalType #8370 [parquet]
    • [Variant] Implement a shred_variant function #8361
    • [Parquet] Expose ReadPlan and ReadPlanBuilder #8347 [parquet]
    • [Variant] [Shredding] Support typed_access for List #8337 [parquet]
    • [Variant] [Shredding] Support typed_access for Struct #8336 [parquet]
    • [Variant] [Shredding] Support typed_access for Time64(Microsecond) #8334 [parquet]
    • [Variant] [Shredding] Support typed_access for Decimal128 #8332 [parquet]
    • [Variant] [Shredding] Support typed_access for Timestamp(Microsecond, _) and Timestamp(Nanosecond, _) #8331 [parquet]
    • [Variant] [Shredding] Support typed_access for Date32 #8330 [parquet]
    • [Variant] Support strict casting for all data types #8303
    • [Variant] Support typed access for string types in variant_get #8285
    • [Variant]: Implement DataType::FixedSizeList support for cast_to_variant kernel #8281

    Fixed bugs:

    • Fix arrow-avro Writer Documentation related to AvroBinaryFormat #8631 [arrow]
    • Decimal -> Decimal cast wrongly fails for large scale reduction #8579 [arrow]
    • [Parquet] Avoid fetching multiple pages when max_predicate_cache_sizeis 0 #8542 [parquet]
    • DataType parsing no longer works correctly for old formatted timestamps #8539 [parquet] [arrow]
    • [Parquet] ArrowWriter flush does not work #8534 [parquet]
    • arrow::compute::interleave fails with struct arrays with no fields #8533 [arrow]
    • [Parquet] Over memory consumation for writer page v1 compressed #8526 [parquet]
    • Incorrect Behavior of Collecting a filtered iterator to a BooleanArray #8505 [arrow]
    • [Parquet] ProjectionMask::columns name handling is bug prone #8443 [parquet]
    • [Variant] Shredded typed_value columns must have valid variant types #8435 [parquet]
    • cargo test -p parquet fails with default ulimit #8406 [parquet]
    • Column with List(Struct) causes failed to decode level data for struct array #8404 [parquet]
    • Binaryview Utf8 Cast Issue #8403 [arrow]
    • Decimal precision validation displays value without accounting for scale #8382 [arrow]
    • [Variant] VariantArray::data_type returns StructType, causing Array::as_struct to panic #8319 [parquet]
    • [Variant] writing a VariantArray to parquet panics #8296 [parquet]

    Documentation updates:

    Performance improvements:

    • [parquet] Improve encoding mask API (wrap bare i32 in a struct w/ docs) #8588 [parquet]
    • bench: create zip kernel benchmarks #8654 [arrow] (rluvaton)
    • Skip redundant validation checks in RecordBatch#project #8583 [arrow] (pepijnve)
    • [thrift-remodel] Remove conversion functions for row group and column metadata #8574 [parquet] (etseidl)
    • [PARQUET] Improve memory efficency for compressed writer parquet 1.0 #8527 [parquet] (lilianm)
    • perf: improve GenericByteBuilder::append_array to use SIMD for extending the offsets #8388 [arrow] (rluvaton)

    Closed issues:

    • Utf-8, LargeUtf8, Utf8View #8601
    • [Variant] Improve the get type logic for DataType in variant to arrow row builder #8538
    • Add a README.md for arrow-avro #8504 [arrow]
    • Fix UnionArray references to "positive" values #8418 [arrow]
    • [Variant] metadata field should be marked is non-nullable #8410 [parquet]
    • [Avro] Example read_with_utf8view.rs fails to run with error "Error: ParseError("Unexpected EOF while reading Avro header")" #8380 [arrow]
    • [Geospatial]: Add CI checks for parquet-geospatial crate #8377
    • [Geospatial] Create new parquet-geometry crate #8374

    Merged pull requests:

    Open source →
  14. 56.2.1 11 May 2026

    Nothing published for this version

  15. 56.2.0 23 Sep 2025
    Release notes

    Full Changelog

    Documentation updates:

    Closed issues:

    • comfy-table release 7.2.0 breaks MSRV #8243
    • [Variant] Add Variant::as_f16 #8228
    • Support appending raw bytes to variant objects and lists #8217
    • VariantArrayBuilder uses ParentState for simpler rollbacks #8205
    • Make ObjectBuilder::finish signature infallible #8184
    • Improve performance of i256 to f64 #8013

    Merged pull requests:

    Open source →
  16. 56.1.0 25 Aug 2025
    Release notes

    Full Changelog

    Implemented enhancements:

    • Implement cast and other operations on decimal32 and decimal64 #7815 #8204 [arrow]
    • Speed up Parquet filter pushdown with predicate cache #8203 [parquet]
    • Optionally read parquet page indexes #8070 [parquet]
    • Parquet reader: add method for sync reader read bloom filter #8023 [parquet]
    • [parquet] Support writing logically equivalent types to ArrowWriter #8012 [parquet]
    • Improve StringArray(Utf8) sort performance #7847 [arrow]
    • feat: arrow-ipc delta dictionary support #8001 [arrow] (JakeDern)

    Fixed bugs:

    • The Rustdocs are clean CI job is failing #8175
    • [avro] Bug in resolving avro schema with named type #8045 [arrow]
    • Doc test failure (test arrow-avro/src/lib.rs - reader) when verifying avro 56.0.0 RC1 release #8018 [arrow]

    Documentation updates:

    Performance improvements:

    Closed issues:

    • [Variant] Improve fuzz test for Variant #8199
    • [Variant] Improve fuzz test for Variant #8198
    • VariantArrayBuilder tracks starting offsets instead of (offset, len) pairs #8192
    • Rework ValueBuilder API to work with ParentState for reliable nested rollbacks #8188
    • [Variant] Rename ValueBuffer as ValueBuilder #8186
    • [Variant] Refactor ParentState to track and rollback state on behalf of its owning builder #8182
    • [Variant] ObjectBuilder should detect duplicates at insertion time, not at finish #8180
    • [Variant] ObjectBuilder does not reliably check for duplicates #8170
    • [Variant] Support StringView and LargeString in ´batch_json_string_to_variant` #8145 [parquet]
    • [Variant] Rename batch_json_string_to_variant and batch_variant_to_json_string json_to_variant #8144 [parquet]
    • [avro] Use tempfile crate rather than custom temporary file generator in tests #8143 [arrow]
    • [Avro] Use Write rather dyn Write in Decoder #8142 [arrow]
    • [Variant] Nested builder rollback is broken #8136
    • [Variant] Add support the remaing primitive type(timestamp_nanos/timestampntz_nanos/uuid) for parquet variant #8126
    • Meta: Implement missing Arrow 56.0 lint rules - Sequential workflow #8121
    • ARROW-012-015: Add linter rules for remaining Arrow 56.0 breaking changes #8120
    • ARROW-010 & ARROW-011: Add linter rules for Parquet Statistics and Metadata API removals #8119
    • ARROW-009: Add linter rules for IPC Dictionary API removals in Arrow 56.0 #8118
    • ARROW-008: Add linter rule for SerializedPageReaderState usize→u64 breaking change #8117
    • ARROW-007: Add linter rule for Schema.all_fields() removal in Arrow 56.0 #8116
    • [Variant] Implement ShreddingState::AllNull variant #8088 [parquet]
    • [Variant] Support Shredded Objects in variant_get #8083 [parquet]
    • [Variant]: Implement DataType::RunEndEncoded support for cast_to_variant kernel #8064 [parquet]
    • [Variant]: Implement DataType::Dictionary support for cast_to_variant kernel #8062 [parquet]
    • [Variant]: Implement DataType::Struct support for cast_to_variant kernel #8061 [parquet]
    • [Variant]: Implement DataType::Decimal32/Decimal64/Decimal128/Decimal256 support for cast_to_variant kernel #8059 [parquet]
    • [Variant]: Implement DataType::Timestamp(..) support for cast_to_variant kernel #8058 [parquet]
    • [Variant]: Implement DataType::Float16 support for cast_to_variant kernel #8057 [parquet]
    • [Variant]: Implement DataType::Interval support for cast_to_variant kernel #8056 [parquet]
    • [Variant]: Implement DataType::Time32/Time64 support for cast_to_variant kernel #8055 [parquet]
    • [Variant]: Implement DataType::Date32 / DataType::Date64 support for cast_to_variant kernel #8054 [parquet]
    • [Variant]: Implement DataType::Null support for cast_to_variant kernel #8053 [parquet]
    • [Variant]: Implement DataType::Boolean support for cast_to_variant kernel #8052 [parquet]
    • [Variant]: Implement DataType::FixedSizeBinary support for cast_to_variant kernel #8051 [parquet]
    • [Variant]: Implement DataType::Binary/LargeBinary/BinaryView support for cast_to_variant kernel #8050 [parquet]
    • [Variant]: Implement DataType::Utf8/LargeUtf8/Utf8View support for cast_to_variant kernel #8049 [parquet]
    • [Variant] Implement cast_to_variant kernel #8043 [parquet]
    • [Variant] Support variant_get kernel for shredded variants #7941 [parquet]
    • Add test for casting Decimal128 (i128::MIN and i128::MAX) to f64 with overflow handling #7939 [arrow]

    Merged pull requests:

    Open source →
  17. 56.0.0 01 Aug 2025
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • [parquet] Relax type restriction to allow writing dictionary/native batches for same column #8004
    • Support casting int64 to interval #7988 [arrow]
    • [Variant] Add ListBuilder::with_value for convenience #7951 [parquet]
    • [Variant] Add ObjectBuilder::with_field for convenience #7949 [parquet]
    • [Variant] Impl PartialEq for VariantObject #7943 #7948
    • [Variant] Offer simdutf8 as an optional dependency when validating metadata #7902 [parquet] [arrow]
    • [Variant] Avoid collecting offset iterator #7901 [parquet]
    • [Variant] Remove superfluous check when validating monotonic offsets #7900 [parquet]
    • [Variant] Avoid extra allocation in ObjectBuilder #7899 [parquet]
    • [Variant][Compute] variant_get kernel #7893 [parquet]
    • [Variant][Compute] Add batch processing for Variant-JSON String conversion #7883 [parquet]
    • Support MapArray in lexsort #7881 [arrow]
    • [Variant] Add testing for invalid variants (fuzz testing??) #7842 [parquet]
    • [Variant] VariantMetadata, VariantList and VariantObject are too big for Copy #7831 [parquet]
    • Allow choosing flate2 backend #7826 [parquet]
    • [Variant] Tests for creating "large" VariantObjectss #7821 [parquet]
    • [Variant] Tests for creating "large" VariantLists #7820 [parquet]
    • [Variant] Support VariantBuilder to write to buffers owned by the caller #7805 [parquet]
    • [Variant] Move JSON related functionality to different crate. #7800 [parquet]
    • [Variant] Add flag in ObjectBuilder to control validation behavior on duplicate field write #7777 [parquet]
    • [Variant] make serde_json an optional dependency of parquet-variant #7775 [parquet]
    • [coalesce] Implement specialized BatchCoalescer::push_batch for PrimitiveArray #7763 [arrow]
    • Add sort_kernel benchmark for StringViewArray case #7758 [arrow]
    • [Variant] Improved API for accessing Variant Objects and lists #7756 [parquet]
    • Buildable reproducible release builds #7751
    • Allow per-column parquet dictionary page size limit #7723 [parquet]
    • [Variant] Test and implement efficient building for "large" Arrays #7699 [parquet]
    • [Variant] Improve VariantBuilder when creating field name dictionaries / sorted dictionaries #7698 [parquet]
    • [Variant] Add input validation in VariantBuilder #7697 [parquet]
    • [Variant] Support Nested Data in VariantBuilder #7696 [parquet]
    • Parquet: Incorrect min/max stats for int96 columns #7686 [parquet]
    • Add DictionaryArray::gc method #7683 [arrow]
    • [Variant] Add negative tests for reading invalid primitive variant values #7645 [parquet]

    Fixed bugs:

    • [Variant] Panic when appending nested objects to VariantBuilder #7907 [parquet]
    • Panic when casting large Decimal256 to f64 due to unchecked unwrap() #7886 [arrow]
    • Incorrect inlined string view comparison after " Add prefix compare for inlined" #7874 [parquet] [arrow]
    • [Variant] test_json_to_variant_object_very_large takes over 20s #7872 [parquet]
    • [Variant] If ObjectBuilder::finalize is not called, the resulting Variant object is malformed. #7863 [parquet]
    • CSV error message has values transposed #7848 [arrow]
    • Concating struct arrays with no fields unnecessarily errors #7828 [arrow]
    • Clippy CI is failing on main after Rust 1.88 upgrade #7796 [parquet] [arrow] [arrow-flight]
    • [Variant] Field lookup with out of bounds index causes unwanted behavior #7784 [parquet]
    • Error verifying parquet-variant crate on 55.2.0 with verify-release-candidate.sh #7746
    • test_to_pyarrow tests fail during release verification #7736 [arrow]
    • [parquet_derive] Example for ParquetRecordWriter is broken. #7732
    • [Variant] Variant::Object can contain two fields with the same field name #7730 [parquet]
    • [Variant] Panic when appending Object or List to VariantBuilder #7701 [parquet]
    • Slicing a single-field dense union array creates an array with incorrect logical_nulls length #7647 [arrow]
    • Ensure page encoding statistics are written to Parquet file #7643 [parquet] (etseidl)

    Documentation updates:

    Performance improvements:

    • RowConverter on list should only encode the sliced list values and not the entire data #7993 [arrow]
    • [Variant] Avoid extra allocation in list builder #7977 [parquet]
    • [Variant] Convert JSON to Variant with fewer copies #7964 [parquet]
    • Optimize sort kernels partition_validity method #7936 [arrow]
    • Speedup sorting for inline views #7857 [arrow]
    • Perf: Investigate and improve parquet writing performance #7822 [parquet] [arrow]
    • Perf: optimize sort string_view performance #7790 [arrow]
    • Clickbench microbenchmark spends significant time in memcmp for not_empty predicate #7766 [arrow]
    • Use prefix first for comparisons, resort to data buffer for remaining data on equal values #7744 [arrow]
    • Change use of inline_value to inline it to a u128 #7743 [arrow]
    • Add efficient way to upgrade keys for additional dictionary builders #7654 [arrow]
    • Perf: Make sort string view fast(1.5X ~ 3X faster) #7792 [arrow] (zhuqi-lucas)
    • Add specialized coalesce path for PrimitiveArrays #7772 [arrow] (alamb)

    Closed issues:

    • Implement full-range i256::to_f64 to replace current ±∞ saturation for Decimal256 → Float64 #7985
    • [Variant] impl FromIterator fpr VariantPath #7955
    • validated and is_fully_validated flags doesn't need to be part of PartialEq #7952 [parquet]
    • [Variant] remove VariantMetadata::dictionary_size #7947 [parquet]
    • [Variant] Improve VariantArray performance by storing the index of the metadata and value arrays #7920
    • [Variant] Converting variant to JSON string seems slow #7869 [parquet]
    • [Variant] Present Variant at Iceberg Summit NYC July 10, 2025 #7858
    • [Variant] Avoid second copy of field name in MetadataBuilder #7814 [parquet]
    • Remove APIs deprecated in or before 54.0.0 #7810 [parquet] [arrow] [arrow-flight]
    • [Variant] Make it harder to forget to finish a pending parent i n ObjectBuilder #7798 [parquet]
    • [Variant] Remove explicit ObjectBuilder::finish() and ListBuilder::finish and move to Drop impl #7780 [parquet]
    • Reduce repetition in tests for arrow-row/src/run.rs #7692 [arrow]
    • [Variant] Add tests for invalid variant values (aka verify invalid inputs) #7681 [parquet]
    • [Variant] Introduce structs for Variant::Decimal types #7660 [parquet]

    Merged pull requests:

    Open source →
  18. 55.2.0 26 Jun 2025
    Release notes
    • Add a strong_count method to Buffer #7568 [arrow]
    • Create version of LexicographicalComparator that compares fixed number of columns #7531 [arrow]
    • parquet-show-bloom-filter should work with integer typed columns #7528 [parquet]
    • Allow merging primitive dictionary values in concat and interleave kernels #7518 [arrow]
    • Add efficient concatenation of StructArrays #7516 [arrow]
    • Rename flight-sql-experimental to flight-sql #7498 [arrow] [arrow-flight]
    • Consider moving from ryu to lexical-core for string formatting / casting floats to string. #7496
    • Arithmetic kernels can be safer and faster #7494 [arrow]
    • Speedup filter_bytes by precalculating capacity #7465 [arrow]
    • [Variant]: Rust API to Create Variant Values #7424 [parquet] [arrow]
    • [Variant] Rust API to Read Variant Values #7423 [arrow]
    • Release arrow-rs / parquet Minor version 55.1.0 (May 2025) #7393 [parquet]
    • Support create_random_array for Decimal data types #7343 [arrow]
    • Truncate Parquet page data page statistics #7555 [parquet] (etseidl)

    Fixed bugs:

    • In arrow_json, Decoder::decode can panic if it encounters two high surrogates in a row. #7712
    • FlightSQL "GetDbSchemas" and "GetTables" schemas do not fully match the protocol #7637 [arrow] [arrow-flight]
    • Cannot read encrypted Parquet file if page index reading is enabled #7629 [parquet]
    • encoding_stats not present in Parquet generated by parquet-rewrite #7616 [parquet]
    • When writing parquet plaintext footer files footer_signing_key_metadata is not included, encryption alghoritm is always written in footer #7599 [parquet]
    • new_null_array panics when constructing a struct of a dictionary #7571
    • Parquet derive fails to build when Result is aliased #7547
    • Unable to read Dictionary(u8, FixedSizeBinary(_)) using datafusion. #7545 [parquet]
    • filter_record_batch panics with empty struct array. #7538 [arrow]
    • Panic in pretty_format function when displaying DurationSecondsArray with i64::MIN / i64::MAX #7533 [arrow]
    • Record API unable to parse TIME_MILLIS when encoded as INT32 #7510 [parquet]
    • The read_record_batch func of the RecordBatchDecoder does not respect the skip_validation property #7508 [arrow]
    • arrow-55.1.0 breaks filter_record_batch #7500
    • Files containing binary data with >=8_388_855 bytes per row written with arrow-rs can't be read with pyarrow #7489 [parquet]
    • [Bug] Ingestion with Arrow Flight Sql panic when the input stream is empty or fallible #7329 [arrow] [arrow-flight]
    • Ensure page encoding statistics are written to Parquet file #7643 [parquet] (etseidl)

    Documentation updates:

    Closed issues:

    • [Variant] More efficient determination of String vs ShortString #7700
    • [Variant] Improve API for iterating over values of a VariantList #7685 [parquet]
    • [Variant] Consider validating variants on creation (rather than read) #7684 [parquet]
    • Miri test_native_type_pow test failing #7641 [arrow]
    • Improve performance of coalesce and concat for views #7615 [arrow]
    • Bad min value in row group statistics in some special cases #7593
    • Feature Request: BloomFilter Position Flexibility in parquet-rewrite #7552 [parquet]

    Merged pull requests:

    Open source →
  19. 55.1.0 13 May 2025
    Release notes

    Full Changelog

    Breaking changes:

    • refactor!: do not default the struct array length to 0 in Struct::try_new #7247 [arrow] (westonpace)

    Implemented enhancements:

    • Add a way to get max usize from OffsetSizeTrait #7474 [arrow]
    • Deterministic metadata encoding #7448 [arrow]
    • Support Arrow type Dictionary with value FixedSizeBinary in Parquet #7445
    • Parquet: Add ability to project rowid in parquet reader #7444
    • Move parquet::file::metadata::reader::FooterTail to parquet::file::metadata so that it is public #7438 [parquet]
    • Speedup take_bytes by precalculating capacity #7432 [arrow]
    • Improve performance of interleave_primitive and interleave_bytes #7421 [arrow]
    • Implement Eq and Default for ScalarBuffer #7411 [arrow]
    • Add decryption support for column index and offset index #7390 [parquet]
    • Support writing encrypted Parquet files with plaintext footers #7320 [parquet]
    • Support Parquet key management tools #7256 [parquet]
    • Verify footer tags when reading encrypted Parquet files with plaintext footers #7255 [parquet]
    • StructArray::try_new behavior can be unexpected when there are no child arrays #7246 [arrow]
    • Parquet performance: improve performance of reading int8/int16 #7097 [parquet]

    Fixed bugs:

    • StructArray::try_new validation incorrectly returns an error when logical_nulls() returns Some() && null_count == 0 #7435
    • Reading empty DataPageV2 fails with snappy: corrupt input (empty) #7388 [parquet]

    Documentation updates:

    Closed issues:

    • Refactor Parquet DecryptionPropertiesBuilder to fix use of unreachable #7476 [parquet]
    • Implement Eq and Default for OffsetBuffer #7417 [arrow]

    Merged pull requests:

    Open source →
  20. 55.0.0 11 Apr 2025
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Improve the performance of concat #7357 [arrow]
    • Pushdown predictions to Parquet in-memory row group fetches #7348 [parquet]
    • Improve CSV parsing errors: Print the row that makes csv parsing fails #7344 [arrow]
    • Support ColumnMetaData encoding_stats in Parquet Writing #7341 [parquet]
    • Support writing Parquet with modular encryption #7327 [parquet]
    • Parquet Use U64 Instead of Usize (wasm support for files greater than 4GB) #7238 [parquet]
    • Support different TimeUnits and timezones when reading Timestamps from INT96 #7220 [parquet]

    Fixed bugs:

    • New clippy failures in code base with release of rustc 1.86 #7381 [parquet] [arrow]
    • Fix bug in ParquetMetaDataReader and add test of suffix metadata reads with encryption #7372 [parquet] (etseidl)

    Documentation updates:

    • Improve documentation on ArrayData::offset #7385 [arrow] (alamb)
    • Improve documentation for AsyncFileReader::get_metadata #7380 [parquet] (alamb)
    • Improve documentation on implementing Parquet predicate pushdown #7370 [parquet] (alamb)
    • Add documentation and examples for pretty printing, make pretty_format_columns_with_options pub #7346 [arrow] (alamb)
    • Improve documentation on writing parquet, including multiple threads #7321 [parquet] (alamb)

    Merged pull requests:

    Open source →
  21. 54.3.1 30 Mar 2025
    Release notes

    Full Changelog

    Fixed bugs:

    • Round trip encoding of list of fixed list fails when offset is not zero #7315

    Merged pull requests:

    Open source →
  22. 54.3.0 21 Mar 2025
    Release notes

    Full Changelog

    Implemented enhancements:

    • Using column chunk offset index in InMemoryRowGroup::fetch #7300
    • Support reading parquet with modular encryption #7296 [parquet]
    • Add example for how to read/write encrypted parquet files #7281 [parquet]
    • Have writer return parsed ParquetMetadata #7254 [parquet]
    • feat: Support Utf8View in JSON reader #7244 [arrow]
    • StructBuilder should provide a way to get a &dyn ArrayBuilder of a field builder #7193 [arrow]
    • Support div_wrapping/rem_wrapping for numeric arithmetic kernels #7158 [arrow]
    • Improve RleDecoder performance #7195 [parquet] (Dandandan)
    • Improve arrow-json deserialization performance by 30% #7157 [arrow] (mwylde)
    • Add with_skip_validation flag to IPC StreamReader, FileReader and FileDecoder #7120 [arrow] (alamb)

    Fixed bugs:

    • Archery integration CI test is failing on main: error: package half v2.5.0 cannot be built because it requires rustc 1.81 or newer, while the currently active rustc version is 1.77.2 #7291
    • MSRV CI check is failing on main #7289
    • Incorrect IPC schema encoding for multiple dictionaries #7058 [arrow] [arrow-flight]

    Documentation updates:

    Merged pull requests:

    Open source →
  23. 54.2.1 27 Feb 2025
    Release notes

    Full Changelog

    Fixed bugs:

    • Use chrono >= 0.4.34, < 0.4.40 to avoid breaking #7210

    Fixed bugs:

    Open source →
  24. 54.2.0 16 Feb 2025
    Release notes

    Full Changelog

    Implemented enhancements:

    • Casting from Utf8View to Dict(k, Utf8View) #7114
    • Support creating map arrays with key metadata #7100 [arrow]
    • [parquet] Print Parquet BasicTypeInfo id when present #7081 [parquet]
    • Add arrow-ipc benchmarks for the IPC reader and writer #6968 [arrow]

    Fixed bugs:

    • NullBufferBuilder::allocated_size Returns Size in Bits #7121 [arrow]
    • [Regression in 54.0.0]. Decimal cast to smaller precision gives invalid (off-by-one) result in some cases #7069 [arrow]
    • Minor: Fix deprecated note to point to the correct const #7067 [arrow]
    • incorrect error message for reading definition levels #7056 [parquet]
    • First None in ListArray panics in cast_with_options #7043 [arrow]

    Documentation updates:

    Merged pull requests:

    Open source →
  25. 54.1.0 02 Feb 2025
    Release notes

    Full Changelog

    Implemented enhancements:

    • Create GitHub releases automatically on tagging #7041
    • Add required methods to access inner builder for NullBufferBuilder #7002 [arrow]
    • Re-export NullBufferBuilder in the arrow crate #6975 [arrow]
    • arrow-string function should support binary input as well #6923 [arrow]
    • MMap support for IPC files #6709 [arrow]
    • fix: mark (Large)ListView as nested and support in equal data type #6995 [arrow] (rluvaton)
    • Expose min/max values for Decimal128/256 and improve docs #6992 [arrow] (alamb)
    • [Parquet] Improve speed of dictionary encoding NaN float values #6953 [parquet] (adamreeve)
    • Optimize BooleanBufferBuilder for non nullable columns #6973 [arrow]
    • arrow::compute::concat should merge dictionary type when concatenating list of dictionaries #6888 [arrow]
    • Improve error message for unsupported cast between struct and other types #6724 [arrow]
    • implement regexp_match, regexp_scalar_match and regexp_array_match for StringViewArray #6717 [arrow]
    • Speed up Parquet utf8 validation #6667 [parquet]

    Fixed bugs:

    • Regression: Concatenating sliced ListArrays is broken #7034
    • PrimitiveDictionaryBuilder with specific value data type and capacity #7011 [arrow]
    • Arrow IPC Writer Panics for sliced nested arrays #6997 [arrow]
    • RecordBatch with no columns cannot be roundtripped through Parquet #6988 [parquet]
    • StringView: Using the Interleave kernel (and potentially others) results in many repeated buffers in variadic_buffers #6780 [arrow]
    • fix prefetch of page index #6999 [parquet] (adriangb)
    • fix: Parquet column writer Dictionary(_, Decimal128) and Dictionary(_, Decimal256) #6987 [parquet] (korowa)
    • Writing floating point values containing NaN to Parquet is slow when using dictionary encoding #6952 [parquet] [arrow]
    • Public API using private types: Buffer::from_bytes takes unexported Bytes #6754 [parquet] [arrow] [arrow-flight]
    • Some MSRVs are inaccurate #6741 [parquet] [arrow] [arrow-flight]

    Documentation updates:

    Merged pull requests:

    Open source →
  26. 54.0.0 23 Dec 2024
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Parquet schema hint doesn't support integer types upcasting #6891 [parquet]
    • Parquet UTF-8 max statistics are overly pessimistic #6867 [parquet]
    • Add builder support for Int8 keys #6844 [arrow]
    • Formalize the name of the nested Field in a list #6784 [parquet] [arrow] [arrow-flight]
    • Allow disabling the writing of Parquet Offset Index #6778 [parquet]
    • parquet::record::make_row is not exposed to users, leaving no option to users to manually create Row objects #6761 [parquet]
    • Avoid from_num_days_from_ce_opt calls in timestamp_s_to_datetime if we don't need #6746 [arrow]
    • Support Temporal -> Utf8View casting #6734 [arrow]
    • Add Option To Coerce List Type on Parquet Write #6733 [parquet] [arrow]
    • Support Numeric -> Utf8View casting #6714 [arrow]
    • Support Utf8View <=> boolean casting #6713 [arrow]

    Fixed bugs:

    • Buffer::bit_slice loses length with byte-aligned offsets #6895 [arrow]
    • parquet arrow writer doesn't track memory size correctly for fixed sized lists #6839 [parquet]
    • Casting Decimal128 to Decimal128 with smaller precision produces incorrect results in some cases #6833 [arrow]
    • Should empty nullable dictionary be parsed as null from arrow-csv? #6821 [arrow]
    • Array take doesn't make fields nullable #6809
    • Arrow Flight Encodes a Slice's List Offsets If the slice offset is starts with zero #6803 [arrow]
    • Parquet readers incorrectly interpret legacy nested lists #6756 [parquet]
    • filter_bits under-allocates resulting boolean buffer #6750 [arrow]
    • Multi-language support issues with Arrow FlightSQL client's execute_update and execute_ingest methods #6545 [arrow] [arrow-flight]

    Documentation updates:

    Closed issues:

    Merged pull requests:

    Open source →
  27. 53.4.1 07 Mar 2025
    Release notes

    Full Changelog

    Fixed bugs:

    • Take empty struct array would get array with length 0 #7225

    Closed issues:

    • Release arrow-rs / parquet patch version 54.2.1 (Feb 2025) (HOTFIX) #7209 [arrow]
    Open source →
  28. 53.4.0 18 Jan 2025

    Nothing published for this version

  29. 53.3.0 20 Nov 2024
    Release notes

    Full Changelog

    • Signed decimal e-notation parsing bug #6728 [arrow]
    • Add support for Utf8View -> numeric in can_cast_types #6715
    • IPC file writer produces incorrect footer when not preserving dict ID #6710 [arrow]
    • parquet from_thrift_helper incorrectly checks index #6693 [parquet]
    • Primitive REPEATED fields not contained in LIST annotated groups aren't read as lists by record reader #6648 [parquet]
    • DictionaryHandling does not recurse into Map fields #6644 [arrow] [arrow-flight]
    • Array writer output empty when no record is written #6613 [arrow]
    • Archery Integration Test with c# failing on main #6577 [arrow]
    • Potential unsoundness in filter_run_end_array #6569 [arrow]
    • Parquet reader can generate incorrect validity buffer information for nested structures #6510 [parquet]
    • arrow-array ffi: FFI_ArrowArray.null_count is always interpreted as unsigned and initialized during conversion from C to Rust. #6497 [arrow]

    Documentation updates:

    Performance improvements:

    Closed issues:

    • Incorrect like results for pattern starting/ending with % percent and containing escape characters #6702 [arrow]

    Merged pull requests:

    Open source →
  30. 53.2.0 24 Oct 2024
    Release notes

    Full Changelog

    Implemented enhancements:

    • Implement arrow_json encoder for Decimal128 & Decimal256 DataTypes #6605 [arrow]
    • Support DataType::FixedSizeList in make_builder within struct_builder.rs #6594 [arrow]
    • Support DataType::Dictionary in make_builder within struct_builder.rs #6589 [arrow]
    • Interval parsing from string - accept "mon" and "mons" token #6548 [arrow]
    • AsyncArrowWriter API to get the total size of a written parquet file #6530 [parquet]
    • append_many for Dictionary builders #6529 [arrow]
    • Missing tonic GRPC_STATUS with tonic 0.12.1 #6515 [arrow] [arrow-flight]
    • Add example of how to use parquet metadata reader APIs for a local cache #6504 [parquet]
    • Remove reliance on raw-entry feature of Hashbrown #6498 [parquet] [arrow] [arrow-flight]
    • Improve page index metadata loading in SerializedFileReader::new_with_options #6491 [parquet]
    • Release arrow-rs / parquet minor version 53.1.0 (October 2024) #6340 [arrow]

    Fixed bugs:

    Documentation updates:

    Closed issues:

    Merged pull requests:

    Open source →
  31. 53.1.0 06 Oct 2024
    Release notes

    Full Changelog

    Implemented enhancements:

    • Write null counts in Parquet statistics when they are known to be zero #6502 [parquet]
    • Make it easier to find / work with ByteView #6478 [arrow]
    • Update lexical-core version due to soundness issues with current version #6468
    • Add builder style API for manipulating ParquetMetaData #6465 [parquet]
    • ArrayData.align_buffers should support Struct data type / child data #6461 [arrow]
    • Add a method to return the number of skipped rows in a RowSelection #6428 [parquet]
    • Bump lexical-core to 1.0 #6397 [arrow]
    • Add union_extract kernel #6386 [arrow]
    • implement regexp_is_match_utf8 and regexp_is_match_utf8_scalar for StringViewArray #6370 [arrow]
    • Add support for BinaryView in arrow_string::length #6358 [arrow]
    • Add as_union to AsArray #6351
    • Ability to append non contiguous strings to StringBuilder #6347 [arrow]
    • Add Catalog DB Schema subcommands to flight_sql_client #6331 [arrow] [arrow-flight]
    • Add support for Utf8View in arrow_string::length #6305 [arrow]
    • Reading FIXED_LEN_BYTE_ARRAY columns with nulls is inefficient #6296 [parquet]
    • Optionally verify 32-bit CRC checksum when decoding parquet pages #6289 [parquet]
    • Speed up pad_nulls for FixedLenByteArrayBuffer #6297 [parquet] (etseidl)
    • Improve performance of set_bits by avoiding to set individual bits #6288 [arrow] (kazuyukitanimura)

    Fixed bugs:

    • BitIterator panics when retrieving length #6480 [arrow]
    • Flight data retrieved via Python client (wrapping C++) cannot be used by Rust Arrow #6471 [arrow]
    • CI integration test failing: Archery test With other arrows #6448 [parquet] [arrow] [arrow-flight]
    • IPC not respecting not preserving dict ID #6443 [parquet] [arrow] [arrow-flight]
    • Failing CI: Prost requires Rust 1.71.1 #6436 [arrow] [arrow-flight]
    • Invalid struct arrays in IPC data causes panic during read #6416 [arrow]
    • REE Dicts cannot be encoded/decoded with streaming IPC #6398 [arrow]
    • Reading json map with non-nullable value schema doesn't error if values are actually null #6391
    • StringViewBuilder with deduplication does not clear observed values #6384 [arrow]
    • Cast from Decimal(p, s) to dictionary-encoded Decimal(p, s) loses precision and scale #6381 [arrow]
    • LocalFileSystem list operation returns objects in wrong order #6375
    • compute::binary_mut returns Err(PrimitiveArray<T>) only with certain arrays #6374 [arrow]
    • Exporting Binary/Utf8View from arrow-rs to pyarrow fails #6366 [arrow]
    • warning: methods as_any and next_batch are never used in parquet crate #6143 [parquet]

    Documentation updates:

    Closed issues:

    • Columnar json writer for arrow-json #6411
    • Primitive binary/unary are not as fast as they could be #6364 [arrow]
    • Different numeric type may be able to compare #6357

    Merged pull requests:

    Open source →
  32. 53.0.0 03 Sep 2024
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Derive PartialEq and Eq for parquet::arrow::ProjectionMask #6329 [parquet]
    • Allow converting empty pyarrow.RecordBatch to arrow::RecordBatch #6318 [arrow]
    • Parquet writer should not write any min/max data to ColumnIndex when all values are null #6315 [parquet]
    • Parquet: Add union method to RowSelection #6307 [parquet]
    • Support writing UTC adjusted time arrow array to parquet #6277 [parquet]
    • A better way to resize the buffer for the snappy encode/decode #6276 [parquet]
    • parquet_derive: support reading selected columns from parquet file #6268
    • Tests for invalid parquet files #6261 [parquet]
    • Implement date_part for Duration #6245 [arrow]
    • Avoid unnecessary null buffer construction when converting arrays to a different type #6243 [parquet] [arrow]
    • Add parquet_opendal in related projects #6235
    • Look into optimizing reading FixedSizeBinary arrays from parquet #6219 [parquet] [arrow]
    • Add benchmarks for BYTE_STREAM_SPLIT encoded Parquet FIXED_LEN_BYTE_ARRAY data #6203 [parquet]
    • Make it easy to write parquet to object_store -- Implement AsyncFileWriter for a type that implements obj_store::MultipartUpload for AsyncArrowWriter #6200 [parquet]
    • Remove test duplication in parquet statistics tets #6185 [parquet]
    • Support BinaryView Types in C Schema FFI #6170 [arrow]
    • speedup take_byte_view kernel #6167 [arrow]
    • Add support for StringView and BinaryView statistics in StatisticsConverter #6164 [parquet]
    • Support casting BinaryView --> Utf8 and LargeUtf8 #6162 [arrow]
    • Implement filter kernel specially for FixedSizeByteArray #6153 [arrow]
    • Use LevelHistogram throughout Parquet metadata #6134 [parquet]
    • Support DoPutStatementIngest from Arrow Flight SQL 17.0 #6124 [arrow] [arrow-flight]
    • ColumnMetaData should no longer be written inline with data #6115 [parquet]
    • Implement date_part for Interval #6113 [arrow]
    • Implement Into<Arc<dyn Array>> for ArrayData #6104
    • Allow flushing or non-buffered writes from arrow::ipc::writer::StreamWriter #6099 [arrow]
    • Default block_size for StringViewArray #6094 [arrow]
    • Remove Statistics::has_min_max_set and ValueStatistics::has_min_max_set and use Option instead #6093 [parquet]
    • Upgrade arrow-flight to tonic 0.12 #6072
    • Improve speed of row converter by skipping utf8 checks #6058 [arrow]
    • Extend support for BYTE_STREAM_SPLIT to FIXED_LEN_BYTE_ARRAY, INT32, and INT64 primitive types #6048 [parquet]
    • Release arrow-rs / parquet minor version 52.2.0 (August 2024) #5998 [parquet] [arrow]

    Fixed bugs:

    • Invalid ColumnIndex written in parquet #6310 [parquet]
    • comparison_kernels benchmarks panic #6283 [arrow]
    • Printing schema metadata includes possibly incorrect compression level #6270 [parquet]
    • Don't panic when creating Field from FFI_ArrowSchema with no name #6251 [arrow]
    • lexsort_to_indices should not fallback to non-lexical sort if the datatype is not supported #6226 [arrow]
    • Parquet Statistics null_count does not distinguish between 0 and not specified #6215 [parquet]
    • Using a take kernel on a dense union can result in reaching "unreachable" code #6206 [arrow]
    • Adding sub day seconds to Date64 is ignored. #6198 [arrow]
    • mismatch between parquet type is_optional codes and comment #6191 [parquet]

    Documentation updates:

    Closed issues:

    • Simplify take octokit workflow #6279
    • Make the bearer token visible in FlightSqlServiceClient #6253 [arrow] [arrow-flight]
    • Port take workflow to use oktokit #6242
    • Remove SchemaBuilder dependency from StructArray constructors #6138 [arrow]

    Merged pull requests:

    Open source →
  33. 52.2.0 28 Jul 2024
    Release notes

    Full Changelog

    Implemented enhancements:

    Fixed bugs:

    • Panic in ParquetMetadata::memory_size if no min/max set #6091 [parquet]
    • BinaryViewArray doesn't roundtrip a single Some(&[]) through parquet #6086 [parquet]
    • Parquet ColumnIndex for null columns is written even when statistics are disabled #6010 [parquet]

    Documentation updates:

    Closed issues:

    • Potential performance improvements for reading Parquet to StringViewArray/BinaryViewArray #5904 [parquet] [arrow]

    Merged pull requests:

    Open source →
  34. 52.1.0 06 Jul 2024
    Release notes

    Full Changelog

    Implemented enhancements:

    • Implement eq comparison for StructArray #5960 [arrow]
    • A new feature as a workaround hack to unavailable offset support in Arrow Java #5959 [arrow]
    • Add min_bytes and max_bytes to PageIndex #5949 [parquet]
    • Error message in ArrowNativeTypeOp::neg_checked doesn't include the operation #5944 [arrow]
    • Add object_store_opendal as related projects #5925
    • Opaque retry errors make debugging difficult #5923
    • Implement arrow-row en/decoding for GenericByteView types #5921 [arrow]
    • The arrow-rs repo is very large #5908
    • [DISCUSS] Release arrow-rs / parquet patch release 52.0.1 #5906 [arrow]
    • Implement compare_op for GenericBinaryView #5897 [arrow]
    • New null with view types are not supported #5893 [arrow]
    • Cleanup ByteView construction #5878 [parquet] [arrow]
    • cast kernel support for StringViewArray and BinaryViewArray \<--\> DictionaryArray` #5861 [arrow]
    • parquet::ArrowWriter show allow writing Bloom filters before the end of the file #5859 [parquet]
    • API to get memory usage for parquet ArrowWriter #5851 [parquet]
    • Support writing IntervalMonthDayNanoArray to parquet via Arrow Writer #5849 [parquet]
    • Write parquet statistics for IntervalDayTimeArray , IntervalMonthDayNanoArray and IntervalYearMonthArray #5847 [parquet]
    • Make RowSelection::from_consecutive_ranges public #5846 [parquet]
    • Schema::try_merge should be able to merge List of any data type with List of Null data type #5843 [arrow]
    • Add a way to move fields out of parquet Row #5841 [parquet]
    • Make TimeUnit and IntervalUnit Copy #5839 [arrow]
    • Limit Parquet Page Row Count By Default to reduce writer memory requirements with highly compressable columns #5797 [parquet]
    • Report / blog on parquet metadata sizes for "large" (1000+) numbers of columns #5770 [parquet] [arrow]
    • Structured ByteView Access (underlying StringView/BinaryView representation) #5736 [arrow]
    • [parquet_derive] support OPTIONAL (def_level = 1) columns by default #5716
    • Maps cast to other Maps with different Elements, Key and Value Names #5702 [arrow]
    • Provide Arrow Schema Hint to Parquet Reader #5657 [parquet] [arrow]

    Fixed bugs:

    • Wrong error type in case of invalid amount in Interval components #5986 [arrow]
    • Empty and Null structarray fails to IPC roundtrip #5920
    • FixedSizeList got out of range when the total length of the underlying values over i32::MAX #5901 [arrow]
    • Out of range when extending on a slice of string array imported through FFI #5896 [arrow]
    • cargo msrv test is failing on main for object_store #5864 [parquet]

    Documentation updates:

    Closed issues:

    • Implement benchmarks for compare_op for GenericBinaryView #5903 [arrow]

    Merged pull requests:

    Open source →
  35. 52.0.0 06 Jun 2024
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Serialize Binary and LargeBinary as HEX with JSON Writer #5783 [arrow]
    • Some optimizations in arrow_buffer::util::bit_util do more harm than good #5771 [arrow]
    • Support skipping comments in CSV files #5758 [arrow]
    • parquet-derive should be included in repository README. #5751
    • proposal: Make AsyncArrowWriter accepts AsyncFileWriter trait instead #5738 [parquet]
    • Nested nullable fields do not get treated as nullable in data_gen #5712 [arrow]
    • Optionally support flexible column lengths #5678 [arrow]
    • Arrow Flight SQL example server: do_handshake should include auth header #5665 [arrow] [arrow-flight]
    • Add support for the "r+" datatype in the C Data interface / RunArray #5631 [arrow]
    • Serialize FixedSizeBinary as HEX with JSON Writer #5620 [arrow]
    • Cleanup UnionArray Constructors #5613 [arrow] [arrow-flight]
    • Zero Copy Support #5593
    • ObjectStore bulk delete #5591
    • Retry on Broken Connection #5589
    • StreamReader is not zero-copy #5584 [arrow]
    • Create ArrowReaderMetadata from externalized metadata #5582 [parquet]
    • Make filter in filter_leaves API propagate error #5574 [arrow]
    • Support List in compare_op #5572
    • Make FixedSizedList Json serializable #5568 [arrow]
    • arrow-ord: Support sortting StructArray #5559 [arrow]
    • Add scientific notation decimal parsing in parse_decimal #5549 [arrow]
    • take kernel support for StringViewArray and BinaryViewArray #5511 [arrow]
    • filter kernel support for StringViewArray and BinaryViewArray #5510 [arrow]
    • Display support for StringViewArray and BinaryViewArray #5509 [arrow]
    • Arrow Flight format support for StringViewArray and BinaryViewArray #5507 [arrow] [arrow-flight]
    • IPC format support for StringViewArray and BinaryViewArray #5506 [parquet] [arrow]

    Fixed bugs:

    • List Row Encoding Sorts Incorrectly #5807 [arrow]
    • Schema Root Message Name Ignored by parquet-fromcsv #5804 [parquet]
    • Compute data buffer length by using start and end values in offset buffer #5756 [arrow]
    • parquet: ByteArrayEncoder allocates large unused FallbackEncoder for Parquet 2 #5755 [parquet]
    • The CI pipeline Archery test With other arrow is broken #5742 [arrow]
    • Unable to parse scientific notation string to decimal when scale is 0 #5739 [arrow]
    • Stateless prepared statements wrap DoPutPreparedStatementResult with Any which is differs from Go implementation #5731 [arrow] [arrow-flight]
    • "Rustdocs are clean (amd64, nightly)" CI check is failing #5725 [parquet] [arrow]
    • "Archery test With other arrows" integration tests are failing #5719 [parquet] [arrow]
    • parquet_derive: invalid examples/documentation #5687
    • Arrow FLight SQL: invalid location in get_flight_info_prepared_statement #5669 [arrow] [arrow-flight]
    • Rust Interval definition incorrect #5654 [parquet] [arrow]
    • DECIMAL regex in csv reader does not accept positive exponent specifier #5648 [arrow]
    • panic when casting ListArray to FixedSizeList #5642 [arrow]
    • FixedSizeListArray::try_new Errors on Entirely Null Array With Size 0 #5614 [arrow]
    • parquet / Build wasm32 (pull_request) CI check failing on main #5565 [parquet] [arrow]
    • Documentation fix: example in parquet/src/column/mod.rs is incorrect #5560 [parquet]
    • IPC code writes data with insufficient alignment #5553 [arrow] [arrow-flight]
    • Cannot access example Flight SQL Server from dbeaver #5540 [arrow] [arrow-flight]
    • parquet: "not yet implemented" error when codec is actually implemented but disabled #5520 [parquet]

    Documentation updates:

    Closed issues:

    • binary_mut kernel requires both args to be the same type (which is inconsistent with binary) #5818 [arrow]
    • Panic when displaying debug the results via log::info in the browser. #5599 [arrow]

    Merged pull requests:

    Open source →
  36. 51.0.0 18 Mar 2024
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Prototype Arrow over HTTP in Rust #5496 [arrow]
    • Add DataType::ListView and DataType::LargeListView #5492 [parquet] [arrow]
    • Improve documentation around handling of dictionary arrays in arrow flight #5487 [arrow] [arrow-flight]
    • Better memory limiting in parquet ArrowWriter #5484 [parquet]
    • Support Creating Non-Nullable Lists and Maps within a Struct #5482 [arrow]
    • [DISCUSSION] Better borrow propagation (e.g. RecordBatch::schema() to return &SchemaRef vs SchemaRef) #5463 [parquet] [arrow] [arrow-flight]
    • Build Scalar with ArrayRef #5459
    • AsyncArrowWriter doesn't limit underlying ArrowWriter to respect buffer-size #5450 [parquet]
    • Refine Display implementation for FlightError #5438 [arrow] [arrow-flight]
    • Better ergonomics for FixedSizeList and LargeList #5372 [arrow]
    • Update Flight proto #5367 [arrow] [arrow-flight]
    • Support check similar datatype but with different magnitudes #5358 [arrow]
    • Buffer memory usage for custom allocations is reported as 0 #5346 [arrow]
    • Can the ArrayBuilder trait be made Sync? #5344 [arrow]
    • support cast 'UTF8' to FixedSizeList #5339 [arrow]
    • Support Creating Non-Nullable Lists with ListBuilder #5330 [arrow]
    • ParquetRecordBatchStreamBuilder::new() panics instead of erroring out when opening a corrupted file #5315 [parquet]
    • Raw JSON Writer #5314 [arrow]
    • Add support for more fused boolean operations #5297 [arrow]
    • parquet: Allow disabling embed ARROW_SCHEMA_META_KEY added by the ArrowWriter #5296 [parquet]
    • Support casting strings like '2001-01-01 01:01:01' to Date32 #5280 [arrow]
    • Temporal Extract/Date Part Kernel #5266 [arrow]
    • Support for extracting hours/minutes/seconds/etc. from Time32/Time64 type in temporal kernels #5261 [arrow]
    • parquet: add method to get both the inner writer and the file metadata when closing SerializedFileWriter #5253 [parquet]
    • Release arrow-rs version 50.0.0 #5234

    Fixed bugs:

    • Empty String Parses as Zero in Unreleased Arrow #5504 [arrow]
    • Unused import in nightly rust #5476 [parquet] [arrow] [arrow-flight]
    • Error The data type type List .. has no natural order when using arrow::compute::lexsort_to_indices with list and more than one column #5454 [arrow]
    • Wrong size assertion in arrow_buffer::builder::NullBufferBuilder::new_from_buffer #5445 [arrow]
    • Inconsistency between comments and code implementation #5430 [arrow]
    • OOB access in Buffer::from_iter #5412 [arrow]
    • Cast kernel doesn't return null for string to integral cases when overflowing under safe option enabled #5397 [arrow]
    • Make ffi consume variable layout arrays with empty offsets #5391 [arrow]
    • RecordBatch conversion from pyarrow loses Schema's metadata #5354 [arrow]
    • Debug output of Time32/Time64 arrays with invalid values has confusing nulls #5336 [arrow]
    • Removing a column from a RecordBatch drops schema metadata #5327 [arrow]
    • Panic when read an empty parquet file #5304 [parquet]
    • How to enable statistics for string columns? #5270 [parquet]
    • concat::tests::test_string_dictionary_merge failure fails on Mac / has different results in different platforms #5255 [arrow]

    Documentation updates:

    • Minor: Add doc comments to GenericByteViewArray #5512 [arrow] (alamb)
    • Improve docs for logical and physical nulls even more #5434 [arrow] (alamb)
    • Add example of converting RecordBatches to JSON objects #5364 [arrow] (alamb)

    Performance improvements:

    Closed issues:

    • Add StringViewArray implementation and layout and basic construction + tests #5469 [parquet] [arrow]
    • Add DataType::Utf8View and DataType::BinaryView #5468 [parquet] [arrow]

    Merged pull requests:

    Open source →
  37. 50.0.0 12 Jan 2024
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Support get offsets or blocks info from arrow file. #5252 [arrow]
    • Make regexp_match take scalar pattern and flag #5246 [arrow]
    • Cannot access pen state website on arrow-row #5238 [arrow]
    • RecordBatch with_schema's error message is hard to read #5227 [arrow]
    • Support cast between StructArray. #5219 [arrow]
    • Remove nightly-only simd feature and related code in ArrowNumericType #5185 [arrow]
    • Use Vec instead of Slice in ColumnReader #5177 [parquet]
    • Request to Memmap Arrow IPC files on disk #5153 [arrow]
    • GenericColumnReader::read_records Yields Truncated Records #5150 [parquet]
    • Nested Schema Projection #5148 [parquet] [arrow]
    • Support specifying quote and escape in Csv WriterBuilder #5146 [arrow]
    • Support casting of Float16 with other numeric types #5138 [arrow]
    • Parquet: read parquet metadata with page index in async and with size hints #5129 [parquet]
    • Cast from floating/timestamp to timestamp/floating #5122 [arrow]
    • Support Casting List To/From LargeList in Cast Kernel #5113 [arrow]
    • Expose a path for converting bytes::Bytes into arrow_buffer::Buffer without copy #5104 [arrow]
    • API inconsistency of ListBuilder make it hard to use as nested builder #5098 [arrow]
    • Parquet: don't truncate min/max statistics for float16 and decimal when writing file #5075 [parquet]
    • Parquet: derive boundary order when writing columns #5074 [parquet]
    • Support new Arrow PyCapsule Interface for Python FFI #5067 [arrow]
    • 48.0.1 arrow patch release #5050 [parquet] [arrow]
    • Binary columns do not receive truncated statistics #5037 [parquet]
    • Re-evaluate Explicit SIMD Aggregations #5032 [arrow]
    • Min/Max Kernels Should Use Total Ordering #5031 [arrow]
    • Allow zip compute kernel to take Scalar / Datum #5011 [arrow]
    • Add Float16/Half-float logical type to Parquet #4986 [parquet]
    • feat: cast (Large)List to FixedSizeList #5081 [arrow] (wjones127)
    • Update Parquet Encoding Documentation #5051 [parquet]

    Fixed bugs:

    • json schema inference can't handle null field turned into object field in subsequent rows #5215 [arrow]
    • Invalid trailing content after Z in timezone is ignored #5182 [arrow]
    • Take panics on a fixed size list array when given null indices #5169 [arrow]
    • EnabledStatistics::Page does not take effect on ByteArrayEncoder #5162 [parquet]
    • Parquet: ColumnOrder not being written when writing parquet files #5152 [parquet]
    • Parquet: Interval columns shouldn't write min/max stats #5145 [parquet]
    • cast Utf8 to decimal failure #5127 [arrow]
    • coerce_primitive not honored when decoding from serde object #5095 [arrow]
    • Unsound MutableArrayData Constructor #5091 [arrow]
    • RowGroupReader.get_row_iter() fails with Path ColumnPath not found #5064 [parquet]
    • cast format 'yyyymmdd' to Date32 give a error #5044 [arrow]

    Performance improvements:

    • ArrowArrayStreamReader imports FFI_ArrowSchema on each iteration #5103 [arrow]

    Closed issues:

    • Working example of list_flights with ObjectStore #5116
    • (object_store) Error broken pipe on S3 multipart upload #5106

    Merged pull requests:

    Open source →
  38. 49.0.0 13 Nov 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Cast from integer/timestamp to timestamp/integer #5039 [arrow]
    • Support casting from integer to binary #5014 [arrow]
    • Return row count when inferring schema from JSON #5007 [arrow]
    • [FlightSQL] Allow custom commands in get-flight-info #4996 [arrow] [arrow-flight]
    • Support RecordBatch::remove_column() and Schema::remove_field() #4952 [arrow]
    • arrow_json: support binary deserialization #4945 [arrow]
    • Support StructArray in Cast Kernel #4908 [arrow]
    • There exists a ParquetRecordWriter proc macro in parquet_derive, but ParquetRecordReader is missing #4772 [parquet]

    Fixed bugs:

    • Regression when serializing large json numbers #5038 [arrow]
    • RowSelection::intersection Produces Invalid RowSelection #5036 [parquet]
    • Incorrect comment on arrow::compute::kernels::sort::sort_to_indices #5029 [arrow]

    Documentation updates:

    • chore: Update docs to refer to non deprecated function (partition) #5027 [arrow] (alamb)

    Merged pull requests:

    Open source →
  39. 48.0.1 13 Nov 2023

    Nothing published for this version

  40. 48.0.0 23 Oct 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Allow schema fields to merge with Null datatype #4901 [arrow]
    • Add option to FlightDataEncoder to always send dictionaries #4895 [arrow] [arrow-flight]
    • Rework Thrift Encoding / Decoding of Parquet Metadata #4891 [parquet]
    • Plans for supporting Extension Array to support Fixed shape tensor Array #4890
    • Implement Take for UnionArray #4882 [arrow]
    • Check precision overflow for casting floating to decimal #4865 [arrow]
    • Replace lexical #4774 [arrow]
    • Add read access to settings in csv::WriterBuilder #4735 [arrow]
    • Improve the performance of "DictionaryValue" row encoding #4712 [arrow] [arrow-flight]

    Fixed bugs:

    • Should we make blank values and empty string to None in csv? #4939 [arrow]
    • [FlightSQL] SubstraitPlan structure is not exported #4932 [arrow] [arrow-flight]
    • Loading page index breaks skipping of pages with nested types #4921 [parquet]
    • CSV schema inference assumes Utf8 for empty columns #4903 [arrow]
    • parquet: Field Ids are not read from a Parquet file without serialized arrow schema #4877 [parquet]
    • make_primitive_scalar function loses DataType Internal information #4851 [arrow]
    • StructBuilder doesn't handle nulls correctly for empty structs #4842 [arrow]
    • NullArray::is_null() returns false incorrectly #4835 [arrow]
    • cast_string_to_decimal should check precision overflow #4829 [arrow]
    • Null fields are omitted by infer_json_schema_from_seekable #4814 [arrow]

    Closed issues:

    • Support for reading JSON Array to Arrow #4905 [arrow]

    Merged pull requests:

    Open source →
  41. 47.0.0 22 Sep 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Row Format Adapative Block Size #4812 [arrow]
    • Stateless Row Conversion #4811 [arrow] [arrow-flight]
    • Add option to specify custom null values for CSV reader #4794 [arrow]
    • parquet::record::RowIter cannot be customized with batch_size and defaults to 1024 #4782 [parquet]
    • DynScalar abstraction (something that makes it easy to create scalar Datums) #4781 [arrow]
    • Datum is not exported as part of arrow (it is only exported in arrow_array) #4780 [arrow]
    • Scalar is not exported as part of arrow (it is only exported in arrow_array) #4779 [arrow]
    • Support IntoPyArrow for impl RecordBatchReader #4730 [arrow]
    • Datum Based String Kernels #4595 [arrow] [arrow-flight]

    Fixed bugs:

    • MapArray::new_from_strings creates nullable entries field #4807 [arrow]
    • pyarrow module can't roundtrip tensor arrays #4805 [arrow]
    • concat_batches errors with "schema mismatch" error when only metadata differs #4799 [arrow]
    • panic in cmp kernels with DictionaryArrays: Option::unwrap() on a None value' #4788 [arrow]
    • stream ffi panics if schema metadata values aren't valid utf8 #4750 [arrow]
    • Regression: Incorrect Sorting of *ListArray in 46.0.0 #4746 [arrow]
    • Row is no longer comparable after reuse #4741 [arrow]
    • DoPut FlightSQL handler inadvertently consumes schema at start of Request<Streaming<FlightData>> #4658
    • Return error when converting schema #4752 [arrow] (wjones127)
    • Implement PyArrowType for Box<dyn RecordBatchReader + Send> #4751 [arrow] (wjones127)

    Closed issues:

    • Building arrow-rust for target wasm32-wasi falied to compile packed_simd_2 #4717

    Merged pull requests:

    Open source →
  42. 46.0.0 24 Aug 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • parquet: support setting the field_id with an ArrowWriter #4702 [parquet]
    • Support references in i256 arithmetic ops #4694 [arrow]
    • Precision-Loss Decimal Arithmetic #4664 [arrow]
    • Faster i256 Division #4663 [arrow]
    • Support concat_batches for 0 columns #4661 [arrow]
    • filter_record_batch should support filtering record batch without columns #4647 [arrow]
    • Improve speed of lexicographical_partition_ranges #4614 [arrow]
    • object_store: multipart ranges for HTTP #4612
    • Add Rank Function #4606 [arrow]
    • Datum Based Comparison Kernels #4596 [parquet] [arrow] [arrow-flight]
    • Convenience method to create DataType::List correctly #4544 [arrow]
    • Remove Deprecated Arithmetic Kernels #4481 [arrow]
    • Equality kernel where null==null gives true #4438 [arrow]

    Fixed bugs:

    • Parquet ArrowWriter Ignores Nulls in Dictionary Values #4690 [parquet] [arrow]
    • Schema Nullability Validation Fails to Account for Dictionary Nulls #4689 [parquet] [arrow]
    • Comparison Kernels Ignore Nulls in Dictionary Values #4688 [parquet] [arrow]
    • Casting List to String Ignores Format Options #4669 [arrow]
    • Double free in C Stream Interface #4659 [arrow]
    • CI Failing On Packed SIMD #4651 [arrow]
    • RowInterner::size() much too low for high cardinality dictionary columns #4645 [arrow]
    • Decimal PrimitiveArray change datatype after try_unary #4644
    • Better explanation in docs for Dictionary field encoding using RowConverter #4639 [arrow]
    • List(FixedSizeBinary) array equality check may return wrong result #4637 [arrow]
    • arrow::compute::nullif panics if NullArray is provided #4634 [arrow]
    • Empty lists in FixedSizeListArray::try_new is not handled #4623 [arrow]
    • Bounds checking in MutableBuffer::set_null_bits can be bypassed #4620 [arrow]
    • TypedDictionaryArray Misleading Null Behaviour #4616 [parquet] [arrow]
    • bug: Parquet writer missing row group metadata fields such as compressed_size, file offset. #4610 [parquet]
    • new_null_array generates an invalid union array #4600 [arrow]
    • Footer parsing fails for very large parquet file. #4592 [parquet]
    • bug(parquet): Disabling global statistics but enabling for particular column breaks reading #4587 [parquet]
    • arrow::compute::concat panics for dense union arrays with non-trivial type IDs #4578 [arrow]

    Closed issues:

    • [object_store] when Create a AmazonS3 instance work with MinIO without set endpoint got error MissingRegion #4617

    Merged pull requests:

    Open source →
  43. 45.0.0 02 Aug 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Use FormatOptions in Const Contexts #4580 [arrow]
    • Human Readable Duration Display #4554 [arrow]
    • BooleanBuilder: Add validity_slice method for accessing validity bits #4535 [arrow]
    • Support FixedSizedListArray for length kernel #4517 [arrow]
    • RowCoverter::convert that targets an existing Rows #4479 [arrow]

    Fixed bugs:

    • Panic assertion failed: idx < self.len when casting DictionaryArrays with nulls #4576 [arrow]
    • arrow-arith is_null is buggy with NullArray #4565 [arrow]
    • Incorrect Interval to Duration Casting #4553 [arrow]
    • Too large validity buffer pre-allocation in FixedSizeListBuilder::new #4549 [arrow]
    • Like with wildcards fail to match fields with new lines. #4547 [arrow]
    • Timestamp Interval Arithmetic Ignores Timezone #4457 [arrow]

    Merged pull requests:

    Open source →
  44. 44.0.0 18 Jul 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    Fixed bugs:

    • Parquet: AsyncArrowWriter to a file corrupts the footer for large columns #4526 [parquet]
    • [object_store] Failure to send bytes to azure #4522
    • Cannot cast string '2021-01-02' to value of Date64 type #4512 [arrow]
    • Incorrect Interval Subtraction #4489 [arrow]
    • Interval Negation Incorrect #4488 [arrow]
    • Parquet: AsyncArrowWriter inner buffer is not correctly limited and causes OOM #4477 [parquet]

    Merged pull requests:

    Open source →
  45. 43.0.0 03 Jul 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Request: a way to copy a Row to Rows #4466 [arrow]
    • Reuse schema when importing from FFI #4444 [arrow]
    • [FlightSQL] Allow implementations of FlightSqlService to handle custom actions and commands #4439
    • Support NullBuilder #4429 [arrow]

    Fixed bugs:

    • Regression in in parquet 42.0.0 : Bad parquet column indexes for All Null Columns, resulting in Parquet error: StructArrayReader out of sync on read #4459 [parquet]
    • Regression in 42.0.0: Parsing fractional intervals without leading 0 is not supported #4424 [arrow]

    Documentation updates:

    Merged pull requests:

    Open source →
  46. 42.0.0 20 Jun 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Add doc example of constructing a MapArray #4385 [arrow]
    • Support millisecond and microsecond functions #4374 [arrow]
    • Changed array_to_json_array to take &dyn Array #4369 [arrow]
    • compute::ord kernel for getting min and max of two scalar/array values #4347 [arrow]
    • Release 41.0.0 of arrow/arrow-flight/parquet/parquet-derive #4346
    • Refactor CAST tests to use new cast array syntax #4336 [arrow]
    • pass bytes directly to parquet's KeyValue #4317
    • PyArrow conversions could return TypeError if provided incorrect Python type #4312 [arrow]
    • Have array_to_json_array support Map #4297 [arrow]
    • FlightSQL: Add helpers to create CommandGetXdbcTypeInfo responses (XdbcInfoValue and builders) #4257 [arrow] [arrow-flight]
    • Have array_to_json_array support FixedSizeList #4248 [arrow]
    • Truncate ColumnIndex ByteArray Statistics #4126 [parquet]
    • Arrow compute kernel regards selection vector #4095 [arrow]

    Fixed bugs:

    • Wrongly calculated data compressed length in IPC writer #4410 [arrow]
    • Take Kernel Handles Nullable Indices Incorrectly #4404 [arrow]
    • StructBuilder::new Doesn't Validate Builder DataTypes #4397 [arrow]
    • Parquet error: Not all children array length are the same! when using RowSelection to read a parquet file #4396
    • RecordReader::skip_records Is Incorrect for Repeated Columns #4368 [parquet]
    • List-of-String Array panics in the presence of row filters #4365 [parquet]
    • Fail to read block compressed gzip files with parquet-fromcsv #4173 [parquet]

    Closed issues:

    • Have a parquet file not able to be deduped via arrow-rs, complains about Decimal precision? #4356
    • Question: Could we move dict_id, dict_is_ordered into DataType? #4325

    Merged pull requests:

    Open source →
  47. 41.0.0 06 Jun 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    Fixed bugs:

    • Doc for arrow_flight::sql is missing enums that are Xdbc related #4339 [arrow] [arrow-flight]
    • concat_batches panics with total_len <= bit_len assertion for records with lists #4324 [arrow]
    • Incorrect PageMetadata Row Count returned for V1 DataPage #4321 [parquet]
    • [parquet] Not following the spec for TIMESTAMP_MILLIS legacy converted types #4308 [parquet]
    • ambiguous glob re-exports of contains_utf8 #4289 [parquet] [arrow]
    • flight_sql_client --header "key: value" yields a value with a leading whitespace #4270 [arrow] [arrow-flight]
    • Casting Timestamp to date is off by one day for dates before 1970-01-01 #4211 [arrow]

    Merged pull requests:

    Open source →
  48. 40.0.0 22 May 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • ObjectStore with_url Should Handle Path #4199
    • Support Interval +/- Interval #4178 [arrow]
    • [parquet] add compression info to print_column_chunk_metadata() #4172 [parquet]
    • Allow cast to take in a format specification #4168 [arrow]
    • Support extended pow arithmetic #4166 [arrow]
    • Preload page index for async ParquetObjectReader #4090 [parquet]

    Fixed bugs:

    • Subtracting Timestamp from Timestamp should produce a Duration (not Timestamp) #3964 [arrow]

    Merged pull requests:

    Open source →
  49. 39.0.0 09 May 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Release 39.0.0 of arrow/arrow-flight/parquet/parquet-derive (next release after 38.0.0) #4170 [arrow] [arrow-flight]
    • Fixed point decimal multiplication for DictionaryArray #4135 [arrow]
    • Remove Seek Requirement from CSV ReaderBuilder #4130 [parquet] [arrow]
    • Inconsistent CSV Inference and Parsing DateTime Handling #4129 [parquet] [arrow]
    • Support accessing ipc Reader/Writer inner by reference #4121
    • Add Type Declarations for All Primitive Tensors and Buffer Builders #4112 [arrow]
    • Support Interval + Timestamp and Interval + Date in addition to Timestamp + Interval and Interval + Date #4094 [arrow]
    • Enable setting FlightDescriptor on FlightDataEncoderBuilder #3855 [arrow] [arrow-flight]

    Fixed bugs:

    • Parquet Page Index Reader Assumes Consecutive Offsets #4149 [parquet]
    • Equality of nested data types #4110 [arrow]

    Documentation updates:

    • Improve Documentation of Parquet ChunkReader #4118

    Closed issues:

    • add specific error log for empty JSON array #4105 [arrow]

    Merged pull requests:

    Open source →
  50. 38.0.0 25 Apr 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    Fixed bugs:

    • Update readme to remove reference to Jira #4091
    • OffsetBuffer::new Rejects 0 Offsets #4066 [arrow]
    • Parquet AsyncArrowWriter not shutting down inner async writer. #4058 [parquet]
    • Flight SQL Server missing command type.googleapis.com/arrow.flight.protocol.sql.CommandGetXdbcTypeInfo #4054 [arrow] [arrow-flight]
    • RawJsonReader Errors with Empty Schema #4053 [parquet] [arrow]
    • RawJsonReader Integer Truncation #4049 [arrow]
    • Sparse UnionArray Equality Incorrect Offset Handling #4044 [arrow]

    Documentation updates:

    • Write blog about improvements in JSON and CSV processing #4062 [arrow]

    Closed issues:

    • Parquet reader of Int96 columns and coercion to timestamps #4075
    • Serializing timestamp from int (json raw decoder) #4069 [arrow]
    • Support casting to/from Interval and Duration #3998 [arrow]

    Merged pull requests:

    Open source →
  51. 37.0.0 10 Apr 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    Fixed bugs:

    • Incorrect Overflow Casting String to Timestamp #4033
    • f16::ZERO and f16::ONE are mixed up #4016 [arrow]
    • Handle overflow precision when casting from integer to decimal #3995 [arrow]
    • PrimitiveDictionaryBuilder.finish should use actual value type #3971 [arrow]
    • RecordBatch From StructArray Silently Discards Nulls #3952 [parquet] [arrow]
    • I256 Checked Subtraction Overflows for i256::MINUS_ONE #3942 [arrow]
    • I256 Checked Multiply Overflows for i256::MIN #3941 [arrow]

    Closed issues:

    Merged pull requests:

    Open source →
  52. 36.0.0 28 Mar 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Improve speed of parsing string to Times #3919 [arrow]
    • feat: add comparison/sort support for Float16 #3914
    • Pinned version in arrow-flight's build-dependencies are causing conflicts #3876
    • Add compression options (levels) #3844 [parquet] [arrow]
    • Use Unsigned Integer for Fixed Size DataType #3815
    • Common trait for RecordBatch and StructArray #3764 [arrow]
    • Allow precision loss on multiplying decimal arrays #3689 [arrow]

    Fixed bugs:

    • Raw JSON Reader Allows Non-Nullable Struct Children to Contain Nulls #3904
    • Nullable field with nested not nullable map in json #3900
    • parquet_derive doesn't support Vec<u8> #3864 [parquet]
    • [REGRESSION] Parsing timestamps with lower case time separator #3863 [arrow]
    • [REGRESSION] Parsing timestamps with leap seconds #3861 [arrow]
    • [REGRESSION] Parsing timestamps with fractional seconds / microseconds / milliseconds / nanoseconds #3859 [arrow]
    • CSV Reader Doesn't set Timezone #3841
    • PyArrowConvert Leaks Memory #3683 [arrow]

    Merged pull requests:

    Open source →
  53. 35.0.0 13 Mar 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Support timestamp/time and date types in json decoder #3834 [arrow]
    • Support decoding decimals in new raw json decoder #3819 [arrow]
    • Timezone Aware Timestamp Parsing #3794 [arrow]
    • Preallocate buffers for FixedSizeBinary array creation #3792 [arrow]
    • Make Parquet CLI args consistent #3785 [parquet]
    • Creates PrimitiveDictionaryBuilder from provided keys and values builders #3776 [arrow]
    • Use NullBuffer in ArrayData #3775 [parquet] [arrow]
    • Support unary_dict_mut in arth #3710 [arrow]
    • Support cast <> String to interval #3643 [arrow]
    • Support Zero-Copy Conversion from Vec to/from MutableBuffer #3516 [arrow]

    Fixed bugs:

    • Timestamp Unit Casts are Unchecked #3833 [arrow]
    • regexp_match skips first match when returning match #3803 [arrow]
    • Cast to timestamp with time zone returns timestamp #3800 [arrow]
    • Schema-level metadata is not encoded in Flight responses #3779 [arrow] [arrow-flight]

    Closed issues:

    Merged pull requests:

    Open source →
  54. 34.0.0 27 Feb 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Support casting string to timestamp with microsecond resolution #3751
    • Add datatime/interval/duration into comparison kernels #3729 [arrow]
    • ! (not) operator overload for SortOptions #3726 [arrow]
    • parquet: convert Bytes to ByteArray directly #3719 [parquet]
    • Implement simple RecordBatchReader #3704
    • Is possible to implement GenericListArray::from_iter ? #3702
    • take_run improvements #3701 [arrow]
    • Support as_mut_any in Array trait #3655
    • Array --> Display formatter that supports more options and is configurable #3638 [parquet] [arrow]
    • arrow-csv: support decimal256 #3474 [arrow]

    Fixed bugs:

    • CSV reader infers Date64 type for fields like "2020-03-19 00:00:00" that it can't parse to Date64 #3744 [arrow]

    Merged pull requests:

    Open source →
  55. 33.0.0 13 Feb 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Support UTF8 cast to Timestamp with timezone #3664
    • Add modulus_dyn and modulus_scalar_dyn #3648 [arrow]
    • A trait for append_value and append_null on ArrayBuilders #3644
    • Improve error message "batches[0] schema is different with argument schema" #3628 [arrow]
    • Specified version of helper function to cast binary to string #3623 [arrow]
    • Casting generic binary to generic string #3606 [arrow]
    • Use array_value_to_string in arrow-csv #3483 [arrow]

    Fixed bugs:

    • ArrowArray::try_from_raw Misleading Signature #3684 [arrow]
    • PyArrowConvert Leaks Memory #3683 [arrow]
    • Arrow-csv reader cannot produce RecordBatch even if the bytes are necessary #3674
    • FFI Fails to Account For Offsets #3671 [arrow]
    • Regression in CSV reader error handling #3656 [arrow]
    • UnionArray Child and Value Fail to Account for non-contiguous Type IDs #3653 [arrow]
    • Panic when accessing RecordBatch from pyarrow #3646 [arrow]
    • Multiplication for decimals is incorrect #3645
    • Inconsistent output between pretty print and CSV writer for Arrow #3513 [arrow]

    Closed issues:

    • Release 33.0.0 of arrow/arrow-flight/parquet/parquet-derive (next release after 32.0.0) #3682
    • Release 32.0.0 of arrow/arrow-flight/parquet/parquet-derive (next release after 31.0.0) #3584 [parquet] [arrow] [arrow-flight]

    Merged pull requests:

    Open source →
  56. 32.0.0 30 Jan 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • There should be a From<Vec<Option<String>>> impl for GenericStringArray<OffsetSize> #3599 [arrow]
    • FlightDataEncoder Optionally send Schema even when no record batches #3591 [arrow-flight]
    • Use Native Types in PageIndex #3575 [parquet]
    • Packing array into dictionary of generic byte array #3571 [arrow]
    • Implement Error::Source for ArrowError and FlightError #3566 [arrow] [arrow-flight]
    • [FlightSQL] Allow access to underlying FlightClient #3551 [arrow-flight]
    • Arrow CSV writer should not fail when cannot cast the value #3547 [arrow]
    • Write Deprecated Min Max Statistics When ColumnOrder Signed #3526 [parquet]
    • Improve Performance of JSON Reader #3441
    • Support footer kv metadata for IPC file #3432
    • Add External variant to ParquetError #3285 [parquet]

    Fixed bugs:

    • Nullif of NULL Predicate is not NULL #3589
    • BooleanBufferBuilder Fails to Clear Set Bits On Truncate #3587 [arrow]
    • nullif incorrectly calculates null_count, sometimes panics with subtraction overflow error #3579 [arrow]
    • Meet warning when use pyarrow #3543 [arrow]
    • Incorrect row group total_byte_size written to parquet file #3530 [parquet]
    • Overflow when casting timestamps prior to the epoch #3512 [arrow]

    Closed issues:

    • Panic on Key Overflow in Dictionary Builders #3562 [parquet] [arrow]
    • Bumping version gives compilation error (arrow-array) #3525

    Merged pull requests:

    Open source →
  57. 31.0.0 16 Jan 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Support casting Date32 to timestamp #3504 [arrow]
    • Support casting strings like '2001-01-01' to timestamp #3492 [arrow]
    • CLI to "rewrite" parquet files #3476 [parquet]
    • Add more dictionary value type support to build_compare #3465
    • Allow concat_batches to take non owned RecordBatch #3456 [arrow]
    • Release Arrow 30.0.1 (maintenance release for 30.0.0) #3455
    • Add string comparisons (starts_with, ends_with, and contains) to kernel #3442 [arrow]
    • make_builder Loses Timezone and Decimal Scale Information #3435 [arrow]
    • Use RFC3339 style timestamps in arrow-json #3416 [arrow]
    • ArrayDataget_slice_memory_size or similar #3407 [arrow] [arrow-flight]

    Fixed bugs:

    • Unable to read CSV with null boolean value #3521 [arrow]
    • Make consistent behavior on zeros equality on floating point types #3509
    • Sliced batch w/ bool column doesn't roundtrip through IPC #3496 [arrow] [arrow-flight]
    • take kernel on List array introduces nulls instead of empty lists #3471 [arrow]
    • Infinite Loop If Skipping More CSV Lines than Present #3469 [arrow]

    Merged pull requests:

    Open source →
  58. 30.0.1 08 Jan 2023
    Release notes

    Full Changelog

    Implemented enhancements:

    Fixed bugs:

    • nullif kernel no longer exported #3454 [arrow]
    • PrimitiveArray from ArrayData Unsound For IntervalArray #3439 [arrow]
    • LZ4-compressed PQ files unreadable by Pandas and ClickHouse #3433 [parquet]
    • Parquet Record API: Cannot convert date before Unix epoch to json #3430 [parquet]
    • parquet-fromcsv with writer version v2 does not stop #3408 [parquet]
    Open source →
  59. 30.0.0 03 Jan 2023
    Release notes

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Add derived implementations of Clone and Debug for ParquetObjectReader #3381 [parquet]
    • Speed up TrackedWrite #3366 [parquet]
    • Is it possible for ArrowWriter to write key_value_metadata after write all records #3356 [parquet]
    • Add UnionArray test to arrow-pyarrow integration test #3346
    • Document / Deprecate arrow_flight::utils::flight_data_from_arrow_batch #3312 [arrow] [arrow-flight]
    • [FlightSQL] Support HTTPs #3309 [arrow-flight]
    • Support UnionArray in ffi #3304 [arrow]
    • Add support for Azure Data Lake Storage Gen2 (aka: ADLS Gen2) in Object Store library #3283
    • Support casting from String to Decimal #3280 [arrow]
    • Allow ArrowCSV writer to control the display of NULL values #3268 [arrow]

    Fixed bugs:

    • FlightSQL example is broken #3386 [arrow-flight]
    • CSV Reader Bounds Incorrectly Handles Header #3364 [arrow]
    • Incorrect output string from try_to_type #3350
    • Decimal arithmetic computation fails to run because decimal type equality #3344 [arrow]
    • Pretty print not implemented for Map #3322 [arrow]
    • ILIKE Kernels Inconsistent Case Folding #3311 [arrow]

    Documentation updates:

    Merged pull requests:

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive