[package]
edition = "2024"
rust-version = "1.93"
name = "zenjpeg"
version = "0.8.3"
authors = ["Lilith River <lilith@imazen.io>"]
build = false
exclude = [
"tests/",
"test_cache/",
"benches/",
"examples/",
"docs/",
"fuzz/",
"scripts/",
"reports/",
"*.log",
"*.csv",
"*.png",
"*.jpg",
"*.jpeg",
"refactor.md",
"xyb.md",
"QUALITY_INVESTIGATION.md",
".gitignore",
"CLAUDE.md",
"CONTEXT-HANDOFF.md",
"FEEDBACK.md",
".claude/",
".superwork/",
".zenbench/",
"copter-report/",
".github/",
"Cross.toml",
"justfile",
"Cargo.toml.original.txt",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Pure Rust JPEG encoder/decoder with perceptual optimizations"
documentation = "https://docs.rs/zenjpeg"
readme = "README.md"
keywords = [
"jpeg",
"image",
"encoder",
"decoder",
"compression",
]
categories = [
"multimedia::images",
"encoding",
]
license = "AGPL-3.0-only OR LicenseRef-Imazen-Commercial"
repository = "https://github.com/imazen/zenjpeg"
resolver = "2"
[features]
__alloc-instrument = []
__corpus-tests = []
__debug-tokens = []
__ffi-tests = []
__profile = []
__test-utils = []
__wasm-simd = []
decoder = []
default = [
"decoder",
"yuv",
]
layout = [
"decoder",
"dep:zenlayout",
"dep:zenresize",
]
moxcms = ["dep:moxcms"]
parallel = ["dep:rayon"]
trellis = []
ultrahdr = [
"decoder",
"ultrahdr-core/std",
"ultrahdr-core/transfer",
]
yuv = []
zencodec = ["decoder"]
[lib]
name = "zenjpeg"
path = "src/lib.rs"
[dependencies.aligned-vec]
version = "0.6"
[dependencies.archmage]
version = "0.9.16"
features = [
"macros",
"avx512",
"testable_dispatch",
]
[dependencies.bytemuck]
version = "1.14"
features = ["derive"]
[dependencies.enough]
version = "0.4"
features = ["std"]
[dependencies.imgref]
version = "1.12"
[dependencies.linear-srgb]
version = "0.6.7"
[dependencies.magetypes]
version = "0.9.16"
features = ["avx512"]
[dependencies.moxcms]
version = "0.8.1"
features = ["options"]
optional = true
[dependencies.rayon]
version = "1.10"
optional = true
[dependencies.rgb]
version = "0.8"
features = ["as-bytes"]
[dependencies.safe_unaligned_simd]
version = "0.2.5"
features = ["avx512"]
[dependencies.thiserror]
version = "2.0"
default-features = false
[dependencies.tinyvec]
version = "1.10"
features = ["alloc"]
[dependencies.ultrahdr-core]
version = "0.4.0"
default-features = false
[dependencies.web-sys]
version = "0.3"
features = ["console"]
optional = true
[dependencies.whereat]
version = "0.1.5"
[dependencies.wide]
version = "1.1"
[dependencies.yuv]
version = "0.8"
features = ["professional_mode"]
[dependencies.zencodec]
version = "0.1.13"
[dependencies.zenlayout]
version = "0.2"
optional = true
[dependencies.zenpixels]
version = "0.2.1"
features = ["imgref"]
default-features = false
[dependencies.zenresize]
version = "0.2"
features = ["layout"]
optional = true
[dependencies.zune-jpeg]
version = "0.5"
optional = true
[dev-dependencies.almost-enough]
version = "0.4"
features = ["std"]
[dev-dependencies.codec-corpus]
version = "1"
[dev-dependencies.fast-ssim2]
version = "0.7.1"
features = ["imgref"]
[dev-dependencies.jpeg-decoder]
version = "0.3.2"
[dev-dependencies.serde]
version = "1.0"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1.0"
[dev-dependencies.sha2]
version = "0.10"
[dev-dependencies.smallvec]
version = "1.13"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.test-case]
version = "3.3"
[dev-dependencies.zune-core]
version = "0.5.1"
[dev-dependencies.zune-jpeg]
version = "0.5"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.approx]
version = "0.5"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.bincode]
version = "1.3"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.butteraugli]
version = "0.9.0"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.chrono]
version = "0.4"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.codec-eval]
version = "0.3"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
version = "0.8"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.dssim-core]
version = "3.4"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.image]
version = "0.25"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.img-parts]
version = "0.4"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.kamadak-exif]
version = "0.6"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.mozjpeg-rs]
version = "0.5.3"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.mozjpeg-sys]
version = "2.2"
features = ["nasm_simd"]
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.png]
version = "0.18"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.proptest]
version = "1.4"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.rayon]
version = "1.10"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.ultrahdr-core]
version = "0.4.0"
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.ultrahdr-rs]
version = "0.3.4"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.yuv]
version = "0.8"
features = ["professional_mode"]
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.zenbench]
version = "0.1.2"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.zensim]
version = "0.2"
features = ["classification"]
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.zensim-regress]
version = "0.3.0"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.zune-jpeg]
version = "0.5"
[target.'cfg(target_arch = "wasm32")'.dev-dependencies.console_error_panic_hook]
version = "0.1.7"
[target.'cfg(target_arch = "wasm32")'.dev-dependencies.getrandom]
version = "0.3"
features = ["wasm_js"]
[target.'cfg(target_arch = "wasm32")'.dev-dependencies.wasm-bindgen]
version = "0.2.108"
[target.'cfg(target_arch = "wasm32")'.dev-dependencies.wasm-bindgen-test]
version = "0.3.58"
[lints.clippy]
approx_constant = "allow"
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
doc_overindented_list_items = "allow"
enum_variant_names = "allow"
excessive_precision = "allow"
items_after_statements = "allow"
manual_div_ceil = "allow"
manual_is_multiple_of = "allow"
many_single_char_names = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
must_use_candidate = "allow"
needless_range_loop = "allow"
redundant_closure = "allow"
similar_names = "allow"
too_many_arguments = "allow"
type_complexity = "allow"
uninlined_format_args = "allow"
unnecessary_wraps = "allow"
unreadable_literal = "allow"
unused_self = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.rust]
unsafe_code = "allow"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ['cfg(feature, values("avx512", "optimized-tables"))']