[LLVMdev] [cfe-dev] RFC: A proposal to move toward using C++11 features in LLVM & Clang / bounding support for old host compilers
dag at cray.com
dag at cray.com
Wed Nov 6 11:02:19 PST 2013
Renato Golin <renato.golin at linaro.org> writes:
> I think there are two main problems here:
> 1. People use trunk on side-projects because releases mean very little
> in LLVM world
> 2. We start adding new stuff as soon as a release is branched, and
> that reduces warnings up to a few days
>
> We're all talking about problem 2, when in fact, I think the problem
> is in 1.
I've been saying that for years.
> I personally don't think it's feasible to base a product/project on a
> moving target. You already have your code that is moving, having its
> base moving too is asking for trouble. This is the same as upgrading
> the GCC from 4.8 to 4.9 when it comes out on a major distro just
> because it's shiny.
>
> Why do we do it, then? Because LLVM releases mean very little, and the
> only meaningful branch is trunk. This, for me, is the real problem.
Totally agree.
> However, Tim's position is important to consider: we've been talking
> about this for a long while, but because no one actually set the date,
> packagers and side projects just ignored as a problem 'to deal later,
> when it really happens'. So, as much as I understand the work that
> needs to be done by the side projects, there has been a lot of warning
> for almost a year (if not more).
Except that there hasn't been warning at all. The only "warning" is
that "we're going to upgrade to some new toolchain." We need to know
*exactly* which toolchain that is so we can test all of our software
against it. "4.7.x" doesn't help because every point release has new
bugs, new warnings, new errors, etc.
> If we end up with a decent release policy (for backports, bugfixes,
> critical performance improvements), side projects and distributions
> would be able to use that as a base and let trunk be wild and crazy,
> as it's meant to be.
I would love to see that happen.
BUT, right now working off a release is painful because of the
integration cost of upgrading to a new release. APIs totally change,
new bugs have to be tracked down, performance regressions fixed, etc.
Integrating our changes is a lot of work but it's not the only hard
part. Dealing with all of the upstream changes at once is a massive
undertaking.
Now that we at least have git mirrors I can manage our custom changes
mostly mechanically (it would be easier if git were the official tool).
But I need manual intervention for handle everything else. That's very
costly.
When I've explained this in the past, the answer was always, "work off
trunk so the changes are gradual." I have sympathy for that view. But
that view is based on the assumption that LLVM doesn't have at least API
backward compatibility. LLVM is a mature product and I don't think it
has that luxury anymore. In addition to backports to releases, we need
a process to deprecate APIs if we're going to tell people to work off
releases.
-David
More information about the llvm-dev
mailing list