From owner-cvs-src@FreeBSD.ORG Tue Aug 28 08:44:00 2007 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 30A2216A41B; Tue, 28 Aug 2007 08:44:00 +0000 (UTC) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (comp.chem.msu.su [158.250.32.97]) by mx1.freebsd.org (Postfix) with ESMTP id 5D2AD13C461; Tue, 28 Aug 2007 08:43:58 +0000 (UTC) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (localhost [127.0.0.1]) by comp.chem.msu.su (8.13.4/8.13.4) with ESMTP id l7S8hYqQ091009; Tue, 28 Aug 2007 12:43:34 +0400 (MSD) (envelope-from yar@comp.chem.msu.su) Received: (from yar@localhost) by comp.chem.msu.su (8.13.4/8.13.4/Submit) id l7S8hX5Q091007; Tue, 28 Aug 2007 12:43:34 +0400 (MSD) (envelope-from yar) Date: Tue, 28 Aug 2007 12:43:33 +0400 From: Yar Tikhiy To: "M. Warner Losh" Message-ID: <20070828084333.GY21352@comp.chem.msu.su> References: <20070828004842.GT21352@comp.chem.msu.su> <20070828023857.GW21352@comp.chem.msu.su> <20070827.214731.635732686.imp@bsdimp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070827.214731.635732686.imp@bsdimp.com> User-Agent: Mutt/1.5.9i Cc: src-committers@freebsd.org, jhb@freebsd.org, peterjeremy@optushome.com.au, alfred@freebsd.org, cvs-all@freebsd.org, deischen@freebsd.org, cvs-src@freebsd.org Subject: Re: cvs commit: src/lib/libc/gen fts-compat.c fts-compat.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Aug 2007 08:44:00 -0000 On Mon, Aug 27, 2007 at 09:47:31PM -0600, M. Warner Losh wrote: > In message: <20070828023857.GW21352@comp.chem.msu.su> > Yar Tikhiy writes: > : On Mon, Aug 27, 2007 at 09:30:48PM -0400, Daniel Eischen wrote: > : > On Tue, 28 Aug 2007, Yar Tikhiy wrote: > : > > > : > >Example: Assume we released 7.0-R with all symbols at FBSD_1.0. > : > >Before the 8.0 release cycle starts, struct FTS and struct FILE > : > >change, perhaps a few times each, thus affecting the fts(3) and > : > >stdio(3) global symbols. At the very first change to a symbol or > : > >their group, its 7.0-R variant is preserved at FBSD_1.0 and its > : > >default version becomes FBSD_1.1. Later changes to the current > : > >variant of that symbol don't affect its version. Consequently, > : > >8.0-R is released with the new fts(3) and stdio(3) symbols at > : > >FBSD_1.1, their 7.0-R variants at FBSD_1.0, and the rest of symbols > : > >still at FBSD_1.0 because they are unchanged. Let's note that > : > >CURRENT users had to rebuild ports depending on fts(3) or stdio(3) > : > >_each time_ an ABI component changed. > : > > : > 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. > : > : Oh, indeed! If a user builds an ABI-dependent port before the > : change, the port will record dependence on say fwrite@FBSD_1.0. In > : our example, the default version of fwrite() and friends will change > : to FBSD_1.1 later, after 7.0-RELEASE is out, but fwrite@FBSD_1.0 > : will also stay as a compatibility version because it appeared in > : the previous release. Moreover, the port will still work even if > : the ABI component changes once more after 8.0-RELEASE and proceeds > : to FBSD_1.2, because fwrite@FBSD_1.0 will be there. Similarly, a > : port built between 7.0-R and 8.0-R will work after the 2nd change > : as fwrite@FBSD_1.1 will be there, too. > : > : I can't but remark that this is not a natural effect of symbol > : versioning, but a consequence from the following policy: > : > : - At most one new version is introduced between major releases. > : - Symbol modifications during the period are assigned to the new version. > : - There is exactly one change per symbol per version. > : - All old symbol versions created so far are preserved. > : > : Now we have at least one policy with known behavior. :-) > > Or rather, isn't this just the consequences of the way the script that > generates things works? AFAIK, no. The script isn't that restrictive although it's Daniel who wrote it. :-) I think the script allows us to do almost anything we can do with a plain vanilla version map. It even supports multiple version axes, which is used now to separate standard functions from FreeBSD-specific functions. -- Yar