Version compatibility matrix
The handbook’s “reference implementation” is Go/govips, locked to a fixed version. The four bindings do not bundle or link the same libvips, so result comparison must not assume byte-for-byte identity.
Current locked version baseline
Section titled “Current locked version baseline”| Role | Component | Version | Notes |
|---|---|---|---|
| Reference | govips | v2.19.0 | Binds to system libvips 8.17.3 |
| Reference | libvips | 8.17.3 | System install, shared with pyvips and the CLI |
| Comparison | sharp | 0.35.5 | Bundles its own libvips 8.18.7 |
| Comparison | pyvips | 3.2.0 | Links the system libvips 8.17.3 |
| Comparison | vips CLI | 8.17.3 | Shares the system libvips with the reference |
Framework and runtimes (for reproducible builds): Node 24, pnpm 12.11.2, Astro 7.3.8, Starlight 0.42.6, TypeScript 6.0.3, Go 1.27.0, Python 3.14.5.
Why sharp’s version differs
Section titled “Why sharp’s version differs”sharp ships a prebuilt libvips together with the package. Therefore sharp’s libvips (8.18.7) differs from the system libvips (8.17.3): for the same input and equivalent intent, sharp can legitimately differ from govips/pyvips/CLI in encoding output. Comparison must not assume byte-for-byte identity.
pyvips and the vips CLI link the system libvips 8.17.3, sharing the same library as the reference, so their output is expected to match very closely.
Comparison boundary
Section titled “Comparison boundary”- The current strategy is metadata-only: dimensions, format, channels, and metadata are verified; pixel equality is not pursued.
- Pixel-level comparison requires a runner on a shared libvips baseline, marked
comparison-pendingand not yet implemented. - Version-sensitive conclusions must name the specific libvips and binding versions with a review date; do not generalise to every version.
When to upgrade
Section titled “When to upgrade”- When an operation requires a newer libvips (see install-failures / missing-codec under troubleshooting).
- When the gap between sharp’s bundled libvips and the system libvips causes a behavioural difference, trust the locked reference baseline.
- After upgrading any binding or libvips, update this matrix and re-verify the affected recipes.
Sources
Section titled “Sources”- The maintainer-locked toolchain baseline for this repository (libvips 8.17.3, govips v2.19.0, sharp 0.35.5, pyvips 3.2.0, CLI 8.17.3).
- govips README
- sharp versions (bundled libvips 8.18.7)
- pyvips
- libvips
This page is a version-baseline snapshot, reviewed 2026-10-11; re-verify after any upgrade.