ABIs and the futurrrr of UNIX(tm)

Jan Edler edler at cmcl2.NYU.EDU
Fri Apr 1 06:58:54 AEST 1988


There are always pros and cons to standardizing something in this
business.  The main advantages of a source compatibility standard (such
as SVID or POSIX) is that it increases portability and availability of
software.  A disadvantage is that programs conforming to the standard
can't take advantage of extensions provided by specific UNIX
implementations.  Of course, non-portable programs will use them and,
if successful and generally applicable, such extensions may be
incorporated into future revisions of the standard.

In the case of binary interfaces, the technical situation is much the
same for each processor type.  Portability of binary programs is
improved, but if a program is distributed in standard binary form, it
can't take advantage of extensions provided by specific UNIX
implementations.  I think it will be difficult to get such extensions
incorporated in new revisions of the binary standard if they don't
directly corespond to new features also being added to the source standard.

In both cases, I worry that the UNIX implementor will be discouraged
from exploring innovative extensions to the system.  If most
distributed programs adhere to the relevant standard (source or
binary), the incentive to innovate is reduced.  The benefits of source
compatibility are so great that I believe it is well justified.
However I'm not so convinced about the benefits of binary standards.

Consider that if I build a machine based on microprocessor X, and many
programs are available only in binary standard form, I might think
twice before investing significant effort into highly optimizing
compilers, since the binary programs won't benefit (since they were
presumably compiled on my competitor's machines, with inferior
compilers but larger market share).  And I might be disinclined to
invent new implementations of standard kernel functionality, such as

	getpid() in user mode
	time(), gettimeofday(), etc. in user mode
	pipes in user mode
	more efficient signal handling mechanisms

All of these enhancements (and many others) can be done in a way that
conforms to source standards, but none of them will benefit binary
standard programs.  Many of them aren't even generally applicable (e.g.
user mode pipes make more sense on multiprocessors than
uniprocessors).  I'm not saying the success of binary standards will
kill innovation, but I think it would have a detrimental effect.

Jan Edler
NYU Ultracomputer Project
edler at nyu.edu



More information about the Comp.unix.wizards mailing list