diff --git a/whats-new.md b/whats-new.md index 101915eb..9c31d596 100644 --- a/whats-new.md +++ b/whats-new.md @@ -12,15 +12,11 @@ kleisauke and others for their great work on this release. [Lunaphore](https://www.lunaphore.ch/) kindly sponsored the development of the new JPEG2000 features, see below. -# Loadable modules for some image format loaders - -- move openslide, libheif, poppler and magick to loadable modules [kleisauke] - # Experimental JPEG-XL support libvips 8.11 includes experimental support for JPEG-XL load and save. -(JPEG-XL)[https://jpeg.org/jpegxl/] is a promising new iteration of the JPEG +[JPEG-XL](https://jpeg.org/jpegxl/) is a promising new iteration of the JPEG standard that's currently being developed. The Chrome web browser supports it, though behind a flag, and it looks like it might be enabled by default this autumn in Chrome 89. @@ -64,8 +60,32 @@ be squeezed out. # Thread recycling -- new threading model has a single threadpool shared by all - pipelines [kleisauke] +The threading system of libvips was revamped, the new implementation uses +the [thread pool semantics of GLib](https://developer.gnome.org/glib/stable/glib-Thread-Pools.html), +which is a single thread pool shared across all pipelines. This +implementation allows the reuse of already started threads. + +This was originally intended for WebAssembly but it turned out to be useful +for native environments as well. Relative speed-ups are varying between ~4% +and ~15% compared to the previous implementation. Especially for short-lived +pipelines and long-running processes, a performance improvement can be observed. + +# Loadable modules for some dependencies + +libvips now supports building OpenSlide, libheif, Poppler and libMagick as a +dynamically loadable module. This makes it easier for distributions to provide +separate (optional) packages for these dependencies, making the core package +much slimmer and thus reducing the attack surface. Distributing separate packages +could also help to comply with GPL licensing (“mere aggregation” clause) or +patent-encumbered software. + +[GModule](https://developer.gnome.org/glib/stable/glib-Dynamic-Loading-of-Modules.html) +is used to accomplish this in a portable way. We already had a simple plugin +system based on this, but the build part was not yet implemented. + +These loadable modules are built automatically when GModule is supported, which +should be supported on at least Linux, Windows and macOS. It can be disabled +by passing `--disable-modules` while configuring libvips. # Full-colour text rendering