gamut-core 0.1.0

Core traits, image buffers, dimensions, and error types shared across the gamut image codecs.
Documentation
  • Coverage
  • 100%
    12 out of 12 items documented0 out of 6 items with examples
  • Size
  • Source code size: 12.25 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 556.17 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 7s Average build duration of successful builds.
  • all releases: 7s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • justin13888

gamut

A collection of space-efficient image encoding libraries, organized as a Cargo workspace.

Usage

Add the umbrella gamut crate and enable only the formats you need:

[dependencies]
gamut = { version = "0.1", features = ["avif", "jxl"] }

The umbrella has no default features, so a bare dependency compiles only gamut-core.

Crates

Crate Purpose Status
gamut Umbrella crate; re-exports the format crates behind Cargo features scaffold
gamut-core Core traits (Encoder/Decoder), image buffers, dimensions, errors scaffold
gamut-color Color spaces, pixel formats, bit depths, chroma subsampling, transfers placeholder
gamut-dsp Shared DSP: DCT, wavelet transforms, quantization, filtering placeholder
gamut-bitstream Bit readers/writers and entropy coders (ANS, arithmetic, Huffman) placeholder
gamut-isobmff ISOBMFF container utilities (AVIF, HEIC) placeholder
gamut-riff RIFF container utilities (WebP) placeholder
gamut-av1 AV1 image encoder/decoder (basis for AVIF) placeholder
gamut-av2 AV2 (next-gen AV1 successor) encoder/decoder placeholder
gamut-avif AVIF encoder/decoder placeholder
gamut-jxl JPEG XL encoder/decoder placeholder
gamut-webp WebP encoder/decoder placeholder
gamut-heic HEIC/HEIF encoder/decoder placeholder
gamut-vvc VVC (H.266) encoder/decoder placeholder
gamut-cli gamut command-line image converter placeholder
gamut-wasm WebAssembly bindings placeholder
gamut-ffi C-compatible FFI bindings placeholder

All cargo metadata is centralized in the root [workspace.package] / [workspace.dependencies]; each crate inherits via .workspace = true.

Prerequisites

Quick Start

cargo build --workspace
cargo test --workspace

Development

Command Description
cargo build --workspace Build all crates
just test Run tests (workspace, all features)
just format Format code
just lint Lint with Clippy (warnings as errors)
just lint-fix Lint and auto-fix
just coverage Run tests with coverage (min 80%)

Tech Stack

  • Language: Rust (edition 2024)
  • Formatter: rustfmt
  • Linter: Clippy
  • Release: release-plz (dependency-ordered crates.io publishing)
  • Key Dependencies: tracing, thiserror, bitflags, clap, wasm-bindgen

Git Hooks

This project uses Lefthook. Pre-commit hooks auto-fix formatting and linting on staged files. Pre-push hooks run format checks, lint checks, tests, and a coverage gate.

CI/CD

GitHub Actions runs format checks, linting, tests, and coverage on pushes to master and pull requests.

Code Coverage

This project uses cargo-llvm-cov for LLVM-based code coverage. CI enforces a minimum of 80% line coverage.

just coverage

The bindings/binary crates (gamut-cli, gamut-wasm, gamut-ffi) are excluded from the gate — their entry points are not meaningfully unit-testable.

Releases

Publishing to crates.io is automated with release-plz. On pushes to master it opens a release PR (version bumps + changelogs); merging that PR publishes every changed crate in dependency order. Requires a CARGO_REGISTRY_TOKEN repository secret.

License

Licensed under either of MIT or Apache-2.0 at your option.