Skip to content

Releases: libvips/libvips

v8.18.2

31 Mar 21:36
17ad2f6

Choose a tag to compare

Changes since 8.18.1:

  • convolution: avoid using unsigned accumulators [nakrovati]
  • exif: check ifdN range [trailofbits]
  • tiffload: check jpeg and jp2k components [wooseokdotkim]
  • uhdrsave: set Q for gainmap recompress, don't chroma subsample RGB gainmaps
  • uhdrsave: prevent early unref of image with alpha channel [lovell]
  • rad2float: limit band count when converting from radiance [lovell]
  • jxlload: check EXIF buffer size before reading header [lovell]

Homebrew has updated, win binaries are here:

https://github.com/libvips/build-win64-mxe/releases/tag/v8.18.2

v8.18.1

18 Mar 10:45
d00e58e

Choose a tag to compare

This release fixes a few reported bugs, plus a lot of bugs found by recent improvements to fuzzing (thanks @dloebl!).

  • vector: mask supported Highway targets by builtin targets [kleisauke]
  • fix Highway paths on big-endian targets [kleisauke]
  • fix build with MSVC [star-hengxing]
  • fix compatibility with glibc 2.43 [mtasaka]
  • pngload: avoid an expensive check during header read [kleisauke]
  • improve vips7 JPEG load compatibility [kleisauke]
  • fix saving 3-band MATRIX images [kleisauke]
  • uhdrload: expose original gainmap scale factor [lovell]
  • uhdrsave: control generated gainmap scale factor [lovell]
  • source: guard against length truncation [Niebelungen-D]
  • shrinkh: fix possible OOB read in Highway path [dloebl] [kleisauke]
  • string_to_array_double: ensure delimiter list is consistent [dloebl] [lovell]
  • fix loading/saving of non-8-bit JXL images [DarthSim]
  • invertlut: check height before interpolating values [dloebl] [lovell]
  • extract: check bounds using unsigned arithmetic [Niebelungen-D] [lovell]
  • matrixload: guard against empty and very large inputs [Niebelungen-D] [lovell]
  • unpremultiply: check alpha_band is in range [Niebelungen-D] [lovell]
  • maplut: ensure lookup table index is unsigned [dloebl] [lovell]
  • fwfft: fix heap-buffer-overflow for single-row images [dloebl]
  • draw_flood: reject out-of-bounds start point [dloebl]
  • openexrload: fix a leak with invalid images [kleisauke]
  • canny: fix UB in atan2 lookup table init [dloebl] [kleisauke]
  • conva: guard against divide by zero [kleisauke]
  • csvload: check whitespace and separator are ASCII [Niebelungen-D] [lovell]
  • bandrank: check index is in range [Niebelungen-D] [lovell]
  • remainder_const: guard against divide by zero [kleisauke]
  • vips_window_take: prevent int underflow for small mapped images [jcupitt]
  • composite: fix UB (invalid-enum-value) in ->build() [kleisauke]
  • add: prevent possible int overflow [kleisauke]
  • bandmean: prevent possible int overflow [kleisauke]
  • fastcor: prevent possible int overflow [kleisauke]
  • multiply: prevent possible int overflow [kleisauke]
  • subtract: prevent possible int overflow [kleisauke]
  • hist_cum: prevent possible int overflow [kleisauke]
  • convasep: prevent possible int overflow [kleisauke]
  • conva: prevent possible int overflow [kleisauke]
  • convi: prevent possible int overflow [kleisauke]
  • draw_circle: prevent possible int overflow [kleisauke]
  • csvload: guard against negative index access [kleisauke]
  • convi: guard against invalid shift [kleisauke]
  • nary: guard against empty input [kleisauke]
  • maplut: add missing overflow checks [kleisauke]
  • jpegsave: fix assert fail when saving 2-band image [kleisauke]
  • LabS2LabQ: fix UB (undefined-shift) [kleisauke]
  • convasep: use unsigned accumulator where appropriate [kleisauke]
  • min: fix possible OOB read with complex images [kleisauke]
  • max: fix possible OOB read with complex images [kleisauke]
  • guard against dimension overflow [ElhananHaenel] [kleisauke]
  • gifload: prevent int overflow on 32-bit platforms [ElhananHaenel] [kleisauke]
  • sign: use ready image instead of unary->in [kleisauke]
  • statistic: use ready image instead of statistic->in [kleisauke]
  • hist_plot: handle near-zero ranges for float images [kleisauke]
  • affine: check bounds using unsigned arithmetic [kleisauke]

Windows binaries here:

https://github.com/libvips/build-win64-mxe/releases/tag/v8.18.1

v8.18.0

17 Dec 12:33
36fe746

Choose a tag to compare

The libvips 8.18 release notes are here:

https://www.libvips.org/2025/12/04/What's-new-in-8.18.html

