Re: C++11, 'throw', etc.

Larry Gritz <[email protected]> Thu, 10 Aug 2017 11:40:29 -0700
Newsgroups gmane.comp.video.openexr.devel
Message-ID <[email protected]>
--===============1721313085173227730==
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_3D616A72-DEDE-4CBF-AF5C-5CD1193DFF88"


--Apple-Mail=_3D616A72-DEDE-4CBF-AF5C-5CD1193DFF88
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Any vendors that have bought into VFX Platform (Autodesk, Foundry, SESI) =
should in theory have been on C++11 since last year (and should be on =
board for C++14 for any products coming in 2018).

We're only talking about moving forward, so a stray downstream product =
stuck on C++03 can keep using OpenEXR <=3D 2.2.

I'll give it a couple days to see if there are objections before I do =
any of the actual work. But it will be cleaner and easier if we can just =
assume C++11 as a minimum.

	-- lg


> On Aug 10, 2017, at 11:12 AM, Piotr Stanczyk =
<[email protected]> wrote:
>=20
> Are there any vendors for whom this would cause an issue? Else, I =
would vote for moving things forward=20
>=20
>=20
> On 10 August 2017 at 10:18, Larry Gritz <[email protected] =
<mailto:[email protected]>> wrote:
> Ugh, so it's worse than I thought.
>=20
> I suppose I'm willing to fix and submit a patch to address this.
>=20
> Do I need to put in the proper macros to make it compile on everything =
from C++03 through 17? Does anybody want to argue for continuing to =
maintain C++03 compatibility for future OpenEXR releases, or is it =
finally time (six years after the C++ standard and 2+ years after =
VFXPlatform) to raise the floor to C++11?
>=20
> 	-- lg
>=20
>=20
>> On Aug 9, 2017, at 11:38 PM, Werner Benger <[email protected] =
<mailto:[email protected]>> wrote:
>>=20
>> It should be noted that dynamic expressions are actually forbidden in =
C++17, so OpenEXR does no longer compile with GCC 7.1 when std C++17 is =
enabled. The highest C++ version that can be used to compile it is =
C++14, where it's still just a warning, while in C++17 it's an error. It =
would be good to have OpenEXR at least compilable in C++17.  Major C++ =
libraries such as QT are using C++11 nowadays, so it seems pretty safe =
to go beyond C++03 for modern applications, a lot of things are indeed =
much easier.
>>=20
>>     Werner
>>=20
>>=20
>> On 10.08.2017 00:20, Larry Gritz wrote:
>>> In a test compile with gcc 7, I get lots of errors of the following =
ilk:
>>>=20
>>> /home/travis/build/lgritz/openexr/IlmBase/Imath/ImathVec.h:228:34: =
warning: dynamic exception specifications are deprecated in C++11 =
[-Wdeprecated]
>>>      const Vec2 & normalizeExc () throw (IEX_NAMESPACE::MathExc);
>>>                                   ^~~~~
>>>=20
>>> I can disable this particular warning, of course, but it's worth =
noting that the OpenEXR code base is not C++11 compliant. But in =
addition to using some C++03 idioms that are deprecated in C++11, =
perhaps more importantly, the code is not taking advantage of new =
features such as move semantics, constexpr, nothrow, and others. For the =
Imath classes especially, using some of these may actually confer a =
performance benefit.
>>>=20
>>> I feel kind of bad pointing this out while not really having the =
time at the moment to code up and submit an actual patch myself, but I =
thought I'd at least open the topic and see where the community stands =
on the issue of how and when to upgrade to C++11 and if it's important =
for modern OpenEXR to continue to support C++03. For point of reference, =
the VFX Reference Platform [http://www.vfxplatform.com/ =
<http://www.vfxplatform.com/>] dictated C++11 for 2016 and 2017, and =
will be C++14 for 2018.
>>>=20
>>> 	-- lg
>>>=20
>>> --
>>> Larry Gritz
>>> [email protected] <mailto:[email protected]>
>>>=20
>>>=20
>>>=20
>>>=20
>>>=20
>>> _______________________________________________
>>> Openexr-devel mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.nongnu.org/mailman/listinfo/openexr-devel =
<https://lists.nongnu.org/mailman/listinfo/openexr-devel>
>>=20
>> --=20
>> =
__________________________________________________________________________=
_
>> Dr. Werner Benger                Visualization Research
>> Center for Computation & Technology at Louisiana State University =
(CCT/LSU)
>> 2019  Digital Media Center, Baton Rouge, Louisiana 70803
>> Tel.: +1 225 578 4809 <tel:(225)%20578-4809>                        =
Fax.: +1 225 578-5362 <tel:(225)%20578-5362>
>>=20
>>=20
>> _______________________________________________
>> Openexr-devel mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.nongnu.org/mailman/listinfo/openexr-devel =
<https://lists.nongnu.org/mailman/listinfo/openexr-devel>
>=20
> --
> Larry Gritz
> [email protected] <mailto:[email protected]>
>=20
>=20
>=20
>=20
>=20
> _______________________________________________
> Openexr-devel mailing list
> [email protected] <mailto:[email protected]>
> https://lists.nongnu.org/mailman/listinfo/openexr-devel =
<https://lists.nongnu.org/mailman/listinfo/openexr-devel>
>=20
>=20

--
Larry Gritz
[email protected]





--Apple-Mail=_3D616A72-DEDE-4CBF-AF5C-5CD1193DFF88
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Any vendors that have bought into VFX Platform (Autodesk, =
Foundry, SESI) should in theory have been on C++11 since last year (and =
should be on board for C++14 for any products coming in 2018).<div =
class=3D""><br class=3D""></div><div class=3D"">We're only talking about =
moving forward, so a stray downstream product stuck on C++03 can keep =
using OpenEXR &lt;=3D 2.2.</div><div class=3D""><br class=3D""></div><div =
class=3D"">I'll give it a couple days to see if there are objections =
before I do any of the actual work. But it will be cleaner and easier if =
we can just assume C++11 as a minimum.</div><div class=3D""><br =
class=3D""></div><div class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-- lg</div><div class=3D""><br =
class=3D""><div class=3D""><br class=3D""><div><blockquote type=3D"cite" =
class=3D""><div class=3D"">On Aug 10, 2017, at 11:12 AM, Piotr Stanczyk =
&lt;<a href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div dir=3D"ltr" =
class=3D"">Are there any vendors for whom this would cause an issue? =
Else, I would vote for moving things forward&nbsp;<div class=3D""><br =
class=3D""></div></div><div class=3D"gmail_extra"><br class=3D""><div =
class=3D"gmail_quote">On 10 August 2017 at 10:18, Larry Gritz <span =
dir=3D"ltr" class=3D"">&lt;<a href=3D"mailto:[email protected]" =
target=3D"_blank" class=3D"">[email protected]</a>&gt;</span> wrote:<br =
class=3D""><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 =
.8ex;border-left:1px #ccc solid;padding-left:1ex"><div =
style=3D"word-wrap:break-word" class=3D"">Ugh, so it's worse than I =
thought.<div class=3D""><br class=3D""></div><div class=3D"">I suppose =
I'm willing to fix and submit a patch to address this.</div><div =
class=3D""><br class=3D""></div><div class=3D"">Do I need to put in the =
proper macros to make it compile on everything from C++03 through 17? =
Does anybody want to argue for continuing to maintain C++03 =
compatibility for future OpenEXR releases, or is it finally time (six =
years after the C++ standard and 2+ years after VFXPlatform) to raise =
the floor to C++11?</div><div class=3D""><br class=3D""></div><div =
class=3D""><span class=3D"m_6758675243403444048Apple-tab-span" =
style=3D"white-space:pre-wrap">	</span>-- lg</div><div class=3D""><br =
class=3D""></div><div class=3D""><div class=3D""><div class=3D"h5"><br =
class=3D""><div class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">On Aug 9, 2017, at 11:38 PM, Werner Benger &lt;<a =
href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a>&gt; wrote:</div><br =
class=3D"m_6758675243403444048Apple-interchange-newline"><div =
class=3D""><div class=3D"">It should be noted that dynamic expressions =
are actually forbidden in C++17, so OpenEXR does no longer compile with =
GCC 7.1 when std C++17 is enabled. The highest C++ version that can be =
used to compile it is C++14, where it's still just a warning, while in =
C++17 it's an error. It would be good to have OpenEXR at least =
compilable in C++17.&nbsp; Major C++ libraries such as QT are using =
C++11 nowadays, so it seems pretty safe to go beyond C++03 for modern =
applications, a lot of things are indeed much easier.<br class=3D""><br =
class=3D""> &nbsp;&nbsp;&nbsp;&nbsp;Werner<br class=3D""><br =
class=3D""><br class=3D"">On 10.08.2017 00:20, Larry Gritz wrote:<br =
class=3D""><blockquote type=3D"cite" class=3D"">In a test compile with =
gcc 7, I get lots of errors of the following ilk:<br class=3D""><br =
class=3D"">/home/travis/build/lgritz/<wbr =
class=3D"">openexr/IlmBase/Imath/<wbr class=3D"">ImathVec.h:228:34: =
warning: dynamic exception specifications are deprecated in C++11 =
[-Wdeprecated]<br class=3D""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const Vec2 =
&amp; normalizeExc () throw (IEX_NAMESPACE::MathExc);<br class=3D""> =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<wbr =
class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;^~~~~<br class=3D""><br class=3D"">I =
can disable this particular warning, of course, but it's worth noting =
that the OpenEXR code base is not C++11 compliant. But in addition to =
using some C++03 idioms that are deprecated in C++11, perhaps more =
importantly, the code is not taking advantage of new features such as =
move semantics, constexpr, nothrow, and others. For the Imath classes =
especially, using some of these may actually confer a performance =
benefit.<br class=3D""><br class=3D"">I feel kind of bad pointing this =
out while not really having the time at the moment to code up and submit =
an actual patch myself, but I thought I'd at least open the topic and =
see where the community stands on the issue of how and when to upgrade =
to C++11 and if it's important for modern OpenEXR to continue to support =
C++03. For point of reference, the VFX Reference Platform [<a =
href=3D"http://www.vfxplatform.com/" target=3D"_blank" =
class=3D"">http://www.vfxplatform.com/</a>] dictated C++11 for 2016 and =
2017, and will be C++14 for 2018.<br class=3D""><br class=3D""><span =
class=3D"m_6758675243403444048Apple-tab-span" =
style=3D"white-space:pre-wrap">	</span>-- lg<br class=3D""><br =
class=3D"">--<br class=3D"">Larry Gritz<br class=3D""><a =
href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a><br class=3D""><br class=3D""><br =
class=3D""><br class=3D""><br class=3D""><br =
class=3D"">______________________________<wbr =
class=3D"">_________________<br class=3D"">Openexr-devel mailing list<br =
class=3D""><a href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a><br class=3D""><a =
href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-devel" =
target=3D"_blank" class=3D"">https://lists.nongnu.org/<wbr =
class=3D"">mailman/listinfo/openexr-devel</a><br =
class=3D""></blockquote><br class=3D"">-- <br =
class=3D"">______________________________<wbr =
class=3D"">______________________________<wbr =
class=3D"">_______________<br class=3D"">Dr. Werner Benger =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;Visualization Research<br class=3D"">Center for =
Computation &amp; Technology at Louisiana State University (CCT/LSU)<br =
class=3D"">2019 &nbsp;Digital Media Center, Baton Rouge, Louisiana =
70803<br class=3D"">Tel.: <a href=3D"tel:(225)%20578-4809" =
value=3D"+12255784809" target=3D"_blank" class=3D"">+1 225 578 4809</a> =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fax.: <a =
href=3D"tel:(225)%20578-5362" value=3D"+12255785362" target=3D"_blank" =
class=3D"">+1 225 578-5362</a><br class=3D""><br class=3D""><br =
class=3D"">______________________________<wbr =
class=3D"">_________________<br class=3D"">Openexr-devel mailing list<br =
class=3D""><a href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a><br class=3D""><a =
href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-devel" =
target=3D"_blank" class=3D"">https://lists.nongnu.org/<wbr =
class=3D"">mailman/listinfo/openexr-devel</a><br =
class=3D""></div></div></blockquote></div><br class=3D""></div></div><div =
class=3D"">
<div style=3D"word-wrap:break-word" class=3D""><div style=3D"font-family: =
Helvetica; font-size: 14px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px;" class=3D"">--</div><div style=3D"font-family: =
Helvetica; font-size: 14px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px;" class=3D"">Larry Gritz</div><div style=3D"font-family:=
 Helvetica; font-size: 14px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px;" class=3D""><a href=3D"mailto:[email protected]" =
target=3D"_blank" class=3D"">[email protected]</a></div><div =
style=3D"font-family: Helvetica; font-size: 14px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px;" class=3D""><br class=3D""></div><br =
class=3D"m_6758675243403444048Apple-interchange-newline"></div><br =
class=3D"m_6758675243403444048Apple-interchange-newline">
</div>
<br class=3D""></div></div><br =
class=3D"">______________________________<wbr =
class=3D"">_________________<br class=3D"">
Openexr-devel mailing list<br class=3D"">
<a href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a><br class=3D"">
<a href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-devel" =
rel=3D"noreferrer" target=3D"_blank" =
class=3D"">https://lists.nongnu.org/<wbr =
class=3D"">mailman/listinfo/openexr-devel</a><br class=3D"">
<br class=3D""></blockquote></div><br class=3D""></div>
</div></blockquote></div><br class=3D""><div class=3D"">
<div style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space;" class=3D""><div style=3D"color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: =
0px;">--</div><div style=3D"color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 14px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;">Larry =
Gritz</div><div style=3D"color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 14px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;"><a =
href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a></div><div style=3D"color: rgb(0, 0, 0); =
font-family: Helvetica; font-size: 14px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><br=
 class=3D""></div><br class=3D"Apple-interchange-newline"></div><br =
class=3D"Apple-interchange-newline">
</div>
<br class=3D""></div></div></body></html>=

--Apple-Mail=_3D616A72-DEDE-4CBF-AF5C-5CD1193DFF88--


--===============1721313085173227730==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Openexr-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/openexr-devel

--===============1721313085173227730==--