Pharo: a reflective language -Analyzing the reflective API and its internal dependencies - Archive ouverte HAL
Article Dans Une Revue Journal of Computer Languages Année : 2024

Pharo: a reflective language -Analyzing the reflective API and its internal dependencies

Résumé

Reflective operations are powerful APIs (Application Programming Inter- face) that let developers build advanced tools and architectures. Reflec- tive operations are used for implementing tools and development environ- ments (e.g., compilers, debuggers, inspectors) or language features (e.g., distributed systems, exceptions, proxies, aspect-oriented programming). In addition, languages are evolving, introducing better concepts, and revising practices and APIs. Since 2008 Pharo has evolved from Squeak and its reflec- tive API has evolved accordingly, diverging consequently from the original Smalltalk reflective API. With more than 500 reflective methods identified, Pharo has one of the largest reflective feature sets ranging from structural reflection to on-demand stack reification. Those operations are often built on top of the other, creating different layers of reflective operations, from low-level to high-level ones. There is a need to understand the current reflective APIs to understand their underlying use, potential dependencies, and whether some reflective features can be scoped and optional. Such an analysis is challenged by new metaobjects organically introduced in the system, such as first-class instance variables, and their mixture with the base-level API of objects and classes. In this article, we analyze the reflective operations used in Pharo 12 and their interdependencies. We propose a classification based on their semantics and we identify a set of issues of the current implementation. Such an analysis of reflective operations in Pharo is important to support the revision of the reflective layer and its potential redesign.
Fichier principal
Vignette du fichier
main.pdf (1.07 Mo) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-04576440 , version 1 (12-08-2024)
hal-04576440 , version 2 (23-12-2024)

Licence

Identifiants

Citer

Iona Thomas, Stéphane Ducasse, Pablo Tesone, Guillermo Polito. Pharo: a reflective language -Analyzing the reflective API and its internal dependencies. Journal of Computer Languages, 2024, 80, pp.101274. ⟨10.1016/j.cola.2024.101274⟩. ⟨hal-04576440v2⟩
110 Consultations
32 Téléchargements

Altmetric

Partager

More