Zarrs.jl

High-performance Zarr V2 and V3 arrays for Julia, powered by the zarrs Rust library.

Features

  • Zarr V3 and V2 — Full support for both specification versions
  • High-performance Rust codecs — zstd, gzip, blosc (see Getting Started)
  • Sharding — Native support for the Zarr V3 sharding codec (see Getting Started)
  • DiskArrays.jl integration — Standard Julia array interface with lazy, chunked I/O
  • 14 numeric types — Bool, Int8–Int64, UInt8–UInt64, Float16/32/64, ComplexF32/64
  • Cross-language compatible — Arrays are readable/writable by zarr-python and other Zarr implementations
  • HTTP storage — Read remote Zarr arrays over HTTP/HTTPS (see Cloud & Remote Access)
  • Groups — Hierarchical data organization with attributes (see Getting Started)
  • Icechunk — Versioned cloud storage on S3, GCS, and Azure (see Icechunk Integration)

Documentation Overview

Installation

using Pkg
Pkg.add("Zarrs")
Rust toolchain

Zarrs.jl requires a Rust toolchain for building from source. Install from rustup.rs. Pre-built binaries will be available in a future release via BinaryBuilder.jl.

Quick Start

using Zarrs

# Create a Zarr V3 array
z = zcreate(Float64, 100, 100; chunks=(50, 50), path="/tmp/my.zarr")
z[:, :] = rand(100, 100)

# Read back
data = z[1:50, 1:50]

# Open an existing array
z2 = zopen("/tmp/my.zarr")

# Read a remote array over HTTP
z3 = zopen("https://example.com/data.zarr")

Status

Zarrs.jl is at v0.1.0 and under active development. Source code and issue tracker: github.com/earth-mover/Zarrs.jl.