Find a file
sitegui 4aa702ae25
Some checks failed
labeler.yml / Implement logic to allow merging multiple TapeDecoders together (push) Failing after 0s
Implement logic to allow merging multiple TapeDecoders together
2026-05-05 07:53:53 +02:00
.github fix: integration / Archery test With other arrows container ran out of space (#9043) 2025-12-27 11:53:54 +11:00
arrow fix: don't generate nulls for Decimal128 and Decimal256 when field is non-nullable and have non-zero null_density (#9046) 2025-12-30 07:33:51 -05:00
arrow-arith Fix headers and empty lines in code examples (#9064) 2025-12-31 12:13:19 +11:00
arrow-array [maintenance_57] Fix string array equality when the values buffer is the same and only the offsets to access it differ (#9325) (#9330) 2026-02-02 11:26:25 -05:00
arrow-avro Add validated constructors for UnionFields (#8891) 2025-12-15 13:11:09 -05:00
arrow-buffer [57_maintenance] Mark BufferBuilder::new_from_buffer as unsafe (#9292) (#9312) 2026-02-02 10:05:15 -05:00
arrow-cast Improve RunArray documentation (#9019) 2025-12-22 01:08:21 +11:00
arrow-csv Move examples in arrow-csv to docstrings, polish up docs (#9001) 2025-12-19 12:52:31 -05:00
arrow-data [maintenance_57] Fix string array equality when the values buffer is the same and only the offsets to access it differ (#9325) (#9330) 2026-02-02 11:26:25 -05:00
arrow-flight Add FlightInfo::with_endpoints method (#9075) 2026-01-06 17:13:31 -05:00
arrow-integration-test Document limitations of the arrow_integration_test crate (#8738) 2025-11-03 08:31:28 -05:00
arrow-integration-testing Replace serde with serde_core when possible (#8558) 2025-10-11 09:12:02 -04:00
arrow-ipc arrow-ipc: Add ListView support (#9006) 2025-12-18 15:58:15 -05:00
arrow-json Implement logic to allow merging multiple TapeDecoders together 2026-05-05 07:53:53 +02:00
arrow-ord Fix headers and empty lines in code examples (#9064) 2025-12-31 12:13:19 +11:00
arrow-pyarrow Implement a Vec<RecordBatch> wrapper for pyarrow.Table convenience (#8790) 2025-12-05 11:59:45 -05:00
arrow-pyarrow-integration-testing Let ArrowArrayStreamReader handle schema with attached metadata + do schema checking (#8944) 2025-12-09 17:37:54 -05:00
arrow-pyarrow-testing Migrate arrow-pyarrow-testing to Rust 2024 (#8487) 2025-09-29 15:26:55 -04:00
arrow-row Add Union encoding documentation (#9102) 2026-01-07 12:40:51 -05:00
arrow-schema Add DataType::is_decimal (#9100) 2026-01-06 16:53:24 -05:00
arrow-select Fix nullif kernel (#9087) 2026-01-05 07:02:11 -05:00
arrow-string Migrate arrow and workspace to Rust 2024 (#8578) 2025-10-10 10:48:46 +02:00
dev Update version to 57.2.0, add CHANGELOG (#9103) 2026-01-07 13:04:39 -05:00
format Upgrade protobuf definitions to flightsql 17.0 (#6133) (#6169) 2024-08-01 07:05:10 -04:00
parquet [57_maintenance[Parquet] Provide only encrypted column stats in plaintext footer (#8305) (#9310) 2026-02-02 10:04:50 -05:00
parquet-geospatial Adds ExtensionType for Parquet geospatial WKB arrays (#8943) 2025-12-15 13:11:50 -05:00
parquet-testing@a3d96a65e1 Fix casting floats to Decimal64 (#8363) 2025-09-16 14:39:42 -04:00
parquet-variant feat: support array indices in VariantPath dot notation (#9012) 2025-12-27 07:00:39 -05:00
parquet-variant-compute [Variant] Move ArrayVariantToArrowRowBuilder to variant_to_arrow (#9094) 2026-01-05 15:21:08 -05:00
parquet-variant-json Chore: Update variant and geospatial versons to workspace (#8920) 2025-12-01 15:37:07 -05:00
parquet_derive Support for Arc<str> in ParquetRecordWriter derive macro (#8973) 2025-12-11 14:47:37 -05:00
parquet_derive_test Support for Arc<str> in ParquetRecordWriter derive macro (#8973) 2025-12-11 14:47:37 -05:00
testing@735ae7128d Remove duplicated statistics tests in parquet (#6190) 2024-08-07 08:14:02 -04:00
.asf.yaml Add "update branch" option in PRs (#8099) 2025-08-11 16:23:33 -04:00
.gitattributes Cleanup generated proto code (#2921) 2022-10-26 11:07:29 +13:00
.github_changelog_generator Exclude questions from changelog (#5349) 2024-01-30 16:12:19 +00:00
.gitignore Use more compact Debug formatting of Field (#8424) 2025-09-24 15:50:22 -04:00
.gitmodules Add parquet-testing submodule 2021-04-18 09:26:33 -06:00
.pre-commit-config.yaml Fixed CI. 2021-04-18 17:06:07 +00:00
Cargo.toml [57_maintenance] Update version to 57.3.0, add changelog (#9333) 2026-02-02 14:14:04 -05:00
CHANGELOG-old.md [57_maintenance] Update version to 57.3.0, add changelog (#9333) 2026-02-02 14:14:04 -05:00
CHANGELOG.md [57_maintenance] Update version to 57.3.0, add changelog (#9333) 2026-02-02 14:14:04 -05:00
CODE_OF_CONDUCT.md use prettiery to auto format md files (#398) 2021-06-05 07:01:58 +02:00
CONTRIBUTING.md doc: remove outdated info from CONTRIBUTING doc in project root dir. (#7998) 2025-07-28 15:46:17 -04:00
header ARROW-259: Use Flatbuffer Field type instead of MaterializedField 2016-08-18 16:29:27 -07:00
LICENSE.txt Minor: Remove non standard footer from LICENSE.txt (#6237) 2024-08-13 08:58:10 -04:00
NOTICE.txt ARROW-5934: [Python] Bundle arrow's LICENSE with the wheels 2019-07-15 13:48:22 -05:00
pre-commit.sh Fix pre commit (#4990) 2023-10-25 13:14:55 +01:00
README.md Update release schedule (#8432) 2025-09-26 15:38:42 +02:00
rust-toolchain.toml Update Rust toolchain to 1.91 (#8769) 2025-11-03 14:33:32 +01:00
rustfmt.toml Migrate arrow and workspace to Rust 2024 (#8578) 2025-10-10 10:48:46 +02:00

Native Rust implementation of Apache Arrow and Apache Parquet

Welcome to the Rust implementation of Apache Arrow, the popular in-memory columnar format.

This repository contains the following crates:

Crate Description Latest API Docs README
arrow Core functionality (memory layout, arrays, low level computations) docs.rs (README)
arrow-flight Support for Arrow-Flight IPC protocol docs.rs (README)
parquet Support for Parquet columnar file format docs.rs (README)
parquet_derive A crate for deriving RecordWriter/RecordReader for arbitrary, simple structs docs.rs (README)

The current development version the API documentation in this repo can be found here.

Note: previously the object_store crate was also part of this repository, but it has been moved to the arrow-rs-object-store repository

Release Versioning and Schedule

The Arrow Rust project releases approximately monthly and follows Semantic Versioning.

Due to available maintainer and testing bandwidth, arrow crates (arrow, arrow-flight, etc.) are released on the same schedule with the same versions as the parquet and [parquet-derive] crates.

This crate releases every month. We release new major versions (with potentially breaking API changes) at most once a quarter, and release incremental minor versions in the intervening months. See ticket #5368 for more details.

To keep our maintenance burden down, we do regularly scheduled releases (major and minor) from the main branch. How we handle PRs with breaking API changes is described in the contributing guide.

Planned Release Schedule

Approximate Date Version Notes
October 2025 57.0.0 Major, potentially breaking API changes
November 2025 57.1.0 Minor, NO breaking API changes
December 2025 57.2.0 Minor, NO breaking API changes
January 2026 58.0.0 Major, potentially breaking API changes

Rust Version Compatibility Policy

arrow-rs and parquet are built and tested with stable Rust, and will keep a rolling MSRV (minimum supported Rust version) that can only be updated in major releases on a need by basis (e.g. project dependencies bump their MSRV or a particular Rust feature is useful for us etc.). The new MSRV if selected will be at least 6 months old. The minor releases are guaranteed to have the same MSRV.

Note: If a Rust hotfix is released for the current MSRV, the MSRV will be updated to the specific minor version that includes all applicable hotfixes preceding other policies.

Guidelines for panic vs Result

In general, use panics for bad states that are unreachable, unrecoverable or harmful. For those caused by invalid user input, however, we prefer to report that invalidity gracefully as an error result instead of panicking. In general, invalid input should result in an Error as soon as possible. It is ok for code paths after validation to assume validation has already occurred and panic if not. See ticket #6737 for more nuances.

Deprecation Guidelines

Minor releases may deprecate, but not remove APIs. Deprecating APIs allows downstream Rust programs to still compile, but generate compiler warnings. This gives downstream crates time to migrate prior to API removal.

To deprecate an API:

  • Mark the API as deprecated using #[deprecated] and specify the exact arrow-rs version in which it was deprecated
  • Concisely describe the preferred API to help the user transition

The deprecated version is the next version which will be released (please consult the list above). To mark the API as deprecated, use the #[deprecated(since = "...", note = "...")] attribute.

For example

#[deprecated(since = "51.0.0", note = "Use `date_part` instead")]

In general, deprecated APIs will remain in the codebase for at least two major releases after they were deprecated (typically between 6 - 9 months later). For example, an API deprecated in 51.3.0 can be removed in 54.0.0 (or later). Deprecated APIs may be removed earlier or later than these guidelines at the discretion of the maintainers.

There are several related crates in different repositories

Crate Description Documentation
object_store Object Storage (aws, azure, gcp, local, in-memory) interface (README)
datafusion In-memory query engine with SQL support (README)
ballista Distributed query execution (README)
parquet_opendal Use [opendal] for parquet Arrow IO (README)

Collectively, these crates support a wider array of functionality for analytic computations in Rust.

For example, you can write SQL queries or a DataFrame (using the datafusion crate) to read a parquet file (using the parquet crate), evaluate it in-memory using Arrow's columnar format (using the arrow crate), and send to another process (using the arrow-flight crate).

Generally speaking, the arrow crate offers functionality for using Arrow arrays, and datafusion offers most operations typically found in SQL, including joins and window functions.

You can find more details about each crate in their respective READMEs.

Arrow Rust Community

The dev@arrow.apache.org mailing list serves as the core communication channel for the Arrow community. Instructions for signing up and links to the archives can be found on the Arrow Community page. All major announcements and communications happen there.

The Rust Arrow community also uses the official ASF Slack for informal discussions and coordination. This is a great place to meet other contributors and get guidance on where to contribute. Join us in the #arrow-rust channel and feel free to ask for an invite via:

  1. the dev@arrow.apache.org mailing list
  2. the GitHub Discussions
  3. the Discord channel

The Rust implementation uses GitHub issues as the system of record for new features and bug fixes and this plays a critical role in the release process.

For design discussions we generally use GitHub issues.

There is more information in the contributing guide.