Skip to content

v5.0

Compare
Choose a tag to compare
@github-actions github-actions released this 26 Mar 22:08
· 286 commits to develop since this release

Endpoints

  • Added an endpoint supporting the IIIF Image API version 3.0 at /iiif/3.
  • When an image requested at max size is larger than the value of the max_pixels configuration key, it is downscaled to that value instead of the request being forbidden. This behavior aligns more closely with the IIIF Image API.
  • The minimum and maximum size of the built-in web server's thread pool is configurable.
  • Added a configuration option to control whether the health check includes dependent sources and caches.
  • A cache=recache URL query argument is available that reprocesses and recaches the derivative image before delivering it.
  • The X-IIIF-ID reverse proxy header is no longer supported. X-Forwarded-ID should be used instead.
  • The response-content-disposition URL query argument supports RFC 6266 Unicode filename syntax.
  • The endpoint.iiif.content_disposition configuration key has been removed. The response-content-disposition URL query argument should be used instead.
  • The http.http2.enabled and https.http2.enabled configuration keys have been removed. HTTP/2 is always enabled.
  • The identifier path component of IIIF Image API URIs may contain a "meta-identifier," which is comprised of an identifier plus other relevant information like a page number and/or scale constraint.
  • The page and time query arguments have been deprecated in favor of the meta-identifier-expressed page number explained above.
  • Added a log_error_responses configuration key that causes all errors at all endpoints to be logged, which may help to track down errors that evade logging elsewhere.

Sources

  • Sources support inconsistencies between filename/identifier extensions and byte signatures.
  • HttpSource uses the OkHttp HTTP client library instead of Jetty.
  • HttpSource supports HTTP/2.
  • S3Source uses version 2 of the AWS SDK insead of MinIO.

Processors

  • ImageMagickProcessor, GraphicsMagickProcessor, and KakaduDemoProcessor have been removed.
  • Added GrokProcessor. (Thanks to @boxerab)
  • Java2dProcessor supports multi-page TIFFs.
  • The metadata-handling system has been redesigned:
    • Source image metadata is cached in derivative caches.
    • XMP metadata can be copied or edited using a delegate method.
    • The processor.metadata.respect_orientation configuration key has been removed and EXIF Orientation values are always respected.
  • KakaduNativeProcessor, OpenJpegProcessor, and TurboJpegProcessor respect the EXIF Orientation tag.
  • KakaduNativeProcessor, OpenJpegProcessor, and TurboJpegProcessor support EXIF, IPTC IIM, and XMP metadata.
  • Java2dProcessor supports the XPM source format.
  • Added a processor.downscale_linear configuration key to enable downscaling in a linear color space.
  • TurboJpegProcessor decompresses with "accurate" rather than "fast" DCT.
  • FfmpegProcessor, KakaduNativeProcessor, OpenJpegProcessor, and PdfBoxProcessor use libjpeg-turbo to write JPEGs if it is available.
  • Added the scaled position for image overlays.
  • Updated the included Kakadu library used by KakaduNativeProcessor to version 8.0.3.
  • Updated Apache PDFBox to version 2.0.22.
  • PdfBoxProcessor properties added to better control memory
    • processor.pdf.scratch_file_enabled allows use of a scratch file
    • processor.pdf.max_memory_bytes allows control over how much memory a PDF thread consumes (-1 means unlimited).

Caches

  • S3Cache has been updated to use version 2 of the AWS SDK.
  • RedisCache has been updated to use version 6.0.1 of the Lettuce client.
  • The delegate method invocation cache has been removed.

Delegate Script

  • A delegate class can be written in Java. See the user manual for more information.
  • Added a pre_authorize() delegate method that enables more efficient, "fail-fast" authorization.
  • Added local_uri and page_count keys to the delegate script context.
  • Corrected the structure of the cookie key in the delegate script context. See the upgrade guide for more information.
  • Updated JRuby to version 9.2.13.0.

Other

  • The application is now packaged as a JAR file and can no longer work in a Servlet container. (See #339 for background.)
  • Java 11 is required.
  • Added configuration options for logging in Logstash format. (Thanks to @cmhdave)
  • The redaction.enabled configuration key has been removed. The redaction() delegate method is always called and redactions are always applied if it returns any.
  • The overlay() delegate method may return a boolean word_wrap key value to enable automatic wrapping of overlay strings.
  • The -Dcantaloupe.list_fonts VM argument has been replaced with the -list-fonts command-line argument.