tensogram 0.16.1

Fast binary N-tensor message format for scientific data — encode, decode, file I/O, streaming
Documentation
[package]
name = "tensogram"
version = "0.16.1"
edition = "2024"
rust-version = "1.87"
license = "Apache-2.0"
description = "Fast binary N-tensor message format for scientific data — encode, decode, file I/O, streaming"
repository = "https://github.com/ecmwf/tensogram"
homepage = "https://sites.ecmwf.int/docs/tensogram/main"
documentation = "https://docs.rs/tensogram"
readme = "README.md"
keywords = ["tensogram", "tensor", "scientific-data", "encoding", "serialization"]
categories = ["science", "encoding"]
authors = ["ECMWF <software@ecmwf.int>"]

[package.metadata.docs.rs]
all-features = true

[features]
default = ["szip", "zstd", "lz4", "blosc2", "zfp", "sz3", "threads"]
mmap = ["dep:memmap2"]
async = ["dep:tokio"]
remote = ["dep:object_store", "dep:url", "dep:bytes", "dep:tokio", "tokio/rt-multi-thread"]
# Compression feature gates — forwarded to tensogram-encodings
szip = ["tensogram-encodings/szip"]
szip-pure = ["tensogram-encodings/szip-pure"]
zstd = ["tensogram-encodings/zstd"]
zstd-pure = ["tensogram-encodings/zstd-pure"]
lz4 = ["tensogram-encodings/lz4"]
blosc2 = ["tensogram-encodings/blosc2"]
zfp = ["tensogram-encodings/zfp"]
sz3 = ["tensogram-encodings/sz3"]
# Enables the multi-threaded coding pipeline.  Pulls `rayon` and the
# matching feature in `tensogram-encodings`.  When disabled (e.g. on
# `wasm32`), `EncodeOptions.threads` / `DecodeOptions.threads` are
# accepted but silently ignored — the library falls back to sequential
# execution.
threads = ["dep:rayon", "tensogram-encodings/threads"]

[dependencies]
tensogram-encodings = { path = "../tensogram-encodings", version = "=0.16.1", default-features = false }
thiserror.workspace = true
ciborium = { workspace = true }
serde.workspace = true
xxhash-rust.workspace = true
uuid.workspace = true
tracing.workspace = true
memmap2 = { version = "0.9", optional = true }
tokio = { version = "1", features = ["fs", "rt"], optional = true }
# Remote object store access (S3, GCS, Azure, HTTP)
object_store = { version = "0.13", default-features = false, features = ["aws", "gcp", "azure", "http"], optional = true }
url = { version = "2", optional = true }
bytes = { version = "1", optional = true }
rayon = { workspace = true, optional = true }

[dev-dependencies]
proptest.workspace = true
serde_json.workspace = true
tempfile = "3"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
sha2 = "0.10"
hyper = { version = "1", features = ["server", "http1"] }
hyper-util = { version = "0.1", features = ["tokio"] }
http-body-util = "0.1"