Skip to content

v4.0

Compare
Choose a tag to compare
@adolski adolski released this 31 May 22:08
· 1078 commits to develop since this release

Endpoints

  • A new X-Forwarded-ID reverse proxy header replaces X-IIIF-ID, which has been deprecated, and will be removed in a future version.
  • Error response representations are in text/plain format in the absence of a client preference.
  • When endpoint.iiif.content_disposition is set to inline, the Content-Disposition header value includes a filename-safe version of the image identifier.

Sources

  • Resolvers have been renamed sources to better reflect their core function.
  • AmazonS3Resolver has been renamed S3Source, and it now supports non-AWS endpoints.
  • S3Source supports a configurable path prefix and suffix when using BasicLookupStrategy.
  • AzureStorageSource supports shared access signature (SAS) URIs. (Thanks to @ddisciascio)
  • Improved the efficiency of source cache content access when cache.server.resolve_first = false.
  • All sources fall back to checking the magic bytes in image data if they cannot infer a format any other way.

Processors

  • KakaduProcessor has been renamed KakaduDemoProcessor to reflect the fact that it interfaces with the Kakadu demo tool, kdu_expand, and not the native library.
  • Added KakaduNativeProcessor, as well as compiled binaries for Linux, macOS, and Windows, which are free to use with it for non-commercial purposes.
  • Added DownloadStrategy as another optional retrieval strategy for stream-based processors, and as an optional fallback strategy. This enables all processors to work with all sources with no extra configuration.
  • JPEG2000-compatible JPX images are readable by all processors that support JPEG2000.
  • JaiProcessor has been deprecated. See the user manual for more information.
  • KakaduDemoProcessor and OpenJpegProcessor work in Windows.
  • KakaduDemoProcessor and OpenJpegProcessor read image metadata using custom code, which is more efficient than using the respective kdu_jp2info and opj_dump tools, and enables them to read the number of decomposition levels, which improves reliability when decoding images with less-common level counts.
  • Image I/O plugins can be selected on a per-format basis.
  • Improved the efficiency of the Java 2D resample filters.
  • When using the Java 2D pipeline to downscale to less than three pixels on a side, an empty image with the correct dimensions is returned, rather than a downscaled 3x3 image, which is the smallest size that the Java 2D resample filters support.
  • Java2dProcessor supports animated GIFs.
  • Java2dProcessor supports CMYK & YCCK JPEGs.
  • Worked around some behavior of the opj_decompress tool that could cause OpenJpegProcessor to break. (Thanks to @adam-vessey)
  • Improved PdfBoxProcessor's validation of requests for multi-page PDFs whose pages have inconsistent dimensions.
  • The processor.limit_to_8_bits configuration option is no longer available. All output is limited to 8 bits.
  • Disabled support for GIF source images in JaiProcessor, as it was buggy and other processors can handle GIF better.

Caching

  • AmazonS3Cache has been renamed S3Cache, and it now supports non-AWS endpoints.
  • The time-to-live of the source and derivative caches is independently configurable.
  • The cache worker dumps the contents of HeapCache during its shifts, if both are enabled and if HeapCache persistence is also enabled.
  • The cache worker's work interval specifies the amount of time between the end of one shift and the beginning of the next, rather between the start of one shift and the next.
  • The deprecated DELETE /cache/:identifier HTTP API method has been removed.

Delegate Script

  • The delegate script has been redesigned as a class that is instantiated per-request. See the "Delegate Script" section of the user manual for detailed information.

Other

  • Java 10 (18.3) is supported.
  • Updated JRuby to 9.1.17.0.