arrow-rs

Library Featured

Rust implementation of Apache Arrow

Checked · Sources

Downloads
10,746,755
Dependents
2,126
Stars
3,664
Forks
1,426
Contributors
419
Commits
8,694
Latest release
60.1.0 ·

About

From the project README ·

Native Rust implementation of Apache Arrow and Apache Parquet

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

Community

We welcome participation from everyone and encourage you to join us, ask questions, help others, and get involved. All participation in the Apache Arrow project is governed by the Apache Software Foundation's code of conduct.

We use GitHub issues and pull requests for all technical discussions, reviews, new features, bug fixes and release coordination. This ensures that all communication is public and archived for future reference.

The dev@arrow.apache.org mailing list is the communication channel for the overall Apache Arrow community. Instructions for signing up and links to the archives can be found on the Arrow Community page.

Read the full README

Some community members also use the Arrow Rust Discord Server and the official ASF Slack server for informal discussions and coordination. This is a great place to meet other contributors and get guidance on where to contribute. However, all technical designs should also be recorded and formalized in GitHub issues, so that they are accessible to everyone. In Slack, find us in the #arrow-rust channel and feel free to ask for an invite via Discord, GitHub issues, or other means.

There is more information in the contributing guide and the security policy.

Repository Structure

This repository contains the following crates:

CrateDescriptionLatest API DocsREADME
arrowCore functionality (memory layout, arrays, low level computations)docs.rs(README)
arrow-flightSupport for Arrow-Flight IPC protocoldocs.rs(README)
parquetSupport for the Apache Parquet columnar file formatdocs.rs(README)
parquet_deriveA crate for deriving RecordWriter/RecordReader for arbitrary, simple structsdocs.rs(README)

The current development version the API documentation 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 DateVersionNotes
October 202660.1.0Minor, NO breaking API changes
November 202660.2.0Minor, NO breaking API changes
December 202661.0.0Major, potentially breaking API changes
January 202761.1.0Minor, NO breaking API changes
February 202761.2.0Minor, NO breaking API changes
March 202762.0.0Major, 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 an as needed 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.

Platform Support

Only little-endian platforms are officially supported and tested in CI. Big-endian platforms are not tested in CI and may not work correctly. Fixes for big-endian platforms are welcome and handled on a best-effort basis, but compatibility is not guaranteed.

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.

Related Projects

There are several related crates in different repositories

CrateDescriptionDocumentation
object_storeObject Storage (aws, azure, gcp, local, in-memory) interface(README)
datafusionIn-memory query engine with SQL support(README)
ballistaDistributed query execution(README)
parquet_opendalUse 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.

Runs on
GPU support unknown
What shows it
  • no dependency or feature matches a backend row
Native code
Optional
  • Binds native code: ring (feature encryption), liblzma-sys (feature default), zstd-sys (feature default)
Python bindings
Has Python bindings
  • arrow-pyarrow needs Python
License
Apache-2.0

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

arrow-rs beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
arrow-rs This page Featured

Rust implementation of Apache Arrow

Python bindings

10,746,755 downloads over 30 days 2,126 3,664 60.1.0 GPU support unknown Binds native code: ring (feature encryption), liblzma-sys (feature default), zstd-sys (feature default) Apache-2.0
datafusion Featured

DataFusion is an in-memory query engine that uses Apache Arrow as the memory model

2,992,524 downloads over 30 days 484 9,578 55.2.0 GPU support unknown Binds native code: libmimalloc-sys, liblzma-sys (feature compression), zstd-sys (feature compression) Apache-2.0
polars Featured

DataFrame library based on Apache Arrow

Python bindings

1,729,523 downloads over 30 days 639 40,285 0.55.2 GPU support unknown Binds native code: zstd-sys (feature decompress) MIT
delta-rs Featured

Native Delta Lake implementation in Rust

463,085 downloads over 30 days 33 3,356 1.1.4 GPU support unknown Binds native code: lz4-sys (feature delta-cache), zstd-sys (feature delta-cache) Apache-2.0
dlpark Listed

