This is a test release. The major new feature in this version is
support for multithreaded file I/O. We've been testing the threaded
code internally at ILM for a few months, and we have not encountered
any bugs, but we'd like to get some feedback from others before we
release the production version.
Here's a summary of the changes since version 1.2.2:
* Support for multithreaded file reading and writing.
* Support for Intel-based OS X systems.
* Support for Visual Studio 2005.
* Better handling of **PLATFORM_** and **HAVE_** macros.
* Updated documentation.
* Bug fixes related to handling of incomplete and damaged files.
* Numerous bug fixes and cleanups to the autoconf-based build system.
* Removed support for the following configurations that were
previously supported. Some of these configurations may happen to
continue to function, but we can't help you if they don't, largely
because we don't have any way to test them:
* IRIX
* OSF1
* SunOS
* OS X versions prior to 10.3.
* gcc on any platform prior to version 3.3
Detailed Changes:
* Removed openexr.spec file, it's out of date and broken to boot.
(Drew Hess)
* Support for Visual Studio 2005. (Drew Hess, Nick Porcino)
* When compiling against OpenEXR headers on Windows, you no longer
need to define any **HAVE_** or **PLATFORM_** macros in your
projects. If you are using any OpenEXR DLLs, however, you must
define OPENEXR_DLL in your project's preprocessor directives. (Drew
Hess)
* Many fixes to the Windows VC7 build system. (Drew Hess, Nick
Porcino)
* Support for building universal binaries on OS X 10.4. (Drew Hess,
Paul Schneider)
* Minor configure.ac fix to accommodate OS X's automake. (Drew Hess)
* Removed CPU-specific optimizations from configure.ac, autoconf's
guess at the CPU type isn't very useful, anyway. Closes
13429. (Drew Hess)
* Fixed quoting for tests in configure.ac. Closes 13428. (Drew
Hess)
* Use host specification instead of target in configure.ac. Closes
13427. (Drew Hess)
* Fix use of AC_ARG_ENABLE in configure.ac. Closes 13426. (Drew
Hess)
* Removed workaround for OS X istream::read bug. (Drew Hess)
* Added pthread support to OpenEXR pkg-config file. (Drew Hess)
* Added -no-undefined to LDFLAGS and required libs to LIBADD for
library projects with other library dependencies, per Rex Dieter's
patch. (Drew Hess)
* **HAVE_** macros are now defined in the OpenEXRConfig.h header file
instead of via compiler flags. There are a handful of public
headers which rely on the value of these macros, and projects
including these headers have previously needed to define the same
macros and values as used by OpenEXR's 'configure', which is bad
form. Now 'configure' writes these values to the OpenEXRConfig.h
header file, which is included by any OpenEXR source files that need
these macros. This method of specifying **HAVE_** macros guarantees
that projects will get the proper settings without needing to add
compile- time flags to accommodate OpenEXR. Note that this isn't
implemented properly for Windows yet. (Drew Hess)
* Platform cleanups:
- No more support for IRIX or OSF1.
- No more explicit support for SunOS, because we have no way to
verify that it's working. I suspect that newish versions of SunOS
will just work out of the box, but let me know if not.
- No more **PLATFORM_** macros (vestiges of the ILM internal build
system). PLATFORM_DARWIN_PPC is replaced by HAVE_DARWIN.
PLATFORM_REDHAT_IA32 (which was only used in IlmImfTest) is
replaced by HAVE_LINUX_PROCFS.
- OS X 10.4, which is the minimum version we're going to support
with this version, appears to have support for nrand48 and
friends, so no need to use the Imath-supplied version of them
anymore. (Drew Hess)
* No more PLATFORM_WINDOWS or PLATFORM_WIN32, replace with proper
standard Windows macros. (Drew Hess)
* Remove support for gcc 2.95, no longer supported. (Drew Hess)
* Eliminate HAVE_IOS_BASE macro, OpenEXR now requires support for
ios_base. (Drew Hess)
* Eliminate HAVE_STL_LIMITS macro, OpenEXR now requires the ISO C++
<limits> header. (Drew Hess)
* Use double quote-style include dirctives for OpenEXR
includes. (Drew Hess)
* Added a document that gives an overview of the on-disk
layout of OpenEXR files (Florian Kainz)
* Added sections on layers and on memory-mapped file input
to the documentation. (Florian Kainz)
* Bug fix: reading an incomplete file causes a deadlock while
waiting on a semaphore. (Florian Kainz)
* Updated documentation (ReadingAndWritingImageFiles.sxw) and sample
code (IlmImfExamples): Added a section about multi-threading,
updated section on thread-safety, changed documentation and sample
code to use readTiles()/writeTiles() instead of
readTile()/writeTile() where possible, mentioned that environment
maps contain redundant pixels, updated section on testing if a file
is an OpenEXR file. (Florian Kainz)
* Multi-threading bug fixes (exceptions could be thrown multiple
times, some operations were not thread safe), updated some comments,
added comments, more multithreaded testing. (Florian Kainz)
* Added multi-threading support: multiple threads
cooperate to read or write a single OpenEXR file.
(Wojciech Jarosz)
* Added operator== and operator!= to Imath::Frustum. (Andre Mazzone)
* Bug fix: Reading a PIZ-compressed file with an invalid Huffman code
table caused crashes by indexing off the end of an array. (Florian
Kainz)