The new features and improvements in this release fall into the following major categories:
1) Major changes to Kakadu's server technology. The main server application provides full support for IPv6, while the core `kdu_serve' object has been completely re-implemented from scratch so as to properly support JPIP service preferences, arbitrarily large windows of interest, better memory utilization, especially for multi-codestream sources, and more efficient handling of stateless requests. The new implementation provides native support at the deepest level for multiple JPIP channels, whereas previously multiple channels were implemented by time-sharing in the server, on a fundamentally single channel `kdu_serve' component. Cache model manipulation statements are now handled in a more modular manner, allowing them to be processed at more efficient points in time. There is much more to say about these changes, for which licensed users are referred to the "Updates.txt" document which ships with each licensed copy of Kakadu.
2) Kakadu now supports arbitrarily shaped region of interest metadata in JPX files. This is a new features which is being standardized as part of Ammendment 3 to IS15444-2. Previously, regions of interest were limited to horizontally/vertically aligned rectangles and ellipses. Now, arbitrarily oriented ellipses and arbitrary quadrilaterals are supported, along with all unions of these shapes -- e.g., polygons, polygons with rounded corners, etc. Along with this, the metadata overlay machinery provided by `kdu_region_compositor' has been greatly enhanced, and the `jpx_roi' object's interface has been massively extended to support geometric manipulation and analysis operations. In addition to this, Kakadu now provides a very powerful and completely platform independent tool to edit and discover high level attributes of regions of interest. This is the `jpx_roi_editor' object. It can be used to build a very powerful interactive shape editor, with the addition of an almost negligible amount of GUI-dependent code to detect mouse clicks and the like -- for a demonstration, see the "kdu_macshow" application which provides a capable and intuitive shape editor.
3) A range of improvements to the `kdu_region_compositor' API, including much more sophisticated, customizable and efficient metadata overlay rendering, and more comprehensive support for rendering of complex JPX files and construction of composited content from other sources. Arbitrary image pieces can now be composited with application control over cropping, rotation, mirroring, scaling, etc.
4) The core system has long supported automatic transposition and flipping of image content as part of the compression or decompression processing pipeline (for efficient geometric manipulation). This new release improves upon the way in which this is done, so as to ensure that all geometric manipulations are truly lossless, right down to the bit level. This means, for example, that a rotated view of a losslessly compressed medical image (generated using Kakadu's super-efficient appearance transforms) is indeed 100% lossless, whereas only the original orientation was rendered truly losslessly in previous versions of Kakadu.
5) Parsing, generation and interpretation of all HTTP headers and URL's is now performed in a manner which correctly recognizes, extracts and generates both IPv4 and IPv6 addresses, following the conventions described in RFC3986.
6) Improved the interpolation code in `kdu_region_decompressor' which is responsible for scaling imagery by arbitrarily selectted amounts. The new implementation provides more customization and much greater efficiency for large scaling factors.
7) Added support for the Broadcast profiles which are the subject of Ammendment 4 to IS15444-1. During codestream generation, the profile requirements are checked and informative messages are provided to help you set things up correctly for broadcast.
8) Modified the way in which Java Native Interfaces are generated by "kdu_hyperdoc" so as to include checks for null object references being passed as arguments to functions whose native counterpart is a by-reference argument. This catches a potentially common programming error at run-time and generate appropriate Java exceptions rather than allowing a segmentation fault to occur.
Of course, there is a great deal more to this new release than the above brief summary can outline. More comprehensive details of the changes may be found in the usual "Updates.txt" file.