<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Apr 19, 2016, at 11:33 AM, Konstantin Tokarev &lt;<a href="mailto:annulen@yandex.ru" class="">annulen@yandex.ru</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">19.04.2016, 21:15, "Filip Pizlo" &lt;</span><a href="mailto:fpizlo@apple.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">fpizlo@apple.com</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">&gt;:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">I did a quick look over the trac query of GCC 4.8 changes that you provided. None of the ones I looked at were scary but they were annoying. They seemed to be things like:<br class=""><br class="">- Sometimes saying { } to initialize a variable doesn’t work.<br class="">- Sometimes you need to say “const”.<br class="">- Sometimes you need to play with variables to get around internal compiler errors.<br class=""><br class="">I didn’t find any cases of GCC 4.8 not supporting a language feature that we want to use. Do you think that’s correct?<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">According to [1], GCC provides complete C++11 feature list since 4.8.1. However, it fails to compile FTLLazySlowPathCall.h, see complete set of diagnostics in [2].</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div><div>Ouch! &nbsp;Is there a bug for this?</div><div><br class=""></div><div>-Filip</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">There is another minor bug: 4.8 does not allow aggregate initialization for structs which have deleted constructors [3].</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">[1]<span class="Apple-converted-space">&nbsp;</span></span><a href="https://gcc.gnu.org/projects/cxx-status.html#cxx11" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://gcc.gnu.org/projects/cxx-status.html#cxx11</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">[2]<span class="Apple-converted-space">&nbsp;</span></span><a href="http://pastebin.com/ikyDTZ9s" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://pastebin.com/ikyDTZ9s</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">[3]<span class="Apple-converted-space">&nbsp;</span></span><a href="https://bugs.webkit.org/show_bug.cgi?id=155698" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://bugs.webkit.org/show_bug.cgi?id=155698</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">&nbsp;&nbsp;&nbsp;</span><a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52707" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52707</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">-Filip<br class=""><br class=""><blockquote type="cite" class="">&nbsp;On Apr 19, 2016, at 11:02 AM, Michael Catanzaro &lt;<a href="mailto:mcatanzaro@igalia.com" class="">mcatanzaro@igalia.com</a>&gt; wrote:<br class=""><br class="">&nbsp;Hi,<br class=""><br class="">&nbsp;On Mon, 2016-04-18 at 17:27 -0700, Filip Pizlo wrote:<br class=""><blockquote type="cite" class="">&nbsp;I am sympathetic to the principle that we should support the<br class="">&nbsp;compilers that ship on the most popular versions of Linux.<br class=""></blockquote><br class="">&nbsp;Great. :)<br class=""><br class=""><blockquote type="cite" class="">&nbsp;I’d like to understand if that argument is sufficient to support GCC<br class="">&nbsp;4.8.<br class=""><br class="">&nbsp;Can you clarify, is it the case that if I installed the latest stable<br class="">&nbsp;Fedora, I’d get GCC 4.8?<br class=""></blockquote><br class="">&nbsp;No, all currently-supported versions of Fedora include GCC 5 (only).<br class="">&nbsp;Different distros have very different release cycles and policies for<br class="">&nbsp;compiler upgrades. Fedora releases roughly every six months, and each<br class="">&nbsp;release is supported for roughly 13 months. GCC releases once per year.<br class="">&nbsp;The GCC developers coordinate with Fedora release planning to time GCC<br class="">&nbsp;releases to coincide with spring Fedora releases; in the winter before<br class="">&nbsp;a new GCC release, we rebuilt all of Fedora with the GCC beta so the<br class="">&nbsp;GCC developers can collect bug reports. So we will never have issues<br class="">&nbsp;with Fedora, as the oldest Fedora will be at most one year behind<br class="">&nbsp;upstream GCC. (Note that I co-maintain the WebKitGTK+ package there and<br class="">&nbsp;I'm making sure all supported Fedoras get updates.)<br class=""><br class="">&nbsp;But Fedora is exceptional in this regard. Other distros are supported<br class="">&nbsp;for much longer than 13 months (5 years for Ubuntu LTS and newly also<br class="">&nbsp;for Debian, 10 years for enterprise distros) and therefore have much<br class="">&nbsp;older compilers. The question is where do we draw the line. We<br class="">&nbsp;obviously cannot support a 10 year old distro; those are maintained by<br class="">&nbsp;rich corporations, and if they cared about WebKit security, they could<br class="">&nbsp;take responsibility for that. We could handle 5 years, but do we really<br class="">&nbsp;want to? (It's clear Apple doesn't.) It's really inconvenient to not<br class="">&nbsp;have access to newer dependencies or language features for so long. We<br class="">&nbsp;might start by saying that we only support the latest release of [list<br class="">&nbsp;of major distros that have recently been shipping WebKit updates]. Most<br class="">&nbsp;of these distros are currently built using GCC 4.9, though they might<br class="">&nbsp;have GCC 5 or GCC 6 packaged as well, but not used by default. The big<br class="">&nbsp;one still using GCC 4.8 is openSUSE.<br class=""><br class="">&nbsp;We don't *need* to consider Ubuntu right now, because they rarely ever<br class="">&nbsp;take our updates, nor Debian, because they never take our updates. I<br class="">&nbsp;think WebKit updates for Debian is all but totally a lost cause, but<br class="">&nbsp;I'm kinda still hopeful for Ubuntu, so I'd like to keep them in mind.<br class=""><br class="">&nbsp;Also, different distros have different policies on using alternative<br class="">&nbsp;compilers. E.g. in Fedora we are usually required to always use<br class="">&nbsp;Fedora's GCC, and only one version is available at a time... but if a<br class="">&nbsp;package *really* has no chance of being built with GCC, we're allowed<br class="">&nbsp;to use Fedora's Clang instead. I'm not sure what the policies are for<br class="">&nbsp;Debian and Ubuntu, but they always have available a newer GCC than is<br class="">&nbsp;used for building packages, and until recently were using Clang to<br class="">&nbsp;build Chromium, so alternative compilers must be permitted at least in<br class="">&nbsp;exceptional cases. I was trying to convince the openSUSE folks to use<br class="">&nbsp;Clang to build WebKit, to avoid the GCC 4.8 issue, but they were not<br class="">&nbsp;enthusiastic. (But consider that all these distros will have older<br class="">&nbsp;versions of Clang as well.)<br class=""><br class="">&nbsp;Now, whether openSUSE is important enough on its own to justify holding<br class="">&nbsp;back or lowering our GCC requirement... maybe not. But anyway, since we<br class="">&nbsp;have significant contributors like Konstantin stuck with GCC 4.8, and<br class="">&nbsp;since this doesn't require giving up on any significant language<br class="">&nbsp;features, I think it's OK. If it's only a little work to support that<br class="">&nbsp;compiler (on the level we already have in trunk), I think it's a good<br class="">&nbsp;idea.<br class=""><br class="">&nbsp;But there is another problem here. openSUSE seems to have no intention<br class="">&nbsp;of upgrading to a newer GCC anytime soon, because they have started to<br class="">&nbsp;inherit core packages like GCC from the SUSE enterprise distro. So I<br class="">&nbsp;might need to negotiate with them if it would be possible to build<br class="">&nbsp;WebKit with clang after all.<br class=""><br class=""><blockquote type="cite" class="">&nbsp;Can you clarify what you mean by “backport”? I’m trying to get a<br class="">&nbsp;picture of how your releases work. For example, are you saying that<br class="">&nbsp;RHEL wouldn’t take a security update that you backported, or that<br class="">&nbsp;they won’t invest energy into backporting it themselves?<br class=""></blockquote><br class="">&nbsp;We don't try to convince distros to take individual security fixes as<br class="">&nbsp;patches, because there are way too many for that to be practical. We<br class="">&nbsp;want them to take our tarball updates.<br class=""><br class="">&nbsp;In that mail I was saying that RHEL won't invest energy into<br class="">&nbsp;backporting things themselves downstream; consider that we have about<br class="">&nbsp;100 security fixes per year, backporting from trunk needs to be handled<br class="">&nbsp;upstream so this can be shared among distros, rather than separately by<br class="">&nbsp;each distro that wants to provide WebKit updates. Our upstream<br class="">&nbsp;WebKitGTK+ releases work like this: every February and August, we<br class="">&nbsp;branch off of trunk; this forms a new stable branch, which gets<br class="">&nbsp;released in March/September. We then cherry-pick fixes to that branch<br class="">&nbsp;and make releases off of it for the next seven months or so. Our goal<br class="">&nbsp;is to convince distros to take these releases, because it's the only<br class="">&nbsp;practical way for them to get security updates. I've recently had some<br class="">&nbsp;mixed success with this; a couple big names like Mageia and openSUSE<br class="">&nbsp;recently started taking our updates.<br class=""><br class="">&nbsp;Some distros like Debian refuse to take any version upgrades at all,<br class="">&nbsp;and want to fix everything with downstream patches. Since that is not<br class="">&nbsp;practical for WebKit, they have adopted a policy of no security support<br class="">&nbsp;for WebKit. Ubuntu leans towards this as well, but occasionally they do<br class="">&nbsp;take our updates; I'm hoping that might become more common.<br class=""><br class="">&nbsp;(RHEL is a bit of a special case in that its old enough that all apps<br class="">&nbsp;in RHEL are using WebKit1, which we don't support anymore, so there's<br class="">&nbsp;no value in taking our updates.)<br class=""><br class=""><blockquote type="cite" class="">&nbsp;How many changes are required to make GCC 4.8 work? I think this<br class="">&nbsp;will provide important context for this discussion.<br class=""></blockquote><br class="">&nbsp;I guess it's working already and we only need to remove the build error<br class="">&nbsp;when it's detected, because Konstantin has been committing GCC 4.8<br class="">&nbsp;fixes throughout the tree:<br class=""><br class="">&nbsp;<a href="http://trac.webkit.org/search?q=4.8&amp;noquickjump=1&amp;changeset=on" class="">http://trac.webkit.org/search?q=4.8&amp;noquickjump=1&amp;changeset=on</a><br class=""><br class="">&nbsp;Anyway, I do not strongly request that we drop the GCC requirement to<br class="">&nbsp;GCC 4.8, though I think that would be fine; just please, we should keep<br class="">&nbsp;these issues in mind when upgrading our compiler requirement in the<br class="">&nbsp;future.<br class=""><br class="">&nbsp;Michael<br class=""></blockquote><br class="">_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class=""><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" class="">https://lists.webkit.org/mailman/listinfo/webkit-dev</a><br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">--<span class="Apple-converted-space">&nbsp;</span></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Regards,</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Konstantin</span></div></blockquote></div><br class=""></body></html>