Version compatibility matrix
This handbook uses Go/govips as the reference implementation and locks it 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.
This page is a snapshot of the current test baseline. For significant releases and feature history across the projects, open the VIPS ecosystem timeline.
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 |
Runtimes checked on Fedora Linux 43 on 2026-10-12: Node.js 24.14.1, Go 1.27.0, and Python 3.14.5. The thumbnail example executed the same day produced the binding and libvips pairs in the table.
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 check covers dimensions, format, bands, and file size. Pixel equality is not a completed claim.
- In the thumbnail run, all four outputs were 640 × 427 WebP. govips wrote 36,172 bytes, sharp wrote 35,924 bytes, and pyvips and the CLI both wrote 39,228 bytes.
- That gap stays pending a pixel comparison. A version-sensitive sentence must name libvips, the binding, and the review date. Do not generalise it 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”- Version commands run on Fedora Linux 43 on 2026-10-12, and the thumbnail result generated the same day.
- govips v2.19.0 release
- sharp 0.35.5
- pyvips
- libvips
This page is the 2026-10-12 snapshot. Re-run the examples and rewrite the table after upgrading any component.