Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Sep 1999 16:53:08 +0400
From:      Dmitrij Tejblum <tejblum@arc.hq.cti.ru>
To:        Marcel Moolenaar <marcel@scc.nl>
Cc:        Dmitrij Tejblum <tejblum@arc.hq.cti.ru>, Nate Williams <nate@mt.sri.com>, cvs-committers@freebsd.org, cvs-all@freebsd.org
Subject:   Re: cvs commit: src/secure/lib/libcrypt Makefile src/lib/libcrypt Makefile 
Message-ID:  <199909231253.QAA02741@tejblum.pp.ru>
In-Reply-To: Your message of "Thu, 23 Sep 1999 10:39:44 %2B0200." <37E9E750.85237877@scc.nl> 

next in thread | previous in thread | raw e-mail | index | archive | help
Marcel Moolenaar wrote:
> This is comparing apples with peers. Interpreters either supply
> versioning information to the source code or they don't. If they do,
> then it should be used to handle incompatibilities in a user friendly
> way. I they don't, then you obviously don't have a choice, other than
> writing backwards compatible code as much as possible.

ELF is an interpreted language. The interesting now part of the 
program would look somewhat like this:

INTERP	/usr/libexec/ld-elf.so.1
NEEDED	libcrypt.so.2
NEEDED	libc.so.3

(The INTERP line is handled by the kernel in a way similar to '#!' line 
in a script. The rest is handled by the *ELF interpreter*.  --- I just 
want to convince you that it is indeed _very_ similar)

The NEEDED commands load the required shared libraries. The interpreter 
look for the library *with given name* in its search path. sh(1) would 
search for a command with given name in $PATH. When I use 'find' in my 
shell script I cannot be sure that the /usr/bin/find binary have all 
the feature that I use. But it is, well, acceptable. At least, noone
want to have find.5, find.6, and find.7, depending on the feature set,
as the solution.
 
> Shared libraries have versioning information. Use it!

This is an illusion. "Version number" is just a part of 
the name, no more. I could call my shared library 'foo.bar.baz', and 
it would work.

There is nothing that compare version numbers, like 'require' in perl.

I agree that the lack of versioning infoarmation is bad. Other Unix 
vendors already invented solutions. Sun has added 'symbol versioning' 
to ELF. GNU have extensions to the Sun approach. I think we should 
support the ELF extensions. (But I am no way voluntering to implement
it). So, now we "don't have a choice, other than writing backwards
compatible code as much as possible".
 
> Don't start the versioning discussion all over again. Instead, continu
> the discussion on -hackers, please.

Sorry for the huge delay in that discussion. But there on -hackers I 
suggested a far more radical and different thing than what is discussed 
now. (Moreover, my arguments in that discussion are quite different 
than here.) IMO it would be better to agree on this topic, before we 
continue that.

(W.R.T. your sigset_t changes (in case your wondered): I started to think 
(after some Peter's words) that any ideas that restore compatibility can
be implemented (if they are agreed by the people, of course) later your
changes that breaks the compatibility. Indeed, I only want compatibility 
for -RELEASEs, and -current may be broken it this respect for some time.
I am not 100% sure about it, though.)

Dima




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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