Strategy (was Re: Improving copyright)

Niall Douglas s_fsfeurope2 at nedprod.com
Sat May 15 16:38:16 UTC 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 15 May 2004 at 10:52, Jeroen Dekkers wrote:

> > Well you're not exactly comparing apples with apples here. Many
> > command line programs are simple enough that a FreeBSD built binary
> > runs on Linux fine because it uses nothing more than the basic POSIX
> > API (despite different clib's) which is of course identical on both
> > as both are compiled with GCC.
> 
> Totally wrong. You're talking about APIs, but compiled programs use
> ABIs, which is a different thing. And no, the ABIs between the FreeBSD
> C library and the GNU one are very different.

Both the GNU and BSD C libraries offer the same API's eg; size_t 
fread(void *buffer, size_t size, size_t count, FILE *stream). Both 
use the same compiler (GCC) and so therefore that API will convert 
into the same ABI eg; _fread using the same parameter to stack 
conversion mechanism (the procedural call convention).

Therefore if your program used very few extremely universal calls you 
could even change the entire operating system and the binary need not 
know any better. If Windows also used ELF binaries you could even 
have a good chance of running a simple Win32 binary on FreeBSD if you 
mapped the Win32 C library to the FreeBSD one using /etc/ld.conf (is 
that the right file? I always have to look it up).

My point is that simple command line executables are no test. The 
ANSI C specification mandated that all C implementations provide a 
basic subset of the Unix environment which is universal. I know this 
sounds like me redefining my assertion after me saying it, but I was 
thinking of like with like when I wrote what I did (honest!) :)

> > If you can find me an X11 binary from 1996 than runs unmodified on a
> > modern installation without using some legacy binary compatibility
> > package then I'll gladly retract my assertion.
> 
> Your assertion "A Linux binary from 1996 stands *zero* *chance* of
> running unmodified on the latest Linux" is proven wrong.

I would argue it's not a Linux binary - I know that's slicing words. 
Ok clarified version: "A Linux binary from 1996 of a similar 
complexity to typical binaries running on Windows at the same period 
stands *zero* *chance* of running unmodified on the latest Linux 
without some form of library emulation package". Quite a mouthful, 
which is why I didn't write it first time.

> And IMHO binary compatibility isn't really important. Source
> compatibility is a lot more important, because you can just recompile
> the program you have.

Do even 90% of the world's computer users know what a compiler is?

That kind of foolish statement is unfortunately typical of 
programmers from a Unix background. Thank god we're finally getting 
over it.

Cheers,
Niall





-----BEGIN PGP SIGNATURE-----
Version: idw's PGP-Frontend 4.9.6.1 / 9-2003 + PGP 8.0.2

iQA/AwUBQKZHeMEcvDLFGKbPEQJaiwCgrRGpVQQZ4oDyK5wBBTyu+2DZTtYAnROR
UbXT96jwlDgTCxeny5bLmPz7
=rR0F
-----END PGP SIGNATURE-----



More information about the Discussion mailing list