vortex
Library Listed
An extensible, state-of-the-art framework for columnar compression, and the fastest FOSS columnar file format. Formerly at @spiraldb, now an Incubation Stage project at LFAI&Data, part of the Linux Foundation.
- Downloads
- 98,129
- Dependents
- 32
- Stars
- 3,310
- Forks
- 259
- Contributors
- 94
- Commits
- 7,503
- Latest release
- 0.93.0 ·
About
Join the community on Slack! | Documentation | Performance Benchmarks
If you are interested in closer collaboration, please email info@vortex.dev
Overview
Vortex is a next-generation columnar file format and toolkit designed for high-performance data processing. It is the fastest and most extensible format for building data systems backed by object storage. It provides:
Blazing Fast Performance
- 100x faster random access reads (vs. modern Apache Parquet)
- 10-20x faster scans
- 5x faster writes
- Similar compression ratios
- Efficient support for wide tables with zero-copy/zero-parse metadata
Extensible Architecture
- Modeled after Apache DataFusion's extensible approach
- Pluggable encoding system, type system, compression strategy, & layout strategy
- Zero-copy compatibility with Apache Arrow
Open Source, Neutral Governance
- A Linux Foundation (LF AI & Data) Project
- Apache-2.0 Licensed
Integrations
- Arrow, DataFusion, DuckDB, Spark, Pandas, Polars, & more
- Apache Iceberg (coming soon)
Read the full README
🟢 Development Status: Library APIs may change from version to version, but we now consider the file format stable. From release 0.36.0, all future releases of Vortex should maintain backwards compatibility of the file format (i.e., be able to read files written by any earlier version >= 0.36.0).
Key Features
Core Capabilities
- Logical Types - Clean separation between logical schema and physical layout
- Zero-Copy Arrow Integration - Seamless conversion to/from Apache Arrow arrays
- Extensible Encodings - Pluggable physical layouts with built-in optimizations
- Cascading Compression - Support for nested encoding schemes
- High-Performance Computing - Optimized compute kernels for encoded data
- Rich Statistics - Lazy-loaded summary statistics for optimization
Technical Architecture
Logical vs Physical Design
Vortex strictly separates logical and physical concerns:
- Logical Layer: Defines data types and schema
- Physical Layer: Handles encoding and storage implementation
- Built-in Encodings: Compatible with Apache Arrow's memory format
- Extension Encodings: Optimized compression schemes (RLE, dictionary, etc.)
Quick Start
Installation
Rust Crate
All features are exported through the main vortex crate.
cargo add vortex
Python Package
uv add vortex-data
Command Line UI (vx)
For browsing the structure of Vortex files, you can use the vx command-line tool.
# Install pre-built binary (fast, recommended)
cargo binstall vortex-tui
# Or build from source
cargo install vortex-tui --locked
# Or run via Python without installing
uvx --from vortex-data vx --help
# Usage
vx browse <file>
Development Setup
Prerequisites (macOS)
# Optional but recommended dependencies
brew install flatbuffers protobuf # For .fbs and .proto files
brew install duckdb # For benchmarks
# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# or
brew install rustup
# Initialize submodules
git submodule update --init --recursive
# Setup dependencies with uv
uv sync --all-packages
See the development workflows for Python binding and documentation development, including Maturin rebuilds, targeted tests, and documentation checks.
rust-toolchain.toml pins the toolchain used for development and CI, and is kept on the latest
stable release. Building Vortex as a dependency only requires a toolchain that satisfies the
Rust version compatibility policy.
Benchmarking
Use vx-bench to run benchmarks comparing engines (DataFusion, DuckDB) and formats (Parquet, Vortex):
# Install the benchmark orchestrator
uv tool install "bench_orchestrator @ ./bench-orchestrator/"
# Run TPC-H benchmarks
vx-bench run tpch --engine datafusion,duckdb --format parquet,vortex
# Compare results
vx-bench compare --run latest
See bench-orchestrator/README.md for full documentation.
Performance Optimization
For optimal performance, we suggest using MiMalloc:
#[global_allocator]
static GLOBAL_ALLOC: MiMalloc = MiMalloc;
Project Information
Rust Version Compatibility Policy
The policy: Vortex supports the four most recent stable minor releases. Writing the latest
stable release as 1.N, that means 1.N, 1.N-1, 1.N-2, and 1.N-3 all build Vortex, so the
three minor releases older than the latest stable release. Only the minor version is constrained;
Minimum Supported Rust Version (MSRV) declared in Cargo.toml must be no newer than 1.N-3,
patch releases are never a factor.
An MSRV older than 1.N-3 is always acceptable — supporting extra releases cannot break the
guarantee. An MSRV newer than 1.N-3 does not meet the policy. For example, once 1.98 is the
latest stable release:
| Declared MSRV | Status |
|---|---|
1.94 or older | Acceptable — supports more releases than required |
1.95 | Exactly on policy |
1.96 or newer | Does not meet the policy |
The MSRV is raised in occasional deliberate steps rather than on every Rust release, so it drifts relative to that bound.
How the policy is applied:
- The MSRV is declared once, as
rust-versionin the rootCargo.toml, and inherited by every crate in the workspace. That value, not this document, is the source of truth. - The toolchain pinned in
rust-toolchain.tomltracks the latest stable release and is independent of the MSRV. It is what contributors and most CI jobs build with. - CI enforces the declared MSRV in the
Rust (MSRV)job, which builds the publishable crates with exactly that toolchain. When it fails, the first choices are to express the code without the newer Rust feature, or to hold back the dependency update that raised the requirement. Raisingrust-versionis a last resort.
License
Licensed under the Apache License, Version 2.0.
Governance
Vortex is an independent open-source project and not controlled by any single company. The Vortex Project is a sub-project of the Linux Foundation Projects. The governance model is documented in CONTRIBUTING.md and is subject to the terms of the Technical Charter.
Contributing
Please do read CONTRIBUTING.md before you contribute.
Reporting Vulnerabilities
If you discover a security vulnerability, please email security@vortex.dev. See SECURITY.md for our full security policy, including emergency reporting and CRA stewardship.
Trademarks
Copyright © Vortex a Series of LF Projects, LLC. For terms of use, trademark policy, and other project policies please see https://lfprojects.org
Acknowledgments
The Vortex project benefits enormously from groundbreaking work from the academic & open-source communities.
Research in Vortex
- BtrBlocks - Efficient columnar compression
- FastLanes & FastLanes on GPU - High-performance integer compression
- FSST - Fast random access string compression
- ALP & G-ALP - Adaptive lossless floating-point compression
- Procella - YouTube's unified data system
- Anyblob - High-performance access to object storage
- ClickHouse - Fast analytics for everyone
- MonetDB/X100 - Hyper-Pipelining Query Execution
- Morsel-Driven Parallelism: A NUMA-Aware Query Evaluation Format for the Many-Core Age
- The FastLanes File Format - Expression Operators
Vortex in Research
Open Source Inspiration
- Apache Arrow
- Apache DataFusion
- parquet2 by Jorge Leitao
- DuckDB
- Velox & Nimble
Thanks to all contributors who have shared their knowledge and code with the community! 🚀
Compatibility
- Runs on
- GPU support unknown
What shows it
- no dependency or feature matches a backend row
- Native code
- Required
- Binds native code: zstd-sys
- Python bindings
- No Python binding crate found
- 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.
| Project | Downloads | Dependents | Stars | Latest release | Runs on (GPU) | Native code | License |
|---|---|---|---|---|---|---|---|
|
An extensible, state-of-the-art framework for columnar compression, and the fastest FOSS columnar file format. Formerly at @spiraldb, now an Incubation Stage project at LFAI&Data, part of the Linux Foundation. |
98,129 downloads over 30 days | 32 | 3,310 | 0.93.0 | GPU support unknown | Binds native code: zstd-sys | Apache-2.0 |
|
lance Featured
A columnar data format that is 100x faster than Parquet for random access. |
915,526 downloads over 30 days | 48 | 7,268 | 14.0.2 | GPU support unknown | Binds native code: ring (feature credential-vendor-gcp), lz4-sys (feature lz4), zstd-sys (feature zstd). Build uses a native toolchain: cc | Apache-2.0 |
|
ndarray-npy Featured
.npy and .npz file format support for ndarray |
560,950 downloads over 30 days | 99 | 71 | 0.10.0 | GPU support unknown | No native code found | Apache-2.0 OR MIT |
|
zarrs Featured
A library for the Zarr storage format for multidimensional arrays and metadata |
75,052 downloads over 30 days | 51 | 285 | 0.23.14 | GPU support unknown | Binds native code: blosc-src (feature blosc), gdeflate-sys (feature gdeflate), zfp-sys (feature zfp), zstd-sys (feature zstd) | Apache-2.0 OR MIT |
|
connector-x Listed
Load data from databases to dataframes, the fastest way. |
4,951 downloads over 30 days | 5 | 2,659 | 0.4.6 | GPU support unknown | Binds native code: libsqlite3-sys (feature src_sqlite), odpic-sys (feature src_oracle), openssl-sys (feature src_postgres) | MIT |
|
elusion Listed
Elusion is a modern DataFrame / Data Engineering / Data Analysis library that combines the familiarity of DataFrame operations (like those in PySpark, Pandas, and Polars) with the power of SQL query building. |
27 downloads over 30 days | 0 | 144 | 9.0.0 | GPU support unknown | Binds native code: ring, openssl-sys | MIT |
|
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 |
Why ListedNo archive, New or Featured rule places it, so it is Listed.
What it lacks for Featured
- It has 8 active dependents and 8 new dependents in 365 days. Featured needs 11 active dependents or 9 new dependents in 365 days. The repository route reads 3,310 stars, 259 forks and 94 contributors. It needs 4,539 stars, 434 forks and 79 contributors together.
What else the check found
- The last activity is on 9 Nov 2026, 0 days ago. The rules expect an update within 365 days. Dormancy rule
Check notes
- the latest release was packaged from a dirty working tree
Exact rules: Listed, Featured library. The check on applied thresholds version 9.
Every rule outcome, as the check records it
expected-interval: version 0.93.0 base 140, doubled for 98129 downloads per month, raised to the 365-day floor: E = 365 daysdormancy: last activity 2026-11-09, 0 days ago, E = 365: activefeatured: not featured: active_users 8 < 11 and new_adopters 8 < 9 and repository route stars 3310 (needs 4539), forks 259 (needs 434), contributors 94 (needs 79)listed: listed: no archive, new or featured rule applies
Crates41 crates
- vortex Primary
- vortex-alp
- vortex-array
- vortex-array-macros
- vortex-arrow
- vortex-btrblocks
- vortex-buffer
- vortex-bytebool
- vortex-cloud
- vortex-compressor
- vortex-compute
- vortex-cuda-macros
- vortex-datafusion
- vortex-datetime-parts
- vortex-decimal-byte-parts
- vortex-edition
- vortex-error
- vortex-fastlanes
- vortex-file
- vortex-fsst
- vortex-io
- vortex-ipc
- vortex-json
- vortex-layout
- vortex-mask
- vortex-metrics
- vortex-onpair
- vortex-parquet-variant
- vortex-pco
- vortex-runend
- vortex-scan
- vortex-sequence
- vortex-session
- vortex-sparse
- vortex-spatial
- vortex-tensor
- vortex-tui
- vortex-utils
- vortex-uuid
- vortex-zigzag
- vortex-zstd
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
- Description: the GitHub repository description
- crates.io database dump, fetched
- RustSec advisory database, fetched
- GitHub repository, fetched
- crates.io package, fetched
- GitHub contributors, fetched
Adoption8 active dependents, 8 new dependents in 365 days1 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Active dependents | 8 | crates.io database dump | Yes | |
| New dependents (365 days) | 8 | crates.io database dump | Yes | |
| Peak active dependents | 8 | crates.io database dump | Yes | |
| Active dependents as a share of the peak | 1 | crates.io database dump | Yes | |
| Binary downloads per release | Not measured | Yes |
MaintenanceLatest human commit: on the check date3 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Latest human commit | 2026-11-09 | GitHub repository | Yes | |
| Latest release | 2026-11-06 | crates.io database dump | Yes | |
| First release | 2024-03-05 | crates.io database dump | Yes | |
| Latest version | 0.93.0 | crates.io database dump | Yes | |
| Days the oldest outside issue waits for a reply | 21 | GitHub repository | Yes | |
| Maintainer replies over 365 days | 7 | GitHub repository | Yes | |
| Repository archived | false | GitHub repository | Yes | |
| Repository gone | false | GitHub repository | Yes | |
| Release commit or manifest in the repo | true | crates.io package | Yes | |
| Published docs | true | crates.io database dump | Yes | |
| Latest release fails cargo check | Not measured | Yes | ||
| Build check date | Not measured | Yes | ||
| Build check toolchain | Not measured | Yes |
SecurityUnpatched vulnerabilities: none
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Unpatched vulnerabilities past the grace window | none | RustSec advisory database | Yes | |
| RustSec unmaintained advisory | none | RustSec advisory database | Yes | |
| Deprecation notice | none | crates.io database dump | Yes | |
| Deprecated requirement | none | crates.io database dump | Yes |
Distribution79 releases, 98,129 downloads over 30 days5 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Releases | 79 | crates.io database dump | Yes | |
| Downloads over 30 days | 98129 | crates.io database dump | Yes | |
| Binary downloads over the last 3 releases | Not measured | Yes | ||
| Homebrew installs on request over 365 days | Not measured | Yes | ||
| Repology repository families | Not measured | Yes | ||
| Docker pull growth over 90 days | Not measured | Yes | ||
| Docker pulls at the growth baseline | Not measured | Yes | ||
| Every version a prerelease | false | crates.io database dump | Yes | |
| Every version 0.0.x | false | crates.io database dump | Yes | |
| Every version yanked | false | crates.io database dump | Yes | |
| Crate deleted from crates.io | false | crates.io database dump | Yes |
Repository3,310 stars, 259 forks, 94 contributors, 7,503 commits. Stars alone never qualify a project.
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| GitHub stars | 3310 | GitHub repository | Yes — one part of the repository route | |
| GitHub forks | 259 | GitHub repository | Yes — one part of the repository route | |
| Contributors with a GitHub account | 94 | GitHub contributors | Yes — one part of the repository route | |
| Commits on the default branch | 7503 | GitHub repository | No | |
| Repository's main crate left out of the entry | none | crates.io database dump | Yes |
Facts that never count
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| License | Apache-2.0 | crates.io database dump | No | |
| Runs on, from listed crates and their direct dependencies | GPU support unknown | crates.io database dump | No | |
| What shows each backend | no dependency or feature matches a backend row | crates.io database dump | No | |
| Native code, from listed crates and their dependencies | Binds native code: zstd-sys | crates.io database dump | No | |
| Python bindings, from direct dependencies of listed crates | No Python binding crate found | crates.io database dump | No | |
| Crates that depend on a listed crate directly | 32 | crates.io database dump | No |
Corrections and review history
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.