Zarr.jl is a Julia package providing an implementation of chunked, compressed, N-dimensional arrays. Zarr is originally a Python package. In Zarr.jl we aim to implement the zarr spec.
The package currently implements basic functionality for reading and writing zarr arrays. However, the package is under active development, since many compressors and backends supported by the python implementation are still missing.
This monorepo contains the Zarr facade, ZarrCore, compressor packages
ZarrBlosc, ZarrZlib, and ZarrZstd, and storage packages ZarrHTTP,
ZarrGCS, ZarrS3, and ZarrZip. Each package is a top-level directory. The
facade source and tests live in Zarr/src and Zarr/test; documentation remains
in docs.
The root Project.toml is a Julia 1.12+ workspace used for monorepo
development. Individual packages support Julia 1.10+.
julia +1.12 --project=. -e 'using Pkg; Pkg.instantiate(; workspace=true)'
julia +1.12 --project=docs docs/make.jlSee CONTRIBUTING.md for the complete test commands. On Julia
1.11+, each project's [sources] entries resolve its local dependencies. On
Julia 1.10, develop sibling packages with explicit relative paths, for example
Pkg.develop(path="../ZarrCore").
using Zarr
path = joinpath(mktempdir(), "example.zarr")
z1 = zcreate(Int, 100, 100; path, chunks=(10, 10))
z1[:, :] .= 42
z1[:, 1] = 1:100
z1[1, :] = 1:100
z2 = zopen(path, "r")
z2[1:10, 1:10]Use one index per dimension: z1[:, :] selects the entire two-dimensional
array; z1[:] is only valid for a one-dimensional Zarr array.
