Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Aug 2007 11:44:43 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Daniel Eischen <deischen@freebsd.org>
Cc:        src-committers@freebsd.org, peterjeremy@optushome.com.au, yar@comp.chem.msu.su, alfred@freebsd.org, cvs-all@freebsd.org, cvs-src@freebsd.org, "M. Warner Losh" <imp@bsdimp.com>
Subject:   Re: cvs commit: src/lib/libc/gen fts-compat.c fts-compat.h
Message-ID:  <200708281144.45019.jhb@freebsd.org>
In-Reply-To: <Pine.GSO.4.64.0708280017490.1357@sea.ntplx.net>
References:  <Pine.GSO.4.64.0708271757570.28508@sea.ntplx.net> <20070827.204618.-1350500405.imp@bsdimp.com> <Pine.GSO.4.64.0708280017490.1357@sea.ntplx.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 28 August 2007 12:31:32 am Daniel Eischen wrote:
> On Mon, 27 Aug 2007, M. Warner Losh wrote:
> 
> > In message: <Pine.GSO.4.64.0708272127371.28508@sea.ntplx.net>
> >            Daniel Eischen <deischen@freebsd.org> writes:
> > : I think you're a little confused here.  CURRENT users did NOT have
> > : to rebuild ports when fts(3) or stdio(3) ABIs changed.  They
> > : would only have to rebuild if one of these ABIs changed _more
> > : than once between releases_.  That hasn't ever happened to my
> > : knowledge in the past, and it really shouldn't happen as long
> > : as things are tested and reviewed properly.
> >
> > One of the reasons that it hasn't happened before is that we forced
> > people who tried to make, or proposed making, such changes to make
> > them in a compatible sort of way.  We have all kinds of ugliness in
> > and around FILE to try, alas in vain, to be compatible.  One of the
> > reasons people would like to see symbol versioning is to make it
> > easier to change the size of different structures because we have
> > stood on our heads in the past to not change sizes.
> >
> > I'm concerned that the empirical evidence from the past might not be a
> > good thing to base our future plans upon.  We knew we had sucky tools
> > to deal with binary incompatibility in the past, so we stood on our
> > heads to not make too many binary incompatible changes.  With that
> > limitation gone, I think the likelihood is large we will see multiple
> > ABI changes between major releases on something.  Especially since it
> > happens when structures change size and there are many functions that
> > take pointers to multiple structures...
> 
> The emphasis should be on trying to get things right, tested, and
> reviewed the first time ;-)  But also to keep compat shims to a
> minimum too.  It may be easier to create different versions and
> keep compatibility, but the SV'd libraries are going to grow with
> compat shims if we don't try to reduce ABI changes like we've
> done in the past.  I think we need an ABI review board monitored
> by -standards ;-)
> 
> If you are really concerned about it (I'm not!), then you can
> always add another version in between releases, or just bump
> the version every time you break an ABI in -current.  I'm not
> advocating this because I don't think it's necessary.  I don't
> think you need to have both private and public versions in
> -current, just use 1.x and bump x for every ABI change.  -current
> will always have all versions 1.0 - 1.x, and prior branches
> will have some of them.  Whenever -current is branched, both
> the branch and -current will once again have all versions
> until the ABI in -current changes again.

See, I'd like to minimize the number of symbols in RELENG_x branches to 
actually be the symbols used only in prior RELENG_x branches as a way to cap 
the bloat some.  Things don't get always get done right in -HEAD on the first 
try, but the FBSD-current thing gives us a strategy to allow HEAD to be fluid 
to eventually get things right while not bloating RELENG_x branches with 
unneeded compat shims.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708281144.45019.jhb>