All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning as implemented by Cargo.
Release workflow supports manual workflow_dispatch with a tag input (in addition to tag push).cargo publish --dry-run in verify, --locked on the real publish.softprops/action-gh-release@v3; changelog extract uses shell: bash.cc to 1.4.5 (used by feature stub).cargo fmt to build.rs (import order and line wrapping).package.documentation and README docs links at https://docs.rs/vips-sys/ (drop GitHub Pages URLs).src/bindings/prebuilt.rs) are used by default: no
clang/bindgen required for normal cargo build. Enable feature bindgen only
when refreshing bindings against local headers.bindgen) allowlists vips_* / Vips* / VIPS_* plus a few
GObject helpers, uses use_core() + core::ffi, and fingerprint-caches output
in OUT_DIR.resolver = "3" (edition 2024).helpers::init / version / version_string use OnceLock; init returns a
cached result before allocating CString.bindgen is an optional build-dependency (default-features = false).merge_includes dedups with a HashSet.pkg-config probes when the bindgen feature is off.PKG_CONFIG_PATH / LIBVIPS_* env for correct rebuilds.vendor/libvips (pinned to v8.18.6).pkg-config --static / vcpkg static triplet; optional meson+ninja
build from vendored sources (static feature or LIBVIPS_STATIC=1).VCPKG_ROOT, VCPKG_DEFAULT_TRIPLET; document
vcpkg install vips:x64-windows[-static].LIBVIPS_LIB_DIR, LIBVIPS_INCLUDE_DIR, LIBVIPS_NO_VENDOR,
LIBVIPS_STATIC (0/false/off disable).cargo:include for dependent sys crates.cfg(vips_8_16) and cfg(vips_8_17).helpers::version_string().bindgen to regenerate FFI from local headers.stub: link stub/vips_stub.c when no system libvips is found so
cargo test --features helpers,stub works in sandboxes/CI. Real libraries
are always preferred.helpers::init / version / version_string.src/bindings/prebuilt.rs is
include!d unless feature bindgen is enabled.bindgen if you need
a wider local set.find_libvips no longer treats vendored headers alone as a linkable library.actions/checkout@v7 with submodules: recursive and
dtolnay/rust-toolchain@stable.helpers only (not bindgen).generate.sh — use cargo build --features bindgen instead.
wrapper.h is kept as the bindgen entry header.cargo publish, GitHub Release.prefer_static() matches env::var as Ok (was incorrectly Some).helpers::version_string: remove explicit * on OnceLock::get_or_init
(clippy::explicit_auto_deref, CodeQL alert #3353).cargo publish verify no longer fails when the machine has no libvips:
pregenerated bindings compile without headers/library; the build script only
panics under feature bindgen if headers are missing.vcpkg::Config::target_triplet is called in place (was assigned back
and failed to type-check).-D warnings / dead_code passes.clippy::type-complexity.README.md in English and add README_CN.md with language switch.