zenjpeg 0.5.0

Pure Rust JPEG encoder/decoder with perceptual optimizations
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.92"
name = "zenjpeg"
version = "0.5.0"
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",
]
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-or-later"
repository = "https://github.com/imazen/zenjpeg"

[features]
alloc-instrument = ["std"]
archmage-simd = [
    "dep:archmage",
    "dep:magetypes",
    "dep:safe_unaligned_simd",
]
cms = ["cms-lcms2"]
cms-lcms2 = [
    "dep:lcms2",
    "dep:zune-jpeg",
]
cms-moxcms = [
    "dep:moxcms",
    "dep:zune-jpeg",
]
corpus-tests = []
debug-tokens = []
decoder = []
default = [
    "std",
    "yuv",
    "archmage-simd",
    "trellis",
]
ffi-tests = []
mozjpeg-tables = []
optimized-tables = []
parallel = [
    "std",
    "dep:rayon",
]
profile = []
sharp-yuv = []
std = []
test-utils = ["std"]
trellis = []
ultrahdr = [
    "dep:ultrahdr-core",
    "decoder",
    "std",
]
wasm-simd = []
wasm-trace = ["dep:web-sys"]
yuv = ["dep:yuv"]

[lib]
name = "zenjpeg"
path = "src/lib.rs"

[dependencies.aligned-vec]
version = "0.6"

[dependencies.archmage]
version = "0.3.0"
features = [
    "macros",
    "bytemuck",
    "avx512",
]
optional = true

[dependencies.bytemuck]
version = "1.14"
features = ["derive"]

[dependencies.enough]
version = "0.3"
features = ["std"]

[dependencies.imgref]
version = "1.10"

[dependencies.lcms2]
version = "6.0"
optional = true

[dependencies.linear-srgb]
version = "0.3.1"

[dependencies.magetypes]
version = "0.3.0"
features = ["bytemuck"]
optional = true

[dependencies.moxcms]
version = "0.6"
optional = true

[dependencies.multiversed]
version = "0.1"

[dependencies.multiversion]
version = "0.8"

[dependencies.rayon]
version = "1.10"
optional = true

[dependencies.rgb]
version = "0.8"
features = ["as-bytes"]

[dependencies.safe_unaligned_simd]
version = "0.2.3"
optional = true

[dependencies.thiserror]
version = "2.0"
default-features = false

[dependencies.tinyvec]
version = "1.10"
features = ["alloc"]

[dependencies.ultrahdr-core]
version = "0.1.0"
optional = true

[dependencies.web-sys]
version = "0.3"
features = ["console"]
optional = true

[dependencies.whereat]
version = "0.1.3"

[dependencies.wide]
version = "1.1"

[dependencies.yuv]
version = "0.8"
features = ["professional_mode"]
optional = true

[dependencies.zune-jpeg]
version = "0.5"
optional = true

[dev-dependencies.almost-enough]
version = "0.3"
features = ["std"]

[dev-dependencies.fast-ssim2]
version = "0.6"
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.test-case]
version = "3.3"

[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.3"
features = ["unsafe-perf"]

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.chrono]
version = "0.4"

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
version = "0.5"

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.dssim]
version = "3.2"

[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.png]
version = "0.17"

[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.1.0"

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.yuv]
version = "0.8"
features = ["professional_mode"]

[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"