An Experiment with lexically-bound extension methods for a dynamic language - Pharo Access content directly
Reports (Research Report) Year : 2017

An Experiment with lexically-bound extension methods for a dynamic language

Abstract

An extension method is a method declared in a package other than the package of its host class. Thanks to extension methods, developers can adapt classes they do not own to their needs: adding methods to core classes is a typical use case. This is particularly useful for adapting software and therefore increasing reusability. In most dynamically-typed languages, extension methods are globally visible. Because any developer can define extension methods for any class, naming conflicts occur: if two developers define an extension method with the same signature in the same class, only one extension method is visible and overwrites the other. Similarly, if two developers each define an extension method with the same name in a class hierarchy, one overrides the other. Existing solutions typically rely on a dedicated and slow method lookup algorithm to resolve conflicts at runtime. In this article, we present a model of scoped extension methods that minimizes accidental overrides and we present an implementation in Pharo that incurs little performance overhead. This implementation is based on lexical scope and hierarchy-first strategy for extension scoping.
Fichier principal
Vignette du fichier
conch-tech-report.pdf (247.23 Ko) Télécharger le fichier
Origin : Files produced by the author(s)

Dates and versions

hal-01483756 , version 1 (06-03-2017)

Identifiers

  • HAL Id : hal-01483756 , version 1

Cite

Stéphane Ducasse, Luc Fabresse, Guillermo Polito, Camille Teruel. An Experiment with lexically-bound extension methods for a dynamic language. [Research Report] Inria Lille - Nord Europe. 2017. ⟨hal-01483756⟩
411 View
87 Download

Share

Gmail Facebook X LinkedIn More