Skip to content

Release Notes

Jeremy Echols edited this page Oct 11, 2018 · 30 revisions

Release notes

The top of this file contains the latest stable release and relevant notes about what has changed since the previous release.

Release 3.0.0

RAIS 3.0.0 marks one of the biggest changes RAIS has seen to date!

Massive changes:

  • RAIS now supports Go plugins, and there are three example plugins to look at, two of which are suitable for use in production:
    • The S3-images plugin lets you save a ton of money if you can take a performance hit. S3 storage is extremely cheap, but the first request for an uncached file will be a bit slow. The plugin could probably use some refinement, but it works beautifully in some test cases we've tried out.
    • The DataDog plugin is very simple and can give you a high-level overview of how long RAIS is taking to process requests
    • Read more in the Plugins document
  • Dockerfile.build / Dockerfile.prod have been merged into a single multi-stage file
  • The docker-compose setup now passes all RAIS_* environment variables into the rais container, allowing for easier configuration via an .env file (or manually exporting environment variables)
  • The docker-compose setup is now far more generalizable
  • For those wanting to test out plugins, there are various docker-compose examples you can string together. For instance: docker-compose -f docker-compose.yml -f docker-compose.s3.yml
  • Major rewrite in IIIF URL parsing to improve how errors are reported when a request cannot be handled. Instead of just knowing the URL was invalid, you can now see things like "invalid quality" if "default" were misspelled to "defualt" or something.
  • Massive improvement to non-JP2 file performance when tiles are cached: RAIS used to read the file into memory (via ImageMagick libs) and then check the cache. Oops.
  • Legacy "chronam" handlers have been removed. RAIS is now exclusively for use with IIIF and DeepZoom clients.
  • If caching is enabled, a very basic cache info response is printed to logs every 10 minutes
  • RAIS now attempts to shut down gracefully instead of just immediately closing all connections

Other fixes:

  • Various comments have been fixed or improved to simplify the codebase
  • Most of the README has been moved to this wiki
  • Small improvements to various bits of code to reduce errors and improve developers' experiences

Release 2.11.2

Another very minor release: fixed issues with the local docker demo

Release 2.11.1

Very minor release: fixed version number and some documentation issues

Release 2.11.0

Major changes:

  • Supports new features defined in IIIF 2.1:
    • maxArea, maxWidth, and maxHeight may be set via configuration values in rais.toml or put into an overridden info.json file
      • If an image is requested that exceeds these values, the server will return an error, allowing for better image protection as well as reduced DOS attack vectors
    • "square" region keyword
    • "max" size keyword
    • Reports features "sizeByConfinedWh" and "sizeByDistortedWh" in info.json
  • GIF output has been disabled by default. It can be re-enabled with a custom capabilities toml file, but it is recommended you don't do this as GIF is notoriously slow in RAIS.

Docker image changes:

  • Uses Fedora 28 instead of 27
  • RAIS now runs as an unprivileged user
  • The demo uses docker-compose instead of being a bash script
  • Binaries use Go 1.11 for compilation
  • Added capacity to change demo container's capabilities

Minor / backend changes:

  • Source code format is now using the "go modules" approach rather than gb (gb is no longer being maintained as the author feels modules make more sense)
  • Minor test / coverage improvements
  • Slightly better logging
  • Minor code refactor

Release 2.10.1

  • Fixed memory leak due to mistake in openjpeg API usage

Release 2.10.0

  • Changed OpenJPEG interfacing to fix incompatibility with OpenJPEG 2.3.0
  • Upgraded Docker image to use Fedora 27, which has OpenJPEG 2.3.0, improving performance significantly
  • Minor "housekeeping" to clean up code and improve testing and benchmarking
  • Sample deploy script is now based on RHEL 7

Release 2.9.1

  • Adds ability to filter logging by severity

Release 2.9.0

  • Adds a timeout for HTTP connections to (hopefully) avoid "accept4: too many open files" errors when things get too slow or networks drop temporarily
  • Updates the build environment to use Go 1.9.2
  • Improves the apache Open Seadragon / DeepZoom test container setup

Release 2.8.1

  • Fixes errors when a viewer uses URL query parameters

Release 2.8.0

  • Adds experimental support for handling the DeepZoom protocol

Release 2.7.2

  • Un-fixes tile caching to avoid huge delays when Open Seadragon pulls the initial thumbnails

This un-fix unfortunately adds a fair amount of potentially cached images which may not be desired. It's a necessary evil, however, as huge JP2s can take 30 seconds or more when Open Seadragon insists on pulling 5-10 lower-resolution thumbnails before it will start working.

Release 2.7.1

  • Fixes tile caching to be significantly more selective about what is considered a tile

Release 2.7

  • Adds a new option to /etc/rais.toml for caching tiles in memory
  • Uses Go 1.6.3 for Docker build

Release 2.6

Major changes:

  • Properly detects resolution levels in JP2 files, and reports scale factors accordingly
  • Properly detects tile width and height, eliminating the need for manually specifying tiles on the command line
  • Optionally caches data for info.json responses
  • Adds the ability to override the IIIF info.json response per image
  • Allows specifying configuration via /etc/rais.toml (see the rais-example.toml file in the repository)
  • Allows limiting RAIS features via a IIIF capabilities file (see the cap-max.toml and cap-level0.toml files for examples)

Back-end improvements:

  • Fixes init scripts for RHEL 6 users
  • Uses Go 1.6 for the Docker build
  • The build system now uses gb
  • Visiting the server URL + "/version" will report the current version of RAIS

Release 2.5

  • Adds docker support for production and development
  • Removes the test which pulled huge JP2s from an external site

Release 2.4

  • Improves JP2 library detection when building with -tags jp2

Release 2.3

  • Fixes HUGE memory leak when handling pyramidal TIFFs

Release 2.2

  • Fixes bug with IIIF requests on non-JP2 sources

Release 2.1

  • Adds ImageMagick bindings for significantly faster TIFF decoding
  • Makes JP2 support optional, off by default
  • Allows chronam handler to use non-JP2 files
  • Fixes a minor memory leak
  • Removes annoying JP2 logging
  • Makes it easier to register different backends for various image types

Release 2.0

  • Adds TIFF, JPG, PNG, and GIF support for source images (instead of just JP2)
  • Adds PNG, GIF, and TIFF to output encoding options (instead of just JPG)
  • Adds grayscale and bitonal ouput
  • Adds force-resize and best-fit-resize options
  • Adds mirroring support
  • Dynamically determines compliance level for writing out info.json
  • Removes legacy "info" handler
  • Removes JP2 Dimensions() functionality (use GetWidth and GetHeight now)
  • Now IIIF level 2 compliant
  • Lots of formatting and lint fixes, and better testing

Release 1.0

  • Initial stable release under the RAIS name
  • Initial stable release of IIIF features