License: Creative Commons Attribution 4.0 International license (CC BY 4.0)
When quoting this document, please refer to the following
DOI: 10.4230/OASIcs.SLATE.2022.13
URN: urn:nbn:de:0030-drops-167597
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2022/16759/
Santos, Marcelo ;
Leitão, António Menezes
Metaobject Protocols for Julia
Abstract
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.
BibTeX - Entry
@InProceedings{santos_et_al:OASIcs.SLATE.2022.13,
author = {Santos, Marcelo and Leit\~{a}o, Ant\'{o}nio Menezes},
title = {{Metaobject Protocols for Julia}},
booktitle = {11th Symposium on Languages, Applications and Technologies (SLATE 2022)},
pages = {13:1--13:15},
series = {Open Access Series in Informatics (OASIcs)},
ISBN = {978-3-95977-245-7},
ISSN = {2190-6807},
year = {2022},
volume = {104},
editor = {Cordeiro, Jo\~{a}o and Pereira, Maria Jo\~{a}o and Rodrigues, Nuno F. and Pais, Sebasti\~{a}o},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/opus/volltexte/2022/16759},
URN = {urn:nbn:de:0030-drops-167597},
doi = {10.4230/OASIcs.SLATE.2022.13},
annote = {Keywords: Julia, Metaobject Protocols, Object-Oriented Programming, Performance}
}