skip to main content
10.1145/2814228.2814241acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Towards fully reflective environments

Published: 21 October 2015 Publication History

Abstract

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.

References

[1]
B. Alpern, S. Augart, S. M. Blackburn, M. Butrico, A. Cocchi, P. Cheng, J. Dolby, S. Fink, D. Grove, M. Hind, K. S. McKinley, M. Mergen, J. E. B. Moss, T. Ngo, and V. Sarkar. The jikes research virtual machine project: Building an open-source research community. IBM Syst. J., 44(2):399–417, Jan. 2005.
[2]
J.-B. Arnaud, M. Denker, S. Ducasse, D. Pollet, A. Bergel, and M. Suen. Read-only execution for dynamic languages. In Proceedings of the 48th International Conference on Objects, Models, Components, Patterns, TOOLS’10, pages 117–136. Springer-Verlag, 2010.
[3]
K. Asai. Reflection in direct style. In Proceedings of the 10th ACM International Conference on Generative Programming and Component Engineering, GPCE ’11, pages 97–106. ACM, 2011.
[4]
L. Baresi and C. Ghezzi. The disappearing boundary between development-time and run-time. In Proceedings of the FSE /SDP Workshop on Future of Software Engineering Research, FoSER ’10, pages 17–22. ACM, 2010.
[5]
A. Black, S. Ducasse, O. Nierstrasz, D. Pollet, D. Cassou, and M. Denker. Pharo by Example. Square Bracket Associates, 2009.
[6]
C. F. Bolz and L. Tratt. The impact of meta-tracing on vm design and implementation. SCICO, pages 408–421, Feb. 2015.
[7]
G. Bracha and D. Ungar. Mirrors: Design principles for metalevel facilities of object-oriented programming languages. In Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA ’04, pages 331–344. ACM, 2004.
[8]
M. Braux and J. Noyé. Towards partially evaluating reflection in java. In Proceedings of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, PEPM ’00, pages 2–11. ACM, 1999.
[9]
C. Bruni, S. Ducasse, I. Stasenko, and G. Chari. Benzo: Reflective Glue for Low-level Programming. In International Workshop on Smalltalk Technologies, Aug. 2014.
[10]
S. Burckhardt, M. Fahndrich, P. de Halleux, S. McDirmid, M. Moskal, N. Tillmann, and J. Kato. It’s alive! continuous feedback in ui programming. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13, pages 95–104. ACM, 2013.
[11]
M. Chevalier-Boisvert, E. Lavoie, M. Feeley, and B. Dufour. Bootstrapping a self-hosted research virtual machine for javascript: An experience report. In Proceedings of the 7th Symposium on Dynamic Languages, DLS ’11, pages 61–72. ACM, 2011.
[12]
D. Frampton, S. M. Blackburn, P. Cheng, R. J. Garner, D. Grove, J. E. B. Moss, and S. I. Salishev. Demystifying magic: High-level low-level programming. In Proceedings of the 2009 ACM SIGPLAN /SIGOPS International Conference on Virtual Execution Environments, VEE ’09, pages 81–90. ACM, 2009.
[13]
N. Geo ffray, G. Thomas, J. Lawall, G. Muller, and B. Folliot. Vmkit: A substrate for managed runtime environments. In Proceedings of the 6th ACM SIGPLAN /SIGOPS International Conference on Virtual Execution Environments, VEE ’10, pages 51–62. ACM, 2010.
[14]
M. Haupt, C. Gibbs, B. Adams, S. Timbermont, Y. Coady, and R. Hirschfeld. Disentangling virtual machine architecture. Software, IET, June 2009.
[15]
D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the future: The story of squeak, a practical smalltalk written in itself. In Proceedings of the 12th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA ’97, pages 318–326. ACM, 1997.
[16]
G. Kiczales and J. D. Rivieres. The Art of the Metaobject Protocol. MIT Press, 1991.
[17]
P. Maes. Concepts and experiments in computational reflection. In Conference Proceedings on Object-oriented Programming Systems, Languages and Applications, OOPSLA ’87, pages 147–155. ACM, 1987.
[18]
J. Malenfant, M. Jacques, and F. N. Demers. A tutorial on behavioral reflection and its implementation. Reflection ’96 Conference, 1996.
[19]
S. Marr, C. Seaton, and S. Ducasse. Zero-overhead metaprogramming: Reflection and metaobject protocols fast and without compromises. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2015, pages 545–554. ACM, 2015.
[20]
S. McDirmid. Living it up with a live programming language. In Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications, OOPSLA ’07, pages 623–638. ACM, 2007.
[21]
B. Meyer. Object-oriented Software Construction. Prentice-Hall, Inc., 1997.
[22]
E. Miranda. The Cog Smalltalk virtual machine. In Proceedings of the 5th Workshop on Virtual Machines and Intermediate Languages, VMIL ’11. ACM, 2011.
[23]
B. Redmond and V. Cahill. Supporting unanticipated dynamic adaptation of application behaviour. In Proceedings of the 16th European Conference on Object-Oriented Programming, ECOOP ’02, pages 205–230. Springer-Verlag, 2002.
[24]
J. Ressia, A. Bergel, and O. Nierstrasz. Object-centric debugging. In Proceedings of the 34th International Conference on Software Engineering, ICSE ’12, pages 485–495. IEEE Press, 2012.
[25]
A. Rigo and S. Pedroni. Pypy’s approach to virtual machine construction. In Companion to the 21st ACM SIGPLAN Symposium on Object-oriented Programming Systems, Languages, and Applications, OOPSLA ’06, pages 944–953. ACM, 2006.
[26]
G. Salvaneschi, C. Ghezzi, and M. Pradella. An analysis of language-level support for self-adaptive software. TAAS, 8(2):7, 2013.
[27]
B. C. Smith. Reflection and semantics in lisp. In Proceedings of the 11th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL ’84, pages 23–35. ACM, 1984.
[28]
E. Tanter, J. Noyé, D. Caromel, and P. Cointe. Partial behavioral reflection: Spatial and temporal selection of reification. In Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications, OOPSLA ’03, pages 27–46. ACM, 2003.
[29]
M. S. Tschantz and M. D. Ernst. Javari: Adding reference immutability to java. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA ’05, pages 211–230. ACM, 2005.
[30]
D. Ungar, A. Spitz, and A. Ausch. Constructing a metacircular virtual machine in an exploratory programming environment. In Companion to the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA ’05, pages 11–20. ACM, 2005.
[31]
T. Verwaest, C. Bruni, D. Gurtner, A. Lienhard, and O. Niestrasz. Pinocchio: Bringing reflection to life with first-class interpreters. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’10, pages 774–789. ACM, 2010.
[32]
T. Verwaest, C. Bruni, M. Lungu, and O. Nierstrasz. Flexible object layouts: Enabling lightweight language extensions by intercepting slot access. In Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA ’11. ACM, 2011.
[33]
M. Wand and D. P. Friedman. The mystery of the tower revealed: A non-reflective description of the reflective tower. In Proceedings of the 1986 ACM Conference on LISP and Functional Programming, LFP ’86, pages 298–307. ACM, 1986.
[34]
E. Wernli, O. Nierstrasz, C. Teruel, and S. Ducasse. Delegation proxies: The power of propagation. In Proceedings of the 13th International Conference on Modularity, MODULARITY ’14, pages 1–12. ACM, 2014.
[35]
C. Wimmer, S. Brunthaler, P. Larsen, and M. Franz. Finegrained modularity and reuse of virtual machine components. In Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development, AOSD ’12, pages 203–214. ACM, 2012.
[36]
C. Wimmer, M. Haupt, M. L. Van De Vanter, M. Jordan, L. Daynès, and D. Simon. Maxine: An approachable virtual machine for, and in, java. ACM Trans. Archit. Code Optim., 9(4):30:1–30:24, Jan. 2013.
[37]
T. Würthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One vm to rule them all. In Proceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Onward! ’’13, pages 187–204. ACM, 2013.
[38]
Y. Zibin, A. Potanin, M. Ali, S. Artzi, A. Kie, un, and M. D. Ernst. Object and reference immutability using java generics. In Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering, ESEC-FSE ’07, pages 75–84. ACM, 2007.

