Contents
1. What is abicheck?
2. What is an ABI and how does it differ from an API?
3. What license is abicheck released under? Who owns the copyright?
4. What is the relationship between abicheck and the Linux Standards Base
tool lsbappchk?
5. What is the relationship between abicheck and Sun's ABI tool appcert?
6. What is Sun's role in all this?
1. What is abicheck?
abicheck is a utility for checking an application binary's use of library
interfaces against the Application Binary Interface (ABI) defined for
those libraries.
Use of non-ABI interfaces puts the application at risk from binary
incompatibility with later versions of the libraries;
abicheck spots such potential problems.
abicheck was inspired by Sun's work on defining the Solaris ABI,
and its technology for checking whether application binaries conform
to that ABI
(see the
Sun ABI website
for more details).
abicheck is the nucleus for such an ABI effort in the Open Source community.
It is currently in the prototype/planning stage; initial work has been
done by members of Sun Microsystems' Solaris ABI Project.
The abicheck source is released under the LGPL.
2. What is an ABI and how does it differ from an API?
An Application Binary Interface (ABI) is the set of supported
runtime interfaces provided by
a software component or set of components for applications to use,
whereas an API is the set of build-time interfaces.
It is thus the ABI that actually determines whether or not an
application and system are binary compatible.
The most obvious and important ABI is that provided by a shared object
(dynamically linked library) since the actual linking is determined at
runtime; stability can only be achieved when the library and
the applications which use its interfaces adhere to a common stable ABI.
As a useful first approximation, an ABI definition should indicate
which interfaces are "public", i.e., documented and stable, and those
which are "private", i.e., not guaranteed to remain compatible in
future releases.
There currently are draft ABI's for
glibc
and
GNOME.
Public comment on them is welcomed.
3. What license is abicheck released under? Who owns the copyright?
abicheck is released under the
LGPL.
The copyright to the initial code release is held by Sun Microsystems, Inc.
The copyrights to additional contributions will be held by their
respective authors.
4. What is the relationship between abicheck and the Linux Standards Base
tool lsbappchk?
The Linux Standards Base
is defining a set of core interfaces for all Linux systems to support.
As part of this activity, they are developing several tools,
one of which, lsbappchk, checks an application to see if it is
using any interfaces other than those specified in the LSB definition
(use of such interfaces may affect the application's portability).
Just as the interfaces defined in the
Unix System V ABI
are the core
of the Solaris ABI,
the interfaces in the LSB definition would be the core of a future Linux ABI
checked by abicheck.
Put another way, lsbappchk only checks whether an application uses
interfaces outside of the LSB ones, regardless of whether those interfaces
are public or private,
while abicheck only checks whether an application uses private interfaces;
it doesn't distinguish between LSB and non-LSB public interfaces.
5. What is the relationship between abicheck and Sun's ABI tool
appcert?
abicheck was inspired by appcert, and does essentially the same thing.
Appcert is a more complex program and highly tailored to Solaris because it
is used to support Sun's developer programs. In order for those working on
abicheck to benefit from the work that went into appcert, Sun has
released the source code to appcert under the
Sun Public License,
a Mozilla-like license approved by the
Open Source Initiative.
More details can be found at the
Appcert Source page
on Sun's
Solaris ABI Program website.
6. What is Sun's role in all this?
Sun is committed to ensuring binary compatibility for Solaris
applications by means of a well-defined Solaris ABI and tools to help
developers write ABI-compliant (and thus stable) applications. Since
the experience it has gained in doing this for Solaris may be of use to
the open source community,
Sun is happy to contribute by making available the prototype for the
next generation of ABI technology, as well as the source for its
ABI tool, appcert.
The project on SourceForge has been set up by members of the Solaris ABI
Program. They intend to be contributors to, not controllers of, abicheck's
further development.
|