Mixins in strongtalk
2002
Abstract
We describe the use and implementation of mixins in the Animorphic Smalltalk system, a high performance Smalltalk virtual machine and programming environment. Mixins are the basic unit of implementation, and are directly supported by the VM. At the language level, code can be defined either in mixins or in classes, but classes are merely sugar for mixin definition and application. The Strongtalk type system supports the optional static typechecking of mixins in an encapsulated manner. Independent of typechecking, the resulting system system substantially outperforms existing Smalltalk implementations.
References (30)
- Davide Ancona, Giovanni Lagorio, and Elena Zucca. Jam -a smooth extension of Java with mixins. In European Conference on Object- Oriented Programming, pages 154-178, 2000.
- Gilad Bracha and William Cook. Mixin-based inheritance. In Proc. of the Joint ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications and the European Conference on Object- Oriented Programming, October 1990.
- Gilad Bracha and David Griswold. Strongtalk: Typechecking Smalltalk in a production environment. In Proc. of the ACM Conf. on Object-Oriented Programming, Systems, Languages and Applica- tions, September 1993.
- Gilad Bracha and David Griswold. Extending Smalltalk with mixins, September 1996. OOPSLA Workshop on Extending the Smalltalk Language.
- Viviana Bono, Amit Patel, and Vitaly Shmatikov. A core calculus of classes and mixins. In R. Guerraoui, editor, Proceedings ECOOP'99, LCNS 1628, pages 43-66, Lisbon, Portugal, June 1999. Springer- Verlag.
- Gilad Bracha. The Programming Language Jigsaw: Mixins, Mod- ularity and Multiple Inheritance. PhD thesis, University of Utah, 1992.
- Gilad Bracha. The Strongtalk type system for Smalltalk, September 1996. OOPSLA Workshop on Extending the Smalltalk Language.
- Luca Cardelli and John C. Mitchell. Operations on records. Tech- nical Report 48, Digital Equipment Corporation Systems Research Center, August 1989.
- Dominic Duggan. Mixin modules. In Proc. of the ACM SIGPLAN International Conference on Functional Programming, pages 262- 273, 1996.
- Dominic Duggan. A mixin-based, semantics-based approach to reusing domain-specific programming languages. In European Con- ference on Object-Oriented Programming, pages 179-200, 2000.
- Erik Ernst. Propagating class and method combination. In R. Guer- raoui, editor, Proceedings ECOOP'99, LCNS 1628, pages 67-91, Lis- bon, Portugal, June 1999. Springer-Verlag.
- Erik Ernst. Family polymorphism. In European Conference on Object-Oriented Programming, pages 303-326, 2001.
- Robert Bruce Findler and Matthew Flatt. Modular object-oriented programming with units and mixins. In Proc. of the ACM SIGPLAN International Conference on Functional Programming, pages 94-104, 1998.
- Matthew Flatt and Matthias Felleisen. Units: Cool modules for HOT languages. In Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 236-248, 1998.
- Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and mixins. In Proc. of the ACM Symp. on Principles of Programming Languages, pages 171-183, 1998.
- Kathleen Fisher and John Reppy. Extending Moby with inheritance- based subtyping. In European Conference on Object-Oriented Pro- gramming, pages 83-107, 2000.
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification, Second Edition. Addison-Wesley, Reading, Massachusetts, 2000.
- A. Goldberg and D. Robson. Smalltalk-80: the Language and Its Implementation. Addison-Wesley, 1983.
- Urs Hölzle, Craig Chambers, and David Ungar. Optimizing dynamically-typed object-oriented languages with polymorphic in- line caches. In P. America, editor, Proceedings ECOOP'91, LNCS 512, pages 21-38, Geneva, Switzerland, July 15-19 1991. Springer- Verlag.
- Urs Hölzle. Adaptive Optimization for Self: Reconciling High Per- formance with Exploratory Programming. PhD thesis, Depart- ment of Computer Science, Stanford University, 1994. Available at http://www.cs.ucsb.edu/labs/oocsb/papers/urs-thesis.html.
- Yukihiro Matsumoto. Ruby in a Nutshell. O'Reilly & Associates, 2001.
- Bertrand Meyer. Object Oriented Software Construction. Prentice- Hall International, Hertfordshire, England, 1988.
- Sun Microsystems. The Java Hotspot tm virtual machine. http://java.sun.com/products/hotspot/docs/whitepaper/Java HotSpot WP Final 4 30 01.html.
- David A. Moon. Object-oriented programming with Flavors. In Proc. of the ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications, pages 1-8, 1986.
- Martin Odersky. Report on the programming language Scala, 2001. available at http://lampwww.epfl.ch/ odersky/scala/.
- Yannis Smaragdakis and Don Batory. Implementing layered designs with mixins layers. In European Conference on Object-Oriented Pro- gramming, pages 550-570, 1998.
- SCD + 93] Patrick Steyaert, Wim Codenie, Theo D'Hondt, Koen De Hondt, Carine Lucas, and Marc Van Limberghen. Nested mixin-methods in agora. In O. Nierstrasz, editor, Proceedings ECOOP'93, LNCS 707, pages 197-219, Kaiserslautern, Germany, July 1993. Springer- Verlag.
- David Thomas and Andrew Hunt. Programming Ruby: A Pragmatic Programmer's Guide. Addison-Wesley, 2001.
- David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hölzle. The SELF manual, version 1.0, July 1990.
- David Ungar and Randall Smith. SELF: The power of simplicity. In Proc. of the ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications, October 1987.