Notable changes since 8.17:

  • add dcrawload, dcrawload_source, dcrawload_buffer: load raw camera files using libraw [lxsameer]
  • add magickload_source: load from a source with imagemagick
  • add vips__worker_exit(): enables fast threadpool shutdown
  • larger mmap windows on 64-bit machines improve random access mode performance for many file formats
  • pdfload: control region to be rendered via page_box [lovell]
  • system: add "cache" argument
  • add vips_image_get_tile_width(), vips_image_get_tile_height(): get tile cache geometry hints [jbaiter]
  • add vips_uhdrload(), vips_uhdrload_buffer(), vips_uhdrload_source(): load an UltraHDR image
  • add vips_uhdrsave(), vips_uhdrsave_buffer(), vips_uhdrsave_target(): save an UltraHDR image
  • fix cpp binding leak [VivitionDeveloper]
  • add "gainmap" to VipsKeep
  • add vips_image_get_gainmap()
  • thumbnail updates gainmaps
  • add "bitdepth" to jxlsave
  • add "path" option to vipsthumbnail, deprecate "output" option [zjturner]
  • add "exact" to webpsave
  • add "uhdr2scRGB"
  • dzsave has gainmap support
  • cpp: add .gainmap(), .set(VImage)
  • add support for Oklab and Oklch colourspaces
  • add vips_Oklab2XYZ(), vips_XYZ2Oklab()
  • add vips_Oklab2Oklch(), vips_OKlch2Oklab()
  • add vips_interpretation_bands()
  • heifsave: add "tune" parameter
  • require C++14 as a minimum standard [kleisauke]
  • prefer libpng over spng

Windows binaries here:

https://github.com/libvips/build-win64-mxe/releases/tag/v8.18.0

v8.18.0-rc3

10 Dec 14:53

Choose a tag to compare

v8.18.0-rc3 Pre-release
Pre-release

Third release candidate for 8.18. The release notes are here:

https://www.libvips.org/2025/12/04/What's-new-in-8.18.html

Notable changes since 8.17:

  • add dcrawload, dcrawload_source, dcrawload_buffer: load raw camera files
    using libraw [lxsameer]
  • add magickload_source: load from a source with imagemagick
  • add vips__worker_exit(): enables fast threadpool shutdown
  • larger mmap windows on 64-bit machines improve random access mode for many
    file formats
  • pdfload: control region to be rendered via page_box [lovell]
  • system: add "cache" argument
  • add vips_image_get_tile_width(), vips_image_get_tile_height(): get tile
    cache geometry hints [jbaiter]
  • add vips_uhdrload(), vips_uhdrload_buffer(), vips_uhdrload_source(): load an
    UltraHDR image
  • add vips_uhdrsave(), vips_uhdrsave_buffer(), vips_uhdrsave_target(): save an
    UltraHDR image
  • fix cpp binding leak [VivitionDeveloper]
  • add "gainmap" to VipsKeep
  • add vips_image_get_gainmap()
  • thumbnail updates gainmaps
  • add "bitdepth" to jxlsave
  • add "path" option to vipsthumbnail, deprecate "output" option [zjturner]
  • add "exact" to webpsave
  • add "uhdr2scRGB"
  • dzsave has gainmap support
  • cpp: add .gainmap(), .set(VImage)
  • add support for Oklab and Oklch colourspaces
  • add vips_Oklab2XYZ(), vips_XYZ2Oklab()
  • add vips_Oklab2Oklch(), vips_OKlch2Oklab()
  • add vips_interpretation_bands()
  • heifsave: add "tune" parameter
  • require C++14 as a minimum standard [kleisauke]
  • prefer libpng over spng

Test windows binaries (for rc2) here:

https://github.com/libvips/build-win64-mxe/releases/tag/v8.18.0-rc2

v8.18.0-rc2

08 Dec 18:06

Choose a tag to compare

v8.18.0-rc2 Pre-release
Pre-release

Second release candidate for 8.18. The release notes are here:

https://www.libvips.org/2025/12/04/What's-new-in-8.18.html

Notable changes since 8.17:

  • add dcrawload, dcrawload_source, dcrawload_buffer: load raw camera files
    using libraw [lxsameer]
  • add magickload_source: load from a source with imagemagick
  • add vips__worker_exit(): enables fast threadpool shutdown
  • larger mmap windows on 64-bit machines improve random access mode for many
    file formats
  • pdfload: control region to be rendered via page_box [lovell]
  • system: add "cache" argument
  • add vips_image_get_tile_width(), vips_image_get_tile_height(): get tile
    cache geometry hints [jbaiter]
  • add vips_uhdrload(), vips_uhdrload_buffer(), vips_uhdrload_source(): load an
    UltraHDR image
  • add vips_uhdrsave(), vips_uhdrsave_buffer(), vips_uhdrsave_target(): save an
    UltraHDR image
  • fix cpp binding leak [VivitionDeveloper]
  • add "gainmap" to VipsKeep
  • add vips_image_get_gainmap()
  • thumbnail updates gainmaps
  • add "bitdepth" to jxlsave
  • add "path" option to vipsthumbnail, deprecate "output" option [zjturner]
  • add "exact" to webpsave
  • add "uhdr2scRGB"
  • dzsave has gainmap support
  • cpp: add .gainmap(), .set(VImage)
  • add support for Oklab and Oklch colourspaces
  • add vips_Oklab2XYZ(), vips_XYZ2Oklab()
  • add vips_Oklab2Oklch(), vips_OKlch2Oklab()
  • add vips_interpretation_bands()
  • heifsave: add "tune" parameter
  • require C++14 as a minimum standard [kleisauke]
  • prefer libpng over spng