Cited By

View all
  • (2022)Ease Virtual Machine Level Tooling with Language Level Ordinary Object PointersProceedings of the 14th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3563838.3567676(1-12)Online publication date: 29-Nov-2022
  • (2019)Fully Reflective Execution Environments: Virtual Machines for More Flexible SoftwareIEEE Transactions on Software Engineering10.1109/TSE.2018.281271545:9(858-876)Online publication date: 1-Sep-2019
  • (2017)Garbage collection and efficiency in dynamic metacircular runtimes: an experience reportACM SIGPLAN Notices10.1145/3170472.313384552:11(39-50)Online publication date: 24-Oct-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Onward! 2015: 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!)
October 2015
307 pages
ISBN:9781450336888
DOI:10.1145/2814228
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 October 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Dynamic Adaptation
  2. Live Programming
  3. Metaobject-Protocols
  4. Reflection
  5. Virtual Machines

Qualifiers

  • Research-article

Conference

SPLASH '15
Sponsor:

Acceptance Rates

Overall Acceptance Rate 40 of 105 submissions, 38%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 08 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2022)Ease Virtual Machine Level Tooling with Language Level Ordinary Object PointersProceedings of the 14th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3563838.3567676(1-12)Online publication date: 29-Nov-2022
  • (2019)Fully Reflective Execution Environments: Virtual Machines for More Flexible SoftwareIEEE Transactions on Software Engineering10.1109/TSE.2018.281271545:9(858-876)Online publication date: 1-Sep-2019
  • (2017)Garbage collection and efficiency in dynamic metacircular runtimes: an experience reportACM SIGPLAN Notices10.1145/3170472.313384552:11(39-50)Online publication date: 24-Oct-2017
  • (2017)Garbage collection and efficiency in dynamic metacircular runtimes: an experience reportProceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages10.1145/3133841.3133845(39-50)Online publication date: 24-Oct-2017
  • (2017)A Metaobject Protocol for Optimizing Application-Specific Run-Time VariabilityProceedings of the 12th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems10.1145/3098572.3098577(1-5)Online publication date: 19-Jun-2017
  • (2017)Fully-reflective VMs for ruling software adaptationProceedings of the 39th International Conference on Software Engineering Companion10.1109/ICSE-C.2017.144(229-231)Online publication date: 20-May-2017
  • (2016)Building efficient and highly run-time adaptable virtual machinesACM SIGPLAN Notices10.1145/3093334.298923452:2(60-71)Online publication date: 1-Nov-2016
  • (2016)LowcodeProceedings of the 11th edition of the International Workshop on Smalltalk Technologies10.1145/2991041.2991064(1-10)Online publication date: 23-Aug-2016
  • (2016)Building efficient and highly run-time adaptable virtual machinesProceedings of the 12th Symposium on Dynamic Languages10.1145/2989225.2989234(60-71)Online publication date: 1-Nov-2016
  • (2016)Static meta-object protocols: towards efficient reflective object-oriented languagesCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892694(160-167)Online publication date: 14-Mar-2016

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media