*BSD News Article 32982


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msuinfo!agate!library.ucla.edu!psgrain!quagga.ru.ac.za!Braae!g89r4222
From: csgr@cs.ru.ac.za (Geoff Rehmet)
Newsgroups: comp.os.386bsd.development
Subject: Re: shlib_minor from 0 to 1
Date: 16 Jul 1994 08:57:10 GMT
Organization: Rhodes University Computing Services
Lines: 88
Message-ID: <3087d6$abn@quagga.ru.ac.za>
References: <774194386.AA09311@f74.n700.z6.ftn.air.org>
Reply-To: csgr@cs.ru.ac.za
NNTP-Posting-Host: braae.ru.ac.za
X-Newsreader: NN version 6.5.0 #4 (NOV)


In <774194386.AA09311@f74.n700.z6.ftn.air.org> Clarence.Chu@f132.n700.z6.ftn.air.org (Clarence Chu) writes:

>hi there,
> 
>i really don't understand why shlib_minor had changed from
>0 to 1 in freebsd-1.1.5.1(R).
The explanation why minor version numbers had to be bumped is simple:
Some new interfaces were added to some of the libraries, the biggest
change being the addition of locale handling.  Such an addition
requires a minor version bump (as I explained earlier).

No parts of the pre-existing interfaces were modified, so a major
version bump was *NOT* required.

>it make all binaries linked against previous 1.1 shared lib
>useless (or have to make symlink of sharedlib.1.0 to sharedlib.1.1)
Wrong.  Any binary originally linked against lib*.so.1.0 will work with
lib*.so.1.1.  That is because the the lib*.so.1.1 are a superset of
lib*.so.1.0 in terms of the interfaces they provide.  (Remember that
the use of run-time linking means that if the addresses of objects in a
library change, the library can still be used with older executables.)

>1.1.5.1 is the last release based on net/2 already, still the
>"core" team (or team.core) had made such a decision to revise
>the minor number of the shared library which make so much
>inconvenience to the public.
The decision to bump minor numbers was a necessity for those libraries
whose interfaces changed, and was done for the convenience of users in
the case of libraries whos interfaces did not change.  Remember that
libc had the biggest number of changes. and everything is linked
against libc.
Any executable which you compiled under 1.1 *WILL* run under 1.1.5 or
1.1.5.1 -- there should be no inconvenience to users.

The only case in which executables will not run is when a 1.1.5
shared executable is run under 1.1.  This is however unlikely to cause
many people any inconvenience.

>now, question is: what's the point of making it 1.1 in stead of
>                  1.0 which had last since 1.1(Alpha)?
As I pointed out in an earlier post, interface changes to a library
require that its version number be changed.  In the case where only new
interfaces are added, only the minor number is bumped, so that older
executables which use libraries of the same major version number will
run.

>there will be 2.0, why not wait till then that the revision number
>be changed?
2.0 will require a major version bump.  The libraries have changed
quite a lot in 4.4-Lite.

>if ld.so is smart enough to be capable of differentiating 1.0 and 1.1
>in the new release (1.1.5.1), i have to ask another question: how 
>about the
>1.1.5.1(R) users, they are not able to runn binary
>applications previously linked against 1.0 shared library. i.e. if 
>one had
>purchased, say, Motif, he is not able to run it unless the
>ugly sharedlib.1.0s are symbolically linked.
NO - in such a case anything that previously used to link against
lib*.so.1.0 will now just link against lib*.so.1.1.
Once again - there will be no problem here.

I can assure you that I already have a few 1.1.5.1 systems up, which
are all running a lot of executables which were compiled under 1.1, and
there are absolutely no problems with this.  (On one such system I have
shared executables which are run every day, and which date back to 19
February - before the release of 1.1BETA.)

I think I can speak on behalf of all of the members of the core team,
in saying that we are going to do our utmost to make it possible for
older executables to run on newer versions of FreeBSD.  This definitely
an essential requirement.
As far as the ability to run 1.x executables on 2.x, work will probably
start, once 2.0 is stable, on building a compatibility package which
will include 1.1.5 shared libraries, to allow 1.x executables to be run
on 2.0.

Geoff.

(Couldn't get this out earlier as yesterday our nntpserver's disk was
full ;-)
--
 Geoff Rehmet, Computer Science Department,   | ____   _ o         /\
  Rhodes University,  South Africa            |___  _-\_<,        / /\/\
 FreeBSD core team                            |    (*)/'(*)    /\/ /  \ \
     csgr@cs.ru.ac.za, csgr@freefall.cdrom.com, geoff@neptune.ru.ac.za