v8.18.0-rc1

05 Dec 20:46
87a0f03

Choose a tag to compare

v8.18.0-rc1 Pre-release
Pre-release

First release candidate for 8.18. The release notes are here:

https://www.libvips.org/2025/12/04/What's-new-in-8.18.html

Notable changes since 8.17:

  • add dcrawload, dcrawload_source, dcrawload_buffer: load raw camera files
    using libraw [lxsameer]
  • add magickload_source: load from a source with imagemagick
  • add vips__worker_exit(): enables fast threadpool shutdown
  • larger mmap windows on 64-bit machines improve random access mode for many
    file formats
  • pdfload: control region to be rendered via page_box [lovell]
  • system: add "cache" argument
  • add vips_image_get_tile_width(), vips_image_get_tile_height(): get tile
    cache geometry hints [jbaiter]
  • add vips_uhdrload(), vips_uhdrload_buffer(), vips_uhdrload_source(): load an
    UltraHDR image
  • add vips_uhdrsave(), vips_uhdrsave_buffer(), vips_uhdrsave_target(): save an
    UltraHDR image
  • fix cpp binding leak [VivitionDeveloper]
  • add "gainmap" to VipsKeep
  • add vips_image_get_gainmap()
  • thumbnail updates gainmaps
  • add "bitdepth" to jxlsave
  • add "path" option to vipsthumbnail, deprecate "output" option [zjturner]
  • add "exact" to webpsave
  • add "uhdr2scRGB"
  • dzsave has gainmap support
  • cpp: add .gainmap(), .set(VImage)
  • add support for Oklab and Oklch colourspaces
  • add vips_Oklab2XYZ(), vips_XYZ2Oklab()
  • add vips_Oklab2Oklch(), vips_OKlch2Oklab()
  • add vips_interpretation_bands()
  • heifsave: add "tune" parameter
  • require C++14 as a minimum standard [kleisauke]
  • prefer libpng over spng

v8.17.3

30 Oct 14:53

Choose a tag to compare

Changes since 8.17.2:

  • tiffsave: fix saved resolution with a non-default resolution-unit metadata
    item [machur]
  • svgload: ensure short/malformed compressed input is ignored [kleisauke,lovell]
  • dzsave: Zoomify: ensure correct tile count in ImageProperties.xml [kleisauke]
  • VipsSaveable: reimplement with macros to help C++ compat [jcupitt]

Windows binaries here:

https://github.com/libvips/build-win64-mxe/releases/tag/v8.17.3

v8.17.2

13 Sep 13:04
0b9ea3a

Choose a tag to compare

Changes since 8.17.1:

  • rank: fix an off-by-one error [larsmaxfield]
  • popplerload, svgload: validate page size [Yang Luo]
  • pdfiumload: allow both dpi and scale to be set [kleisauke]
  • svgload: honor DPI when scaling elements with non-pixel units [kleisauke]
  • disable redundant Highway AVX512 targets [kleisauke]
  • openslideload_source: flag operation as "nocache" [kleisauke]
  • remove vipsprofile.1 man page from install [kleisauke]
  • tiffload: ensure processing halts for memory-related errors [lovell]
  • tiffload: increase memory limit from 20MB to 50MB [lovell]
  • fix vapi build [stydxm]
  • tiffsave: include sample format when copying tiff data [manthey]

Windows binaries here:

https://github.com/libvips/build-win64-mxe/releases/tag/v8.17.2

v8.18.0-alpha2

21 Aug 15:55
9cc54a0

Choose a tag to compare

v8.18.0-alpha2 Pre-release
Pre-release

Changes since alpha1:

  • system: add "cache" argument
  • add vips_image_get_tile_width(), vips_image_get_tile_height(): get tile cache geometry hints [jbaiter]

A test release to help nip4 betas.

v8.18.0-alpha1

21 Jul 15:33
00d6076

Choose a tag to compare

v8.18.0-alpha1 Pre-release
Pre-release

A test release for nip4 development.

Changes since 8.17.0:

  • add dcrawload, dcrawload_source, dcrawload_buffer: load raw camera files using libraw [lxsameer]
  • add magickload_source: load from a source with imagemagick
  • add vips__worker_exit(): enables fast threadpool shutdown
  • larger mmap windows on 64-bit machines improve random access mode for many file formats
  • pdfload: control region to be rendered via page_box [lovell]