Abstract
Type-preserving compilation can improve software reliability by generating code that can be verified independently of the compiler. Practical type preserving compilation does not exist for languages with multiple inheritance. This paper presents Emi, the first typed intermediate language to support practical compilation of a programming language with fully general multiple inheritance. The paper demonstrates the practicality of Emi by showing that Emi can be used to faithfully model standard implementation strategies of multiple inheritance for C++, the most widely-used programming language with general multiple inheritance.
- C. Chen, R. Shi, and H. Xi. A typeful approach to object-oriented programming with multiple inheritance. In Proc. 6th PADL, pages 23--38, 2004.]]Google Scholar
Cross Ref
- J. Chen. A typed intermediate language for compiling multiple inheritance. Technical Report MSR-TR-2005-98, Microsoft Corporation.]]Google Scholar
- J. Chen and C. Chen. A typed intermediate language for supporting multiple inheritance via interfaces. Technical Report MSR-TR-2004-141, Microsoft Corporation.]]Google Scholar
- J. Chen and D. Tarditi. A simple typed intermediate language for object-oriented languages. In Proc. 32nd POPL, pages 38--49, 2005.]] Google Scholar
Digital Library
- A. B. Compagnoni and B. C. Pierce. Higher-order intersection types and multiple inheritance. Mathematical Structures in Computer Science, 6(5):469--501, 1996.]]Google Scholar
Cross Ref
- K. Fisher, J. H. Reppy, and J. G. Riecke. A calculus for compiling and linking classes. In Proc. 9th ESOP, pages 135--149, 2000.]] Google Scholar
Digital Library
- J. Gray. C++: under the hood. http://msdn.microsoft.com/archive/ default.asp? url=/archive/en-us/dnarvc/html/jangrayhood.asp.]]Google Scholar
- S. B. Lippman. Inside the C++ object model. Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA, 1996.]] Google Scholar
Digital Library
- G. Morrisett, D. Walker, K. Crary, and N. Glew. From System F to typed assembly language. ACM Trans. Prog. Lang. Syst., 21(3):527--568, May 1999.]] Google Scholar
Digital Library
- D. Rémy. Programming objects with ML-ART, an extension to ML with abstract and record types. In Proc. International Conference on Theoretical Aspects of Computer Software, pages 321--346, 1994.]] Google Scholar
Digital Library
- J. G. Rossie and D. P. Friedman. An algebraic semantics of subobjects. In Proc. OOPSLA, pages 187--199, 1995.]] Google Scholar
Digital Library
- Z. Shao. An overview of the FLINT/ML compiler. In ACM SIGPLAN Workshop on Types in Compilation, 1997.]]Google Scholar
- C. A. Stone. Extensible objects without labels. ACM Trans. Prog. Lang. Syst., 26(5):805--835, 2004.]] Google Scholar
Digital Library
- B. Stroustrup. Multiple inheritance for C++. In Proc. of the European Unix Users Group Conference, Helsinki, 1987.]]Google Scholar
- D. Tarditi, G. Morrisett, P. Cheng, C. Stone, R. Harper, and P. Lee. TIL: A type-directed optimizing compiler for ML. In ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 181--192, 1996.]] Google Scholar
Digital Library
- D. Wasserrab, T. Nipkow, G. Snelting, and F. Tip. An operational semantics and type safety proof for multiple inheritance in C++. In Proc. OOPSLA, 2006.]] Google Scholar
Digital Library
Index Terms
A typed intermediate language for compiling multiple inheritance
Recommendations
A typed intermediate language for compiling multiple inheritance
POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesType-preserving compilation can improve software reliability by generating code that can be verified independently of the compiler. Practical type preserving compilation does not exist for languages with multiple inheritance. This paper presents Emi, ...
A simple typed intermediate language for object-oriented languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languagesTraditional class and object encodings are difficult to use in practical type-preserving compilers because of the complexity of the encodings. We propose a simple typed intermediate language for compiling object-oriented languages and prove its ...
A simple typed intermediate language for object-oriented languages
POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languagesTraditional class and object encodings are difficult to use in practical type-preserving compilers because of the complexity of the encodings. We propose a simple typed intermediate language for compiling object-oriented languages and prove its ...






Comments