1 The Object Binary Interface—C++ Objects for Evolvable Shared Class Libraries Theodore C. Goldstein Alan D. Sloane SMLI TR-94-26 June 1994 Abstract: 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 ver- sioning, 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 ven- dors are versioned at different times. Maintaining compatibility between versions must be con- sciously 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 (SOM) for C++ users, and a new implementation model called the Object Binary Interface (OBI) for C++ imple- mentors. 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. email address: ted.goldstein@eng.sun.com A Sun Microsystems, Inc. Business M/S 29-01 2550 Garcia Avenue Mountain View, CA 94043