Pure Rust DLPack implementation for zero-copy tensor interoperability

Python bindings

68,157 downloads over 30 days 5 66 0.10.0 CUDA No native code found Apache-2.0
compressr App New

Model conversion and quantization with no Python: reads SafeTensors, GGUF, TCF and PyTorch state dicts, writes SafeTensors, GGUF and TCF, and quantizes to Q2_K through Q8_0 and IQ4 formats, including Q4_K_M mixes. GPTQ, AWQ, NF4, FP8, EXL2 and ONNX input are not implemented.

Python bindings

23 downloads over 30 days Not applicable 0 0.2.1 GPU support unknown No native code found Apache-2.0
rust-dataframe App Archived

A Rust DataFrame implementation, built on Apache Arrow

Not measured Not applicable 280 Not measured Not measured Not measured Apache-2.0
Why FeaturedIt passes every Featured gate.

What it meets

  • It has 473 active dependents and 411 new dependents in 365 days. Featured needs 11 active dependents or 9 new dependents in 365 days.
  • Active dependents are at 100% of their peak. Featured needs at least 50%.
  • Docs are present. The release commit or a manifest ties the crate to the repository.
  • No vulnerability advisory stays unpatched past the grace window. At least one version is neither a prerelease nor 0.0.x.
  • The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 800 days. Dormancy rule

Check notes

  • the repo manifest arrow/Cargo.toml declares the crate, and no release commit proves the link

Exact rules: Featured library. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: version 60.1.0 base 200, doubled for 10746755 downloads per month, doubled for 473.25 active users: E = 800 days
  • dormancy: last activity 2026-11-08, 1 days ago, E = 800: active
  • featured: featured: active_users 473.25, new_adopters 410.5, former_glory 1
Crates26 crates

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption473 active dependents, 411 new dependents in 365 days1 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependents473.248crates.io database dumpYes
New dependents (365 days)410.5crates.io database dumpYes
Peak active dependents467.748crates.io database dumpYes
Active dependents as a share of the peak1crates.io database dumpYes
Binary downloads per releaseNot measuredYes
MaintenanceLatest human commit: 1 day ago3 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-11-08GitHub repositoryYes
Latest release2026-10-28crates.io database dumpYes
First release2018-03-29crates.io database dumpYes
Latest version60.1.0crates.io database dumpYes
Days the oldest outside issue waits for a reply12GitHub repositoryYes
Maintainer replies over 365 days11GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruerepo manifestYes
Published docstruecrates.io database dumpYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityUnpatched vulnerabilities: none
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windownoneRustSec advisory databaseYes
RustSec unmaintained advisorynoneRustSec advisory databaseYes
Deprecation noticenonecrates.io database dumpYes
Deprecated requirementnonecrates.io database dumpYes
Distribution123 releases, 10,746,755 downloads over 30 days5 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases123crates.io database dumpYes
Downloads over 30 days10746755crates.io database dumpYes
Binary downloads over the last 3 releasesNot measuredYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedfalsecrates.io database dumpYes
Crate deleted from crates.iofalsecrates.io database dumpYes
Repository3,664 stars, 1,426 forks, 419 contributors, 8,694 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars3664GitHub repositoryYes — one part of the repository route
GitHub forks1426GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account419GitHub contributorsYes — one part of the repository route
Commits on the default branch8694GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseApache-2.0crates.io database dumpNo
Runs on, from listed crates and their direct dependenciesGPU support unknowncrates.io database dumpNo
What shows each backendno dependency or feature matches a backend rowcrates.io database dumpNo
Native code, from listed crates and their dependenciesBinds native code: ring (feature encryption), liblzma-sys (feature default), zstd-sys (feature default)crates.io database dumpNo
Python bindings, from direct dependencies of listed cratesHas Python bindings: arrow-pyarrow needs Pythoncrates.io database dumpNo
Crates that depend on a listed crate directly2126crates.io database dumpNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.