TSC Meeting Notes 2021-09-23
Attendance:
- Cary Phillips
- Christina Tempelaar-Leitz
- John Mertic
- Joseph Goldstone
- Kimball Thurston
- Larry Gritz
- Nick Porcino
- Peter Hillman
- Rod Bogart
- Scott Wilson
- Arkell Rasiah
Agenda:
- Namespacing/API-compatibility
- Rust bindings
- 3.1.2 release
Discussion:
- PR 1153, divide-by-zero with invalid chromaticities:
- Peter: should the library prevent bad chromaticities from being written? They’re just data. Not sure.
- Larry: the modern way to divide floats is just to do it, then check if the result is invalid.
- Peter: But the sanitizer used in the fuzz tests is triggered by the initial operation, so while that ensures proper behavior, the tests will still fail.
- Arkell: gather reference footage?
- Wanted to add some stuff from when I worked on RV. Had also gathered some data when at Pix.
- Just “Representative images”
- From Mank: Monochrome
- We don’t cover wider gamut color spaces
- Combos of display window, there were a few holes there.
- Some data might be quite large. Do we want a few 8k images?
- Will have some time in December/January
- Will report back with a suggestion of what to gather.
- Joseph: 10 different groups are trying to standardize camera metadata.
- The “C” in “ACES” stands for “Color”, but nothing I was saying involved color.
- Best thing we can do is come up with very precise definitions of things.
- Example: the mark on the side of an ARRI camera is the focal plane? No, it’s the front of the sensor pad.
- Scott Wilson - Rust bindings
- We have a crate out
- Getting ready to set up an announcement
- Still need to set up CI
- We can get people to start hacking on it.
- Ready to hand off the openexr bindings
- Kimball: What are the constraints in terms of ABI compatibility? When someone says import exr, does Rust have a strong opinion about versioning?
- Scott: It all gets compiled into a static library. Every rust project defines cargo.tunnel, declaring what it expects. Then it resolves the packages. It assumes semver.
- CI: get it out, for windows, mac, linux
- ASWF docker container? I think so.
- Separate repo that links to the main exr repo. Larry: What about keeping the two in sync, simultaneous PR.
- No need for us to hand over the crate at this point.
- Core library & error messages
- Larry:
- starting to dive into the core library
- Kimball submitted a PR to OIIO to make the OpenEXR reader depend on Core library.
- Core library: reentrant so separate threads can read from the file.
- Old OpenEXR: thread pool, do decompression simultaneously.
- I refactored the reading
- It’s at least as efficient as before, at least for image files.
- For deep, about 2x, 3x for scanline deep.
- The old library was pretty good at taking advantage of parallelism
- Now, I’m rigging up texture system test
- So far everything is looking pretty good.
- A couple things tripped me up about error reporting.
- Old library hid parallelism from you. If there is bad data,the exception thrown was human readable. “Can’t read scanline 32.”
- Now, hard to tell what to report back when there’s an error.
- Error messages are straight from the implementer. No user can understand them.
- Kimball: error messages are for me to figure out where the error was occurring, not for users. Should make a cleanup pass.
- Larry: I want the earliest tile in the file. Don’t want the earliest one according to the clock, because that will make it hard to write a test suite that validates error detection.
- Just a very different behavior.
- Kimball : The big thing is unlocking the concurrent paths.
- Larry: My test so far: open file, read it all. Haven’t testing reading pieces of a bunch of files.
- Larry: Memory use is lower, haven’t figured out why. Significant savings.
- Kimball: I’m paranoid about allocating memory, I try not to.
- Namespacing
- Zip level: because we’re adding API, technically we should bump the version.
- Larry: screw the rules, do what’s right.
- To be backwards compatible, you want the so name to stay the same.
- The libtool people are the only ones who wrote up a halfway decent description of a policy.
- Larry: I don’t have a problem backporting a feature as long as it doesn’t break compatibility, even if technical it breaks semver.
- With the VFX reference platform, if we bump the minor version, nobody will use it for a year, or we put out multiple versions that go unused.
- For the Zip change, we should just do it.
- Kimball: I did run the ABI compliance checker, not 100% sure I’m running it correctly.
- Larry:
- For Imath, is this more complex than we need?
- Something like: put the core Imath classes in an unversioned namespace; the only thing that really matters is the memory layout, which will never change; the operations may change.
- We’re very close to being a header-only library.
- The so name and the namespace should be the same, but they shouldn’t be the release number.