Smalltalk-80: bits of history, words of advice
Smalltalk-80: bits of history, words of advice
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Annotating objects for transport to other worlds
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Communications of the ACM
Programming as an Experience: The Inspiration for Self
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
A java virtual machine architecture for very small devices
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
IBM Systems Journal
Mirrors: design principles for meta-level facilities of object-oriented programming languages
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java™ on the bare metal of wireless sensor devices: the squawk Java virtual machine
Proceedings of the 2nd international conference on Virtual execution environments
The Project Maxwell assembler system
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
PyPy's approach to virtual machine construction
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Proceedings of the third ACM SIGPLAN conference on History of programming languages
The maxine virtual machine and inspector
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Open, Extensible Object Models
Self-Sustaining Systems
Demystifying magic: high-level low-level programming
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Improving compiler-runtime separation with XIR
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Pinocchio: bringing reflection to life with first-class interpreters
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report
Proceedings of the 7th symposium on Dynamic languages
ALIA4J's [(just-in-time) compile-time] MOP for advanced dispatching
Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11
Live and heterogeneous migration of execution environments
OTM'06 Proceedings of the 2006 international conference on On the Move to Meaningful Internet Systems: AWeSOMe, CAMS, COMINF, IS, KSinBIT, MIOS-CIAO, MONET - Volume Part II
Unpicking the knot: teasing apart VM/application interdependencies
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
Fine-grained modularity and reuse of virtual machine components
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Multi-level virtual machine debugging using the java platform debugger architecture
PSI'09 Proceedings of the 7th international Andrei Ershov Memorial conference on Perspectives of Systems Informatics
Maxine: An approachable virtual machine for, and in, java
ACM Transactions on Architecture and Code Optimization (TACO) - Special Issue on High-Performance Embedded Architectures and Compilers
Bypassing portability pitfalls of high-level low-level programming
Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
Hi-index | 0.00 |
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.