skip to main content
10.1145/1094855.1094865acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Constructing a metacircular Virtual machine in an exploratory programming environment

Published:16 October 2005Publication History

ABSTRACT

Can virtual machine developers benefit from religiously observing the principles more often embraced for exploratory programming? To find out, we are concurrently constructing two artifacts--a Self VM entirely in Self (the Klein VM), and a specialized development environment--with strict adherence to pure object-orientation, metacircularity, heavy code reuse, reactivity, and mirror-based reflection. Although neither artifact is yet complete, the environ-ment supports many remote debugging and incremental update operations, and the exported virtual machine has successfully run the whole compiler.As a result of our adherence to these principles, there have been both positive and negative consequences. We have been able to find and exploit many opportunities for parsimony. For example, the very same code creates objects in the bootstrap image, builds ob-jects in the running VM, and implements a remote debugger. On the other hand, we have been forced to expend effort to optimize the performance of the environment. Overall, this approach trades off the performance of the environment against the architectural sim-plicity and ease of development of the resulting VM artifact. As computers continue to improve in performance, we believe that this approach will increase in value.

Skip Supplemental Material Section

Supplemental Material

p11-ungar_56k.mp4

mp4

34.4 MB

p11-ungar_7687k.mp4

mp4

243.3 MB

References

  1. B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P.Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeño Virtual Machine. IBM System Journal, Vol 39, No 1, February 2000. http://www 106.ibm.com/developerworks/java/library/j-jalapeno]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Bowen Alpern, C. R. Attanasio, John J. Barton, Anthony Cocchi, Susan Flynn Hummel, Derek Lieber, Ton Ngo, Mark Mergen, Janice C. Shepherd, Stephen Smith. Implementing Jalapeño in Java. In Proceeings of the 1999 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA'99), volume 34.10 of ACM SIGPLAN Notices, pages 314--324. ACM Press, November 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Ole Agesen and David Ungar. Sifting Out the Gold: Delivering Compact Applications From an Exploratory Object-Oriented Environment. In OOPSLA'94 Conference Proceedings, Portland, OR.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Gilad Bracha and David Ungar. Mirrors: Design Principles for Meta-level Facilities of Object-Oriented Programming Languages. In OOPSLA'04 Conference Proceedings,, October 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Craig Chambers. The Design and Implementation of the Self Compiler, an Optimizing Compiler for Object-Oriented Programming Languages. Ph.D. Dissertation, Stanford University, 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Craig Chambers and David Ungar. Customization: Optimizing Compiler Technology for Self, a Dynamically-Typed Object-Oriented Programming Language. In PLDI'89, pp. 146--160, Portland, OR, June, 1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented Language Based on Prototypes. In OOPSLA '89 Conference Proceedings, pp. 49--70, New Orleans, LA, October, 1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. Dmitriev. Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications. Presented at the Workshop on Engineering Complex Object-Oriented Systems for Evolution, at OOPSLA'01, October, 2001.]]Google ScholarGoogle Scholar
  9. Urs Hölzle. Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming. Ph.D. Dissertation, Stanford University, 1994.]]Google ScholarGoogle Scholar
  10. Urs Hölzle and David Ungar. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. In PLDI'94 Conference Proceedings, pp. 326--336, Orlando, FL, June 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Urs Hölzle, David Ungar. A Third-Generation Self Implementation: Reconciling Responsiveness with Performance. In OOPSlA'94 Conference Proceedings, Portland, OR, August 1994.]]Google ScholarGoogle Scholar
  12. Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. The Story of Squeak, A Practical Smalltalk Written in Itself. In OOPSLA'97 Conference Proceedings, Atlanta, GA (October 5-9, 1997), pp. 318--326. http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Krasner, Glen (editor). Smalltalk-80: Bits of History, Words of Advice. Addison-Wesley, 1983.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Ton Ngo and John Barton, Debugging by Remote Reflection, Euro-Par 2000, Munich, Germany, August 2000. http://jikesrvm.sourceforge.net/info/pubs.shtml#remotereflect]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ian Piumarta. Late Binding and Dynamic Implementation. Invitational Workshop on the Future of Virtual Execution Environments, Sept. 2004. http://www.research.ibm.com/vee04/video.html#piumarta]]Google ScholarGoogle Scholar
  16. Self language website. http://research.sun.com/self]]Google ScholarGoogle Scholar
  17. Randall B. Smith and David Ungar. Programming as an Experience: The Inspiration for Self. In ECOOP '95 Conference Proceedings, Aarhus, Denmark, August 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Nik Shaylor, Douglas Simon, William Bush. A Java Virtual Machine Architecture for Very Small Devices. In LCTES'03 Conference Proceedings, pp 34--41, San Diego, CA, July 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Ken Thompson. Reflections on Trusting Trust. In CACM, Vol. 27, No. 8, August 1984, pp. 761--763. Also in ACM Turing Award Lectures: The First Twenty Years 1965-1985, Copyright 1987, and in Computers Under Attack: Intruders, Words and Viruses, Copyright 1990, both from the ACM press. http://www.acm.org/classics/sep95/]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. David Ungar. Annotating Objects for Transport to Other Worlds. In OOPSLA'95, pp 73--87, Oct. 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Constructing a metacircular Virtual machine in an exploratory programming environment

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader