LLVM 3.4 Branch Freeze

Breaking ABI in patch releases with no other changes?

As a Debian packager (but not LLVM packager), I am opposed to changing ABI
without bumping soversion and changing library name. If we have this:

LLVM 3.4.0 => libclang-3.4.so.1
LLVM 3.4.1 => libclang-3.4.so.1 (same)

but they are ABI-incompatible, that's going to cause trouble.

But if we have this:

LLVM 3.4.0 => libclang-3.4.so.1
LLVM 3.4.1 => libclang-3.4.so.2 (soname bumped)

that's perfectly fine

(I guess everybody here knew that already...)

From: "Pau Garcia i Quiles" <pgquiles@elpauer.org>
To: "Hal Finkel" <hfinkel@anl.gov>
Cc: "Tom Stellard" <tom@stellard.net>, "Óscar Fuentes" <ofv@wanadoo.es>, cfe-dev@cs.uiuc.edu, llvmdev@cs.uiuc.edu
Sent: Thursday, December 19, 2013 1:55:12 PM
Subject: Re: [LLVMdev] [cfe-dev] LLVM 3.4 Branch Freeze

> > > the other thing we need to determine is
> > > whether or not we want to maintain a stable ABI for the bugfix
> > > releases.
> > > With 3.3, the plan was to have a stable ABI, but this caused me
> > > to reject several fixes. I would recommend relaxing this
> > > requirement if there is are bugfix releases for 3.4, but I'd
> > > like to hear
> > > what other people think about this.
> >
> > What kinds of changes were made? (can you provide a couple of
> > examples)?
> >
>
> Here are a few examples:
> http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/157018

I think that we should keep source compatibility, not necessarily
binary compatibility, in maintenance releases. Binary compatibility,
when possible, is nice, but should not stand in the way of the bug
fixes themselves.

Some of the packagers should comment on this topic :slight_smile:

Breaking ABI in patch releases with no other changes?

As a Debian packager (but not LLVM packager), I am opposed to
changing ABI without bumping soversion and changing library name. If
we have this:

LLVM 3.4.0 => libclang-3.4.so.1
LLVM 3.4.1 => libclang-3.4.so.1 (same)

but they are ABI-incompatible, that's going to cause trouble.

But if we have this:

LLVM 3.4.0 => libclang-3.4.so.1
LLVM 3.4.1 => libclang-3.4.so.2 (soname bumped)

that's perfectly fine

(I guess everybody here knew that already...)

This is a good point. I had assumed that we'd bump the soname for the maintenance releases (leaving patch-level changes to the packagers/distributors), but we should have an explicit policy on that.

-Hal