[cfe-dev] [LLVMdev] RFC: A proposal to move toward using C++11 features in LLVM & Clang / bounding support for old host compilers

Tom Stellard tom at stellard.net
Wed Nov 6 11:38:27 PST 2013


On Wed, Nov 06, 2013 at 11:23:35AM -0800, Renato Golin wrote:
> On 6 November 2013 11:02, <dag at cray.com> wrote:
> 
> > 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.
> >
> 
> That's what I meant. ;)
> 
> 
> 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.
> >
> 
> So, here we have an even more serious problem. I can only see these options:
> 
> 1. Ignore releases, everyone works on trunk
>   - Changes are gradual
>   1.a No API changes
>     - No code breakage, we can use compilers as old as Stallman
>     - Every platform is covered
>     - The toolchain doesn't evolve
>   1.b. API changes between each release
>     - API changes under our feet, massive work all the time
>     - Many API changes can happen at the same time
>     - Warning time can be as little as one day
>     - The toolchain evolves with time
> 
> 2. Use stable releases, only core developers work on trunk
>   - Changes are big, infrequent
>   2.a No API changes
>     - No code breakage, we can use compilers as old as Stallman
>     - Every platform is covered
>     - The toolchain doesn't evolve
>   2.b API changes between each release
>     - API changes only after *at least* six months notice
>     - Massive work to move code, but only twice a year
>     - The toolchain evolves with time
> 
> In a nutshell, if we want the toolchain to evolve with time, we'll need to
> have API changes, and we'll need to update surrounding software to cope
> with that. The only difference is if we want to be doing this as our
> day-to-day job, or twice a year (or even less than that if you stay on a
> release for a while longer). I personally think that it's more manageable
> to do that on releases than on trunk (been there, done that, and it sucks).
> 
> All projects that depend on GCC do that on a release basis (including
> kernels, distros, etc) and they have a massive undertaking on each release
> of the toolchain. That includes new errors, new libraries, new options. In
> your case it's a little worse, because it'll also change the compiler
> you'll have to use on *your* project, and that's not something GCC users
> are used to, but it has to happen one day or another.
> 
> Given that this is a special case (warnings have been only hints on the
> mailing list, it'll change your compiler, we may want to move to releases),
> I think we should wait until everyone is on the same page regarding all
> these issues. It's already too late to have a BOF at the US meeting, but we
> could gather around during the hacking session today (or via IRC) and try
> to come up with a plan.
> 

I would be interested in discussing this at the hacking session.

-Tom



More information about the cfe-dev mailing list