Abstract:Abstract. Supporting read-only and side effect free execution has been the focus of a large body of work in the area of statically typed programming languages. Read-onlyness in dynamically typed languages is difficult to achieve because of the absence of a type checking phase and the support of an open-world assumption in which code can be constantly added and modified. To address this issue, we propose Dynamic Read-Only references (DRO) that provide a view on an object where this object and its object graph a… Show more
“…To mitigate this threat we selected a set of benchmarks included in the literature of the field [12,14]. We also evaluated the MOP in use cases appearing in previous works (read-only [2], tracing [15]). It is worth noting however, that the field of reflective EEs is comparatively unexplored and the work on applications that harness the capabilities of reflective EEs has just started.…”
Section: Discussionmentioning
confidence: 99%
“…Arnaud et al [2] proposed an implementation of read-only references based on the idea of handles, a kind of proxy protecting the read-only reference. To enforce the transparency of handles, this approach requires the modification of the underlying VM.…”
Section: Read-only Referencesmentioning
confidence: 99%
“…To do so, we first built an experimental reflective EE named TruffleMate, 1 which is an extension of TruffleSOM, 2 an optimized implementation of SOM Smalltalk. TruffleMate supports an adapted version of Mate v1's MOP, a prototypical reflective EE presented in [5].…”
Section: Introductionmentioning
confidence: 99%
“…Furthermore, we evaluate TruffleMate in on-the-fly adaptation scenarios that need intervention at the EE level: introducing immutable (readonly) references [2] and monitoring method activations. The evaluation shows that our reflective EE has on average zerooverhead at peak performance compared to TruffleSOM when no adaptations are needed.…”
Programming language virtual machines (VMs) realize language semantics, enforce security properties, and execute applications efficiently. Fully Reflective Execution Environments (EEs) are VMs that additionally expose their whole structure and behavior to applications. This enables developers to observe and adapt VMs at run time. However, there is a belief that reflective EEs are not viable for practical usages because such flexibility would incur a high performance overhead.To refute this belief, we built a reflective EE on top of a highly optimizing dynamic compiler. We introduced a new optimization model that, based on the conjecture that variability of low-level (EE-level) reflective behavior is low in many scenarios, mitigates the most significant sources of the performance overheads related to the reflective capabilities in the EE. Our experiments indicate that reflective EEs can reach peak performance in the order of standard VMs. Concretely, that a) if reflective mechanisms are not used the execution overhead is negligible compared to standard VMs, b) VM operations can be redefined at language-level without incurring in significant overheads, c) for several software adaptation tasks, applying the reflection at the VM level is not only lightweight in terms of engineering effort, but also competitive in terms of performance in comparison to other ad-hoc solutions.
“…To mitigate this threat we selected a set of benchmarks included in the literature of the field [12,14]. We also evaluated the MOP in use cases appearing in previous works (read-only [2], tracing [15]). It is worth noting however, that the field of reflective EEs is comparatively unexplored and the work on applications that harness the capabilities of reflective EEs has just started.…”
Section: Discussionmentioning
confidence: 99%
“…Arnaud et al [2] proposed an implementation of read-only references based on the idea of handles, a kind of proxy protecting the read-only reference. To enforce the transparency of handles, this approach requires the modification of the underlying VM.…”
Section: Read-only Referencesmentioning
confidence: 99%
“…To do so, we first built an experimental reflective EE named TruffleMate, 1 which is an extension of TruffleSOM, 2 an optimized implementation of SOM Smalltalk. TruffleMate supports an adapted version of Mate v1's MOP, a prototypical reflective EE presented in [5].…”
Section: Introductionmentioning
confidence: 99%
“…Furthermore, we evaluate TruffleMate in on-the-fly adaptation scenarios that need intervention at the EE level: introducing immutable (readonly) references [2] and monitoring method activations. The evaluation shows that our reflective EE has on average zerooverhead at peak performance compared to TruffleSOM when no adaptations are needed.…”
Programming language virtual machines (VMs) realize language semantics, enforce security properties, and execute applications efficiently. Fully Reflective Execution Environments (EEs) are VMs that additionally expose their whole structure and behavior to applications. This enables developers to observe and adapt VMs at run time. However, there is a belief that reflective EEs are not viable for practical usages because such flexibility would incur a high performance overhead.To refute this belief, we built a reflective EE on top of a highly optimizing dynamic compiler. We introduced a new optimization model that, based on the conjecture that variability of low-level (EE-level) reflective behavior is low in many scenarios, mitigates the most significant sources of the performance overheads related to the reflective capabilities in the EE. Our experiments indicate that reflective EEs can reach peak performance in the order of standard VMs. Concretely, that a) if reflective mechanisms are not used the execution overhead is negligible compared to standard VMs, b) VM operations can be redefined at language-level without incurring in significant overheads, c) for several software adaptation tasks, applying the reflection at the VM level is not only lightweight in terms of engineering effort, but also competitive in terms of performance in comparison to other ad-hoc solutions.
“…Hence, for providing reference immutability we extended Mate v1 at run-time for supporting them. We followed Arnaud et al's handles approach [2]. Handles are like proxies to objects that do not delegate the mutable operations to their targets.…”
Modern development environments promote live programming (LP) mechanisms because it enhances the development experience by providing instantaneous feedback and interaction with live objects. LP is typically supported with advanced reflective techniques within dynamic languages. These languages run on top of Virtual Machines (VMs) that are built in a static manner so that most of their components are bound at compile time. As a consequence, VM developers are forced to work using the traditional edit-compile-run cycle, even when they are designing LP-supporting environments. In this paper we explore the idea of bringing LP techniques to the VM domain for improving their observability, evolution and adaptability at run-time. We define the notion of fully reflective execution environments (EEs), systems that provide reflection not only at the application level but also at the level of the VM. We characterize such systems, propose a design, and present Mate v1, a prototypical implementation. Based on our prototype, we analyze the feasibility and applicability of incorporating reflective capabilities into different parts of EEs. Furthermore, the evaluation demonstrates the opportunities such reflective capabilities provide for unanticipated dynamic adaptation scenarios, benefiting thus, a wider range of users.
Abstract. Scoping behavioral variations to dynamic extents is useful to support non-functional concerns that otherwise result in cross-cutting code. Unfortunately, such forms of scoping are difficult to obtain with traditional reflection or aspects. We propose delegation proxies, a dynamic proxy model that supports behavioral intercession through the interception of various interpretation operations. Delegation proxies permit different behavioral variations to be easily composed together. We show how delegation proxies enable behavioral variations that can propagate to dynamic extents. We demonstrate our approach with examples of behavioral variations scoped to dynamic extents that help simplify code related to safety, reliability, and monitoring.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.