Refine
Has Fulltext
- no (2)
Document Type
- Article (2) (remove)
Language
- English (2) (remove)
Is part of the Bibliography
- yes (2)
Keywords
- CoExist (1)
- Context-oriented programming (1)
- ContextJS (1)
- Dynamic adaptation (1)
- JavaScript (1)
- Lively Kernel (1)
- Object Versioning (1)
- Open implementations (1)
- Programming Environments (1)
- Scope (1)
Institute
- Hasso-Plattner-Institut für Digital Engineering gGmbH (2) (remove)
We present object versioning as a generic approach to preserve access to previous development and application states. Version-aware references can manage the modifications made to the target object and record versions as desired. Such references can be provided without modifications to the virtual machine. We used proxies to implement the proposed concepts and demonstrate the Lively Kernel running on top of this object versioning layer. This enables Lively users to undo the effects of direct manipulation and other programming actions.
Context-oriented programming (COP) provides dedicated support for defining and composing variations to a basic program behavior. A variation, which is defined within a layer, can be de-/activated for the dynamic extent of a code block. While this mechanism allows for control flow-specific scoping, expressing behavior adaptations can demand alternative scopes. For instance, adaptations can depend on dynamic object structure rather than control flow. We present scenarios for behavior adaptation and identify the need for new scoping mechanisms. The increasing number of scoping mechanisms calls for new language abstractions representing them. We suggest to open the implementation of scoping mechanisms so that developers can extend the COP language core according to their specific needs. Our open implementation moves layer composition into objects to be affected and with that closer to the method dispatch to be changed. We discuss the implementation of established COP scoping mechanisms using our approach and present new scoping mechanisms developed for our enhancements to Lively Kernel.