ABSTRACT
Dynamic mixins allow objects to be modified at runtime with modular extensions. Runtime extensions complicate the object memory management because the order in which mixins are added is not known at compile time. Furthermore, the exact type of the receiver of an up-call from a mixin must be determined at runtime. This work proposes an object model used to address both of these issues. It is used to implement a dynamic mixin-based language called mix and removes the burden of object memory management from the application developer.
- Efficiently implementing python object with maps. http://morepypy.blogspot.ca/2010/11/efficiently-implementing-python-objects.html, November 2011.Google Scholar
- Python documentation. http://www.python.org, February 2013.Google Scholar
- Ruby documentation. http://www.ruby-lang.org, December 2015.Google Scholar
- S. Apel, T. Leich, and G. Saake. Aspectual mixin layers: Aspects and features in concert. In Proceedings of the 28th International Conference on Software Engineering, ICSE '06, pages 122--131, New York, NY, USA, 2006. ACM. Google ScholarDigital Library
- E. Burton and E. Sekerinski. Using dynamic mixins to implement design patterns. In Proceedings of the 19th European Conference on Pattern Languages of Programs, EuroPLoP '14, pages 14:1--14:19, New York, NY, USA, 2014. ACM. Google ScholarDigital Library
- E. Burton and E. Sekerinski. The safety of dynamic mixin composition. In Proceedings of the 30th Annual ACM Symposium on Applied Computing, SAC '15, pages 1992--1999, New York, NY, USA, 2015. ACM. Google ScholarDigital Library
- C. Chambers, D. Ungar, and E. Lee. An efficient implementation of self a dynamically-typed object-oriented language based on prototypes. SIGPLAN Not., 24(10):49--70, Sept. 1989. Google ScholarDigital Library
- CodeHaus. Groovy - runtime mixins. http://groovy-lang.org/, February 2014.Google Scholar
- R. Dixon, T. McKee, M. Vaughan, and P. Schweizer. A fast method dispatcher for compiled languages with multiple inheritance. In Conference proceedings on Object-oriented programming systems, languages and applications, OOPSLA '89, pages 211--214, New York, NY, USA, 1989. ACM. Google ScholarDigital Library
- R. Ducournau. Coloring, a versatile technique for implementing object-oriented languages. Softw. Pract. Exper., 41(6):627--659, May 2011. Google ScholarDigital Library
- E. Gamma. The extension objects pattern. In R. Martin, D. Riehle, and F. Buschmann, editors, PLoP'96. 3rd Conference on Pattern Languages of Programs. Addison-Wesley, 1997. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design patterns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995. Google ScholarDigital Library
- A. Goldberg and D. Robson. Smalltalk-80: the language and its implementation. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1983. Google ScholarDigital Library
- Google. Design elements - chrome v8. https://developers.google.com/v8/design, December 2015.Google Scholar
- N. Hankache. Perl 6 introduction. http://perl6intro.com, December 2015.Google Scholar
- K. Ishizaki, T. Ogasawara, J. Castanos, P. Nagpurkar, D. Edelsohn, and T. Nakatani. Adding dynamically-typed language support to a statically-typed language compiler: performance evaluation, analysis, and tradeoffs. SIGPLAN Not., 47(7):169--180, Mar. 2012. Google ScholarDigital Library
- A. C. Myers. Bidirectional object layout for separate compilation. In Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, OOPSLA '95, pages 124--139, New York, NY, USA, 1995. ACM. Google ScholarDigital Library
- M. Odersky. The Scala Language Specification. http://www.scala-lang.org, February 2011.Google Scholar
- W. Pugh and G. Weddell. Two-directional record layout for multiple inheritance. SIGPLAN Not., 25(6):85--91, June 1990. Google ScholarDigital Library
- B. Stroustrup. Multiple inheritance for c++, 1999.Google Scholar
- C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2nd edition, 2002. Google ScholarDigital Library
- J. Templ. A systematic approach to multiple inheritance implementation. SIGPLAN Not., 28(4):61--66, Apr. 1993. Google ScholarDigital Library
- D. Ungar and R. B. Smith. Self: The power of simplicity. Lisp and Symbolic Computation, 4(3):187--205, 1991. Google ScholarDigital Library
- M. VanHilst and D. Notkin. Using role components in implement collaboration-based designs. SIGPLAN Notices, 31(10):359--369, Oct. 1996. Google ScholarDigital Library
- Y. Zibin and J. Gil. Two-dimensional bi-directional object layout. In L. Cardelli, editor, ECOOP 2003 -- Object-Oriented Programming, volume 2743 of Lecture Notes in Computer Science, pages 329--350. Springer Berlin Heidelberg, 2003.Google Scholar
Index Terms
- An object model for a dynamic mixin based language
Recommendations
The safety of dynamic mixin composition
SAC '15: Proceedings of the 30th Annual ACM Symposium on Applied ComputingDynamic mixins are a modular means of developing features or roles that can be composed with objects at run-time. However, naive use of this construct can cause unexpected behaviour due to interference caused by the presence of an object's previously ...
An object model for dynamic mixins
A statically typed language called mix is defined for dynamic mixin based development.An object model used for its implementation avoids name lookup for finding method pointers.Preliminary results indicate method access for dynamic mixins approaches the ...
Mixin-based inheritance
OOPSLA/ECOOP '90: Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applicationsThe diverse inheritance mechanisms provided by Smalltalk, Beta, and CLOS are interpreted as different uses of a single underlying construct. Smalltalk and Beta differ primarily in the direction of class hierarchy growth. These inheritance mechanisms are ...
Comments