Add notes to thread recycling / loadable modules

This commit is contained in:
Kleis Auke Wolthuizen 2021-06-03 15:35:26 +02:00
parent 6e8ec30852
commit 6f0131ff3e

View File

@ -12,15 +12,11 @@ kleisauke and others for their great work on this release.
[Lunaphore](https://www.lunaphore.ch/) kindly sponsored the development of [Lunaphore](https://www.lunaphore.ch/) kindly sponsored the development of
the new JPEG2000 features, see below. 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 # Experimental JPEG-XL support
libvips 8.11 includes experimental support for JPEG-XL load and save. 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 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 it, though behind a flag, and it looks like it might be enabled by default
this autumn in Chrome 89. this autumn in Chrome 89.
@ -64,8 +60,30 @@ be squeezed out.
# Thread recycling # Thread recycling
- new threading model has a single threadpool shared by all The threading system of libvips was revamped, the new implementation uses
pipelines [kleisauke] [GLib's thread pool](https://developer.gnome.org/glib/stable/glib-Thread-Pools.html)
semantics, 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
{Image,Graphics}Magick 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.
[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 # Full-colour text rendering