The Object Binary Interface -
C++ Objects for Evolvable Shared Class Libraries
Theodore C. Goldstein Alan D. Sloane
Sun Microsystems Laboratories SunPro
Object-oriented design and object-oriented languages support the
development of independent software components such as class libraries.
When using such components, versioning becomes a key issue. While
various ad-hoc techniques and coding idioms have been used to provide
versioning, all of these techniques have deficiencies - ambiguity, the
necessity of recompilation or re-coding, or the loss of binary
compatibility of programs. Components from different software vendors
are versioned at different times. Maintaining compatibility between
versions must be consciously engineered. New technologies such as
distributed objects further complicate libraries by requiring multiple
implementations of a type simultaneously in a program.
This paper describes a new C++ object model called the Shared Object
Model for C++ users and a new implementation model called the Object
Binary Interface for C++ implementors.These techniques provide a
mechanism for allowing multiple implementations of an object in a
program. Early analysis of this approach has shown it to have
performance broadly comparable to conventional implementations.
Download the full text of this paper in
ASCII (47,034 bytes) and
POSTSCRIPT (208,177 bytes) form.
To Become a USENIX Member, please see our