[ome-devel] Release of OME Files C++ 0.3.0
Roger Leigh
rleigh at dundee.ac.uk
Tue Feb 14 12:39:21 GMT 2017
OME Files C++ 0.3.0
===================
OME Files is a reference implementation of the OME Data Model and
OME-TIFF file format for the storage and interchange of biological
imaging data and metadata. It provides support for:
• the OME Data Model (model objects, metadata store, XSL transforms
and XML validation)
• OME-TIFF reading
• OME-TIFF writing
Changes in this release include:
• updating the minimum C++ language standard to C++11 (from C++98)
• adding support for TIFF compression
• performance improvements for metadata reading and TIFF reading and
writing
• addition of the ome-model component, replacing bioformats' ome-xml
(this is the data model specification and ome-xml library following
decoupling from the Bio-Formats repository)
Downloads
---------
The software release is available at the OME Files C++ 0.3.0 download
page (http://downloads.openmicroscopy.org/ome-files-cpp/0.3.0/). This
page includes links to the individual repositories and source
releases, as well as the documentation and binary builds of the
collection for several common platforms, including Windows, Linux and
MacOS X.
Upgrading from 0.2.3
--------------------
The main change is the switch to C++11. No immediate source changes
are strictly required; the compatibility headers will continue to work
for now, however upgrading to the standard C++11 headers is highly
recommended to avoid future breakage. Client code is free to use any
C++11 features of their choosing. To update your code:
• enable C++11 or later support for your compiler
· MSVC users do not need to do anything (it doesn't have any
special option)
· GCC and Clang users need to add the "-std=c++11" or "-std=c++14"
option (the most recent versions default to C++14 and don't need
this)
· CMake users can set CMAKE_CXX_STANDARD_REQUIRED=11 and
CMAKE_CXX_STANDARD=14 to try C++14 and fall back to C++11 if
C++14 is unavailable
• replace <ome/compat/array.h> with <array> and use of
ome::compat::array with std::array
• replace <ome/compat/cstdint.h> with <cstdint>
• replace <ome/compat/memory.h> with <memory> and use of
ome::compat::shared_ptr with std::shared_ptr (likewise for related
types and functions such as std::weak_ptr, std::make_shared and
std::dynamic_pointer_cast)
• replace <ome/compat/tuple.h> with <tuple> and use of
ome::compat::tuple with std::tuple (likewise for related functions
such as std::get)
• the above compatibility headers, and their declared types in the
ome::compat namespace still exist but are deprecated; they simply
wrap the standard headers and types.
• the deprecated headers will be removed for 0.4.0.
Changes since ome-files-cpp 0.2.3
---------------------------------
All components:
• C++11 is now the minimum required language version, with C++14
being used when available
• enabled the use of a restricted number of C++11 features, including
enum class, nullptr, initializer lists, range-based for loops and
type traits
• enabled the use of C++11 syntax changes including "<::" not being
interpreted as a trigraph and ">>" being used to close nested
templates instead of "> >"
• additional features will be enabled in subsequent releases
• Google Test (gtest) is no longer built separately in each source
component; the latest gtest release now allows use as a
conventional library
• source releases are now made directly from git with "git archive";
additional version metadata is no longer embedded in the source
releases
OME Common:
• Boost MPL size limits are now set with MSVC only; they are no
longer required for other compilers with C++11
• <ome/compat/array.h>, <ome/compat/cstdint.h>, <ome/compat/memory.h>
and <ome/compat/tuple.h> are now deprecated in favor of the
standard headers; they wrap the standard headers for backward
compatibility but will be removed in the next breaking release
OME Model:
The first release of the ome-model components (specification, xsd-fu
and ome-xml) since decoupling from Bio-Formats.
• sources use a Java maven source layout; this component is a dual
language component building both C++ and Java libraries
• specification OME-XML samples: Added ROI transform and mask samples
• specification transforms: Corrected upgrade to preserve ROI
transforms
• AffineTransform: Initialized with the identity matrix when default
constructed
• migrated formats documentation from the ome-documentation
repository, updated and integrated with cmake and maven builds
• renamed toplevel project from ome-xml to ome-model; the library
continues to be named ome-xml
OME Files:
• added support for TIFF compression, exposing all compression
algorithms supported by libtiff. Deflate and LZW will work for all
pixel types; JPEG support will be available if libtiff was compiled
with support for libjpeg
• OMETIFFReader now sets the interleaved property according to the
TIFF PlanarConfiguration tag; previously it was set to false
unconditionally
• TIFF wrapper: Cache IFD offsets on reading; this speeds up reading
by changing the complexity of indexed IFD access from O(n) to O(1)
• OMETIFFWriter: Sets the interleaved property unconditionally, even
when the samples per pixel count is 1; this is to ensure easy
round-tripping of data between readers and writers using the same
logical dimension ordering in the pixel buffer
• all TIFF writers: Set a default strip size of 2^16 pixels, which is
for example 64KiB for 8-bit greyscale data, or 192KiB for 8-bit RGB
data; the previous default was to copy the Java behavior of one row
per strip, which was much less efficient
OME QtWidgets:
• no changes
Super-Build 0.3.0:
• gtest: Build and install (into tool directory) like a regular
package
• renamed superbuild-install to stage
• docs: Dropped PDF documentation; documented C++11 changes
• added git-dir option to simplify building multiple repositories
from git
• Package changes:
· boost 1.63: Updated package
· ome-common 5.4.0: Updated package
· ome-files 0.3.0: Updated package
· ome-files-py: New experimental package (initial Python bindings
for OME Files C++)
· ome-model 5.5.0: New package (previously part of the Bio-Formats
sources)
· ome-qtwidgets 5.4.0: Updated package
· png 1.6.28: Updated package
· tiff 4.0.7: Updated package
· zlib 1.2.10: Updated package
Future changes
--------------
Upcoming improvements include:
All components:
• enabling of additional C++11 features following testing of compiler
support and compatibility
• further performance profiling and scalability improvements
OME XML:
• support for the use of custom annotations with the OME-XML data
model API
• this generalized annotation support will also be used for existing
annotations including Modulo and OriginalMetadata
• improved and more comprehensive OME-XML and OME-TIFF samples
• Improved documentation and code samples
OME Files:
• improvements to automated integration testing of OME-TIFF files
Super-Build:
• further improvements for building on Windows, including initial
VS2017 support
• updating of the set of platforms binary builds are provided for
You can find further information on which features will be included in
upcoming releases via the Trello board for version 0.3.1
(https://trello.com/b/nNwJHdpp/ome-files-0-3-1) and 0.4.0
(https://trello.com/b/WFYWCvoV/ome-files-0-4-0) (note that these are a
work in progress and are subject to change).
Errata
------
See the errata for this release
(https://www.openmicroscopy.org/site/support/ome-files-cpp/ome-cmake-superbuild/manual/html/errata.html).
Support
-------
For any problems or comments, please use the OME forums or mailing
lists (http://www.openmicroscopy.org/site/community).
Kind regards,
Roger Leigh
on behalf of the OME team
--
Dr Roger Leigh -- Open Microscopy Environment
Wellcome Trust Centre for Gene Regulation and Expression,
College of Life Sciences, University of Dundee, Dow Street,
Dundee DD1 5EH Scotland UK Tel: (01382) 386364
The University of Dundee is a registered Scottish Charity, No: SC015096
More information about the ome-devel
mailing list