Skip to content

Commit d8dd06a

Browse files
authored
Release notes for v3.1.0 (AcademySoftwareFoundation#1089)
* Initial draft of v3.1.0 release notes Signed-off-by: Cary Phillips <[email protected]> * v3.1.0 Release notes summary; Set date to July 19 Signed-off-by: Cary Phillips <[email protected]> * Add recent PR's Signed-off-by: Cary Phillips <[email protected]> * Add PR 1092 and 1097 Signed-off-by: Cary Phillips <[email protected]> * formatting Signed-off-by: Cary Phillips <[email protected]>
1 parent cd60fae commit d8dd06a

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

CHANGES.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# OpenEXR Release Notes
22

3+
* [Version 3.1.0](#version-310-july-22-2021) July 22, 2021
34
* [Version 3.0.5](#version-305-july-1-2021) July 1, 2021
45
* [Version 3.0.4](#version-304-june-3-2021) June 3, 2021
56
* [Version 3.0.3](#version-303-may-18-2021) May 18, 2021
@@ -49,6 +50,98 @@
4950
* [Version 1.0.1](#version-101)
5051
* [Version 1.0](#version-10)
5152

53+
## Version 3.1.0 (July 22, 2021)
54+
55+
The 3.1 release of OpenEXR introduces a new library, OpenEXRCore,
56+
which is the result of a significant re-thinking of how OpenEXR
57+
manages file I/O and provides access to image data. It begins to
58+
address long-standing scalability issues with multithreaded image
59+
reading and writing.
60+
61+
The OpenEXRCore library provides thread-safe, non-blocking access to
62+
files, which was not possible with the current API, where the
63+
framebuffer management is separate from read requests. It is written
64+
entirely in C and provides a new C-language API alongside the existing
65+
C++ API. This new low-level API allows applications to do custom
66+
unpacking of EXR data, such as on the GPU, while still benefiting from
67+
efficient I/O, file validation, and other semantics. It provides
68+
efficient direct access to EXR files in texturing applications. This C
69+
library also introduces an easier path to implementing OpenEXR
70+
bindings in other languages, such as Rust.
71+
72+
The 3.1 release represents a technology preview for upcoming
73+
releases. The initial release is incremental; the existing API and
74+
underlying behavior has not changed. The new API is available now for
75+
performance validation testing, and then in future OpenEXR releases,
76+
the C++ API will migrate to use the new core in stages. It is not the
77+
intention to entirely deprecate the C++ API, nor must all applications
78+
re-implement EXR I/O in terms of the C library. The C API does not,
79+
and will not, provide the rich set of utility classes that exist in
80+
the C++ layer. The 3.1 release of the OpenEXRCore library simply
81+
offers new functionality for specialty applications seeking the
82+
highest possible performance. In the future, the ABI will evolve, but
83+
the API will remain consistent, or only have additions.
84+
85+
Technical Design
86+
87+
The OpenEXRCore API introduces a ``context`` object to manage file
88+
I/O. The context provides customization for I/O, memory allocation,
89+
and error handling. This makes it possible to use a decode and/or
90+
encode pipeline to customize how the chunks are written and read, and
91+
how they are packed or unpacked.
92+
93+
The OpenEXRCore library is built around the concept of “chunks”, or
94+
atomic blocks of data in a file, the smallest unit of data to be read
95+
or written. The contents of a chunk vary from file to file based on
96+
compression (i.e. zip and zips) and layout (scanline
97+
vs. tiled). Currently this is either 1, 16, or 32 scanlines, or 1 tile
98+
(or subset of a tile on edge boundaries / small mip level).
99+
100+
The OpenEXRCore library is specifically designed for multipart EXR
101+
files. It will continue to produce legacy-compatible single part files
102+
as needed, but the API assumes you are always dealing with a
103+
multi-part file. It also fully supports attributes, although being C,
104+
it lacks some of the C++ layer’s abstraction.
105+
106+
Limitations:
107+
108+
* No support yet for DWAA and DWAB compression during decode and
109+
encode pipelines. The low-level chunk I/O still works with DWAA and
110+
DWAB compressed files, but the encoder and decoder are not yet
111+
included in this release.
112+
113+
* For deep files, reading of deep data is functional, but the path for
114+
encoding deep data into chunk-level data (i.e. packing and
115+
compressing) is not yet complete.
116+
117+
* For both of these deficiencies, it is easy to define a custom
118+
routine to implement this, should it be needed prior to the library
119+
providing full support.
120+
121+
* No attempt to search through the file and find missing chunks is
122+
made when a corrupt chunk table is encountered. However, if a
123+
particular chunk is corrupt, this is handled such that the other
124+
chunks may be read without rendering the context unusable
125+
126+
Merged Pull Requests:
127+
128+
* [1097](https://github.com/AcademySoftwareFoundation/openexr/pull/1097) Include exported OpenEXR headers with "" instead of <>
129+
* [1092](https://github.com/AcademySoftwareFoundation/openexr/pull/1092) Document current standard optional attributes
130+
* [1088](https://github.com/AcademySoftwareFoundation/openexr/pull/1088) First draft of rst/readthedocs for C API/OpenEXRCore
131+
* [1087](https://github.com/AcademySoftwareFoundation/openexr/pull/1087) Edit doxygen comments for consistency and style
132+
* [1086](https://github.com/AcademySoftwareFoundation/openexr/pull/1086) Simplify names, improve error messages, fix imath usage in Core
133+
* [1077](https://github.com/AcademySoftwareFoundation/openexr/pull/1077) Initial doxygen/sphinx/breathe/readthedocs docs
134+
* [1076](https://github.com/AcademySoftwareFoundation/openexr/pull/1076) Refactor deep tests to separate file, fix deep chunk reads, ripmap reading
135+
* [1074](https://github.com/AcademySoftwareFoundation/openexr/pull/1074) Add utility function for ease of use in other libraries
136+
* [1073](https://github.com/AcademySoftwareFoundation/openexr/pull/1073) Use same struct scheme as box from imath for consistency
137+
* [1069](https://github.com/AcademySoftwareFoundation/openexr/pull/1069) Clean up library VERSION and SOVERSION
138+
* [1062](https://github.com/AcademySoftwareFoundation/openexr/pull/1062) Add missing "throw" before InputExc in IDManifest::init()
139+
* [1045](https://github.com/AcademySoftwareFoundation/openexr/pull/1045) Fix #1039 The vtable for TiledRgbaInputFile was not properly tagged
140+
* [1038](https://github.com/AcademySoftwareFoundation/openexr/pull/1038) fix/extend part number validation in MultiPart methods
141+
* [1024](https://github.com/AcademySoftwareFoundation/openexr/pull/1024) Remove dead code in ImfB44Compressor.cpp
142+
* [1020](https://github.com/AcademySoftwareFoundation/openexr/pull/1020) Fix comparison of integer expressions of different signedness warning
143+
* [870](https://github.com/AcademySoftwareFoundation/openexr/pull/870) WIP: New C core
144+
52145
## Version 3.0.5 (July 1, 2021)
53146

54147
Patch release that fixes problems with library symlinks and

0 commit comments

Comments
 (0)