Re: C++11, 'throw', etc.
Deke Kincaid <[email protected]> Thu, 10 Aug 2017 12:41:30 -0700
| Newsgroups | gmane.comp.video.openexr.devel |
|---|---|
| Message-ID | <CAOOm49SNVRxK_Smw3Kd8v5Es0iQTQa_fFz74pNk-pdQ_FHMSgw@mail.gmail.com> |
--===============1339585430748400890== Content-Type: multipart/alternative; boundary="001a113cdbce51cfd805566b6304" --001a113cdbce51cfd805566b6304 Content-Type: text/plain; charset="UTF-8" Nuke 11, Maya 2017 and Houdini 16 or 16.5? (I forget which) are now C++11 I believe. I think a few applications are still a bit behind (rv, Mari, Katana) but there are plans for that to be rectified in the near-ish future. On Thu, Aug 10, 2017 at 11:52 AM, Piotr Stanczyk <[email protected]> wrote: > Sounds like a sensible plan to me. > > Anyone from ILM care to comment on this? Can you foresee any internal > build issues? > > Piotr > > On Thu, Aug 10, 2017 at 11:40 AM Larry Gritz <[email protected]> wrote: > >> 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 <= 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: >> >> Are there any vendors for whom this would cause an issue? Else, I would >> vote for moving things forward >> >> >> On 10 August 2017 at 10:18, Larry Gritz <[email protected]> wrote: >> >>> Ugh, so it's worse than I thought. >>> >>> I suppose I'm willing to fix and submit a patch to address this. >>> >>> 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? >>> >>> -- lg >>> >>> >>> On Aug 9, 2017, at 11:38 PM, Werner Benger <[email protected]> wrote: >>> >>> 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. >>> >>> Werner >>> >>> >>> 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: >>> >>> /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); >>> ^~~~~ >>> >>> 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. >>> >>> 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/] dictated C++11 for 2016 and >>> 2017, and will be C++14 for 2018. >>> >>> -- lg >>> >>> -- >>> Larry Gritz >>> [email protected] >>> >>> >>> >>> >>> >>> _______________________________________________ >>> Openexr-devel mailing list >>> [email protected] >>> https://lists.nongnu.org/mailman/listinfo/openexr-devel >>> >>> >>> -- >>> ____________________________________________________________ >>> _______________ >>> 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 <(225)%20578-4809> Fax.: +1 >>> 225 578-5362 <(225)%20578-5362> >>> >>> >>> _______________________________________________ >>> Openexr-devel mailing list >>> [email protected] >>> https://lists.nongnu.org/mailman/listinfo/openexr-devel >>> >>> >>> -- >>> Larry Gritz >>> [email protected] >>> >>> >>> >>> >>> >>> _______________________________________________ >>> Openexr-devel mailing list >>> [email protected] >>> https://lists.nongnu.org/mailman/listinfo/openexr-devel >>> >>> >> >> -- >> Larry Gritz >> [email protected] >> >> >> >> >> > _______________________________________________ > Openexr-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/openexr-devel > > --001a113cdbce51cfd805566b6304 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Nuke 11, Maya 2017 and Houdini 16 or 16.5? (I forget which= ) are now C++11 I believe.=C2=A0 I think a few applications are still a bit= behind (rv, Mari, Katana) but there are plans for that to be rectified in = the near-ish future.<br></div><div class=3D"gmail_extra"><br><div class=3D"= gmail_quote">On Thu, Aug 10, 2017 at 11:52 AM, Piotr Stanczyk <span dir=3D"= ltr"><<a href=3D"mailto:[email protected]" target=3D"_blank">piot= [email protected]</a>></span> wrote:<br><blockquote class=3D"gmail_qu= ote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex= "><div>Sounds like a sensible plan to me.=C2=A0</div><div><br></div><div>An= yone from ILM care to comment on this? Can you foresee any internal build i= ssues?</div><span class=3D"HOEnZb"><font color=3D"#888888"><div><br></div><= div>Piotr</div></font></span><div class=3D"HOEnZb"><div class=3D"h5"><div><= br><div class=3D"gmail_quote"><div>On Thu, Aug 10, 2017 at 11:40 AM Larry G= ritz <<a href=3D"mailto:[email protected]" target=3D"_blank">lg@larrygri= tz.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m= argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style=3D= "word-wrap:break-word">Any vendors that have bought into VFX Platform (Auto= desk, Foundry, SESI) should in theory have been on C++11 since last year (a= nd should be on board for C++14 for any products coming in 2018).<div><br><= /div><div>We're only talking about moving forward, so a stray downstrea= m product stuck on C++03 can keep using OpenEXR <=3D 2.2.</div><div><br>= </div><div>I'll give it a couple days to see if there are objections be= fore I do any of the actual work. But it will be cleaner and easier if we c= an just assume C++11 as a minimum.</div><div><br></div><div><span class=3D"= m_7517529850997932784m_-6079636075028917681Apple-tab-span" style=3D"white-s= pace:pre-wrap"> </span>-- lg</div><div><br><div></div></div></div><div styl= e=3D"word-wrap:break-word"><div><div><br><div><blockquote type=3D"cite"><di= v>On Aug 10, 2017, at 11:12 AM, Piotr Stanczyk <<a href=3D"mailto:piotr.= [email protected]" target=3D"_blank">[email protected]</a>> wrot= e:</div><br class=3D"m_7517529850997932784m_-6079636075028917681Apple-inter= change-newline"><div><div>Are there any vendors for whom this would cause a= n issue? Else, I would vote for moving things forward=C2=A0<div><br></div><= /div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On 10 August= 2017 at 10:18, Larry Gritz <span><<a href=3D"mailto:[email protected]" = target=3D"_blank">[email protected]</a>></span> wrote:<br><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p= adding-left:1ex"><div style=3D"word-wrap:break-word">Ugh, so it's worse= than I thought.<div><br></div><div>I suppose I'm willing to fix and su= bmit a patch to address this.</div><div><br></div><div>Do I need to put in = the proper macros to make it compile on everything from C++03 through 17? D= oes anybody want to argue for continuing to maintain C++03 compatibility fo= r future OpenEXR releases, or is it finally time (six years after the C++ s= tandard and 2+ years after VFXPlatform) to raise the floor to C++11?</div><= div><br></div><div><span class=3D"m_7517529850997932784m_-60796360750289176= 81m_6758675243403444048Apple-tab-span" style=3D"white-space:pre-wrap"> </sp= an>-- lg</div><div><br></div><div><div><div class=3D"m_7517529850997932784m= _-6079636075028917681h5"><br><div><blockquote type=3D"cite"><div>On Aug 9, = 2017, at 11:38 PM, Werner Benger <<a href=3D"mailto:[email protected]" = target=3D"_blank">[email protected]</a>> wrote:</div><br class=3D"m_751= 7529850997932784m_-6079636075028917681m_6758675243403444048Apple-interchang= e-newline"><div><div>It should be noted that dynamic expressions are actual= ly 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 i= t 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.=C2= =A0 Major C++ libraries such as QT are using C++11 nowadays, so it seems pr= etty safe to go beyond C++03 for modern applications, a lot of things are i= ndeed much easier.<br><br> =C2=A0=C2=A0=C2=A0=C2=A0Werner<br><br><br>On 10.= 08.2017 00:20, Larry Gritz wrote:<br><blockquote type=3D"cite">In a test co= mpile with gcc 7, I get lots of errors of the following ilk:<br><br>/home/t= ravis/build/lgritz/<wbr>openexr/IlmBase/Imath/<wbr>ImathVec.h:228:34: warni= ng: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]= <br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0const Vec2 & normalizeExc () throw (= IEX_NAMESPACE::MathExc);<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0<wbr>=C2=A0=C2= =A0=C2=A0=C2=A0^~~~~<br><br>I can disable this particular warning, of cours= e, but it's worth noting that the OpenEXR code base is not C++11 compli= ant. But in addition to using some C++03 idioms that are deprecated in C++1= 1, perhaps more importantly, the code is not taking advantage of new featur= es such as move semantics, constexpr, nothrow, and others. For the Imath cl= asses especially, using some of these may actually confer a performance ben= efit.<br><br>I feel kind of bad pointing this out while not really having t= he time at the moment to code up and submit an actual patch myself, but I t= hought I'd at least open the topic and see where the community stands o= n the issue of how and when to upgrade to C++11 and if it's important f= or 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">http://www.vfxplatform.com/</a>] dictated C++11 for 2016 and 2017, = and will be C++14 for 2018.<br><br><span class=3D"m_7517529850997932784m_-6= 079636075028917681m_6758675243403444048Apple-tab-span" style=3D"white-space= :pre-wrap"> </span>-- lg<br><br>--<br>Larry Gritz<br><a href=3D"mailto:lg@l= arrygritz.com" target=3D"_blank">[email protected]</a><br><br><br><br><br><= br>______________________________<wbr>_________________<br>Openexr-devel ma= iling list<br><a href=3D"mailto:[email protected]" target=3D"_blank"= >[email protected]</a><br><a href=3D"https://lists.nongnu.org/mailma= n/listinfo/openexr-devel" target=3D"_blank">https://lists.nongnu.org/<wbr>m= ailman/listinfo/openexr-devel</a><br></blockquote><br>-- <br>______________= ________________<wbr>______________________________<wbr>_______________<br>= Dr. Werner Benger =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Visualization Research<br>Center for Compu= tation & Technology at Louisiana State University (CCT/LSU)<br>2019 =C2= =A0Digital Media Center, Baton Rouge, Louisiana 70803<br>Tel.: <a href=3D"t= el:(225)%20578-4809" value=3D"+12255784809" target=3D"_blank">+1 225 578 48= 09</a> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Fax= .: <a href=3D"tel:(225)%20578-5362" value=3D"+12255785362" target=3D"_blank= ">+1 225 578-5362</a><br><br><br>______________________________<wbr>_______= __________<br>Openexr-devel mailing list<br><a href=3D"mailto:Openexr-devel= @nongnu.org" target=3D"_blank">[email protected]</a><br><a href=3D"h= ttps://lists.nongnu.org/mailman/listinfo/openexr-devel" target=3D"_blank">h= ttps://lists.nongnu.org/<wbr>mailman/listinfo/openexr-devel</a><br></div></= div></blockquote></div><br></div></div><div> <div style=3D"word-wrap:break-word"><div style=3D"font-family:Helvetica;fon= t-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;l= etter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;w= hite-space:normal;word-spacing:0px">--</div><div style=3D"font-family:Helve= tica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:= normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transfor= m:none;white-space:normal;word-spacing:0px">Larry Gritz</div><div style=3D"= font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:no= rmal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:= 0px;text-transform:none;white-space:normal;word-spacing:0px"><a href=3D"mai= lto:[email protected]" target=3D"_blank">[email protected]</a></div><div st= yle=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"><br></d= iv><br class=3D"m_7517529850997932784m_-6079636075028917681m_67586752434034= 44048Apple-interchange-newline"></div><br class=3D"m_7517529850997932784m_-= 6079636075028917681m_6758675243403444048Apple-interchange-newline"> </div> <br></div></div><br>______________________________<wbr>_________________<br= > Openexr-devel mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">Openexr-devel= @nongnu.org</a><br> <a href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-devel" rel=3D"= noreferrer" target=3D"_blank">https://lists.nongnu.org/<wbr>mailman/listinf= o/openexr-devel</a><br> <br></blockquote></div><br></div> </div></blockquote></div><br></div></div></div><div style=3D"word-wrap:brea= k-word"><div><div><div> <div style=3D"word-wrap:break-word"><div style=3D"color:rgb(0,0,0);font-fam= ily:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;fon= t-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text= -transform:none;white-space:normal;word-spacing:0px">--</div><div style=3D"= color:rgb(0,0,0);font-family:Helvetica;font-size:14px;font-style:normal;fon= t-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:s= tart;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0p= x">Larry Gritz</div><div style=3D"color:rgb(0,0,0);font-family:Helvetica;fo= nt-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"><a href=3D"mailto:[email protected]" t= arget=3D"_blank">[email protected]</a></div><div style=3D"color:rgb(0,0,0);= font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:no= rmal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:= 0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><br = class=3D"m_7517529850997932784m_-6079636075028917681Apple-interchange-newli= ne"></div><br class=3D"m_7517529850997932784m_-6079636075028917681Apple-int= erchange-newline"> </div> <br></div></div></div></blockquote></div></div> </div></div><br>______________________________<wbr>_________________<br> Openexr-devel mailing list<br> <a href=3D"mailto:[email protected]">[email protected]</a><br= > <a href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-devel" rel=3D"= noreferrer" target=3D"_blank">https://lists.nongnu.org/<wbr>mailman/listinf= o/openexr-devel</a><br> <br></blockquote></div><br></div> --001a113cdbce51cfd805566b6304-- --===============1339585430748400890== 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 --===============1339585430748400890==--