Metaobject Protocols for Julia

Authors Marcelo Santos , António Menezes Leitão

Thumbnail PDF


  • Filesize: 0.51 MB
  • 15 pages

Document Identifiers

Author Details

Marcelo Santos
  • Instituto Superior Técnico, University of Lisbon, Portugal
António Menezes Leitão
  • INESC-ID/Instituto Superior Técnico, University of Lisbon, Portugal

Cite AsGet BibTex

Marcelo Santos and António Menezes Leitão. Metaobject Protocols for Julia. In 11th Symposium on Languages, Applications and Technologies (SLATE 2022). Open Access Series in Informatics (OASIcs), Volume 104, pp. 13:1-13:15, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2022)


Metaobject Protocols enable programmers to extend programming languages without the need to understand the lower level details of their implementation. However, designing these protocols comes with two challenges: allow programmers to limit their concerns to higher level concepts and minimize performance penalties in programs. In this work, we propose metaobject protocol for the programming language Julia. Julia’s object system is very limited, when compared to languages following the Object-Oriented paradigm. However, Julia’s compilation approach allows for a considerable degree of code optimization through the exploration of runtime type information. Through the usage of Julia’s run-time optimizations, we propose a metaobject protocol that combines user-extensibility with limited performance penalties. This paper focuses on the development of a multiple inheritance method dispatch and method combination mechanisms with zero runtime overhead.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Language features
  • Julia
  • Metaobject Protocols
  • Object-Oriented Programming
  • Performance


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. S Borağan Aruoba and Jesús Fernández-Villaverde. A comparison of programming languages in macroeconomics. Journal of Economic Dynamics and Control, 58:265-273, 2015. Google Scholar
  2. Jeff Bezanson, Alan Edelman, Stefan Karpinski, and Viral B Shah. Julia: A fresh approach to numerical computing. SIAM review, 59(1):65-98, 2017. Google Scholar
  3. Daniel G Bobrow, Linda G DeMichiel, Richard P Gabriel, Sonya E Keene, Gregor Kiczales, and David A Moon. Common lisp object system specification. ACM Sigplan Notices, 23(SI):1-142, 1988. Google Scholar
  4. Daniel G Bobrow, Kenneth Kahn, Gregor Kiczales, Larry Masinter, Mark Stefik, and Frank Zdybel. Commonloops: Merging lisp and object-oriented programming. ACM Sigplan Notices, 21(11):17-29, 1986. Google Scholar
  5. Stephen Cass. The 2015 top ten programming languages. Google Scholar
  6. Shigeru Chiba. A metaobject protocol for C++. In Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, pages 285-299, 1995. Google Scholar
  7. Brad J Cox. Object oriented programming: an evolutionary approach. Addison-Wesley Longman Publishing Co., Inc., 1986. Google Scholar
  8. Gregor Kiczales, J Michael Ashley, Luis Rodriguez, Amin Vahdat, and Daniel G Bobrow. Metaobject protocols: Why we want them and what else they can do. Object-Oriented Programming: The CLOS Perspective, pages 101-118, 1993. Google Scholar
  9. Gregor Kiczales, Jim Des Rivieres, and Daniel G Bobrow. The art of the metaobject protocol. MIT press, 1991. Google Scholar
  10. Chris Lattner and Vikram Adve. Llvm: A compilation framework for lifelong program analysis & transformation. In International Symposium on Code Generation and Optimization, 2004. CGO 2004., pages 75-86. IEEE, 2004. Google Scholar
  11. Linda Dailey Paulson. Developers shift to dynamic programming languages. Computer, 40(2):12-15, 2007. Google Scholar
  12. Rui Pereira, Marco Couto, Francisco Ribeiro, Rui Rua, Jácome Cunha, João Paulo Fernandes, and João Saraiva. Energy efficiency across programming languages: How do energy, time, and memory relate? In Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2017, pages 256-267, New York, NY, USA, 2017. Association for Computing Machinery. URL:
  13. Guy Steele. Common LISP: the language. Elsevier, 1990. Google Scholar
  14. Bjarne Stroustrup. The C++ programming language. Pearson Education India, 2000. Google Scholar
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail