Merge branch '8.11' of https://github.com/kleisauke/libvips into 8.11

This commit is contained in:
John Cupitt 2021-06-03 16:11:25 +01:00
commit c22215beef
1 changed files with 27 additions and 7 deletions

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
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