# plumers Rust wrapper (`plumers`) and bindings (`libplum-sys`) for [libplum](//github.com/aaaaaa123456789/libplum), an image (de)coding library. Please report any issues on [the ticket tracker](//todo.sr.ht/~issotm/plumers), and contribute code to [the repo](//git.sr.ht/~issotm/plumers)! ## Comparison to [`image`](//lib.rs/crates/image)? The good: + Small (few dependencies) + [Upstream is fuzz-tested](//github.com/aaaaaa123456789/libplum/tree/fuzz) + Supports the full JPEG standard, “including fractional subsampling, which nobody does!” + Embedded colour palettes are a first-class feature The bad: - Not pure Rust, so some tooling doesn't work. For example, [Miri](//github.com/rust-lang/miri#readme) - Requires libclang to build - Only supports GIF, BMP, PNG, APNG, JPEG, and PNM; and not any of the more fringe formats ## Maintenance [![builds.sr.ht status](//builds.sr.ht/~issotm/plumers/commits/master/msrv.yml.svg)](//builds.sr.ht/~issotm/plumers/commits/master/msrv.yml?) ### Updating libplum To avoid the crate's build requiring Git, Make, and Bash (something something Windows), the entirety of libplum's “distributable” (`libplum.c` and `libplum.h`) is included under `libplum-sys/src`. To update it, run `cargo xtask update_libplum`; the version to which it is updated is what's specified the crate's version (the build metadata, to be precise).