ACM Transactions on Programming Languages and Systems (TOPLAS)
IGOR: a system for program debugging via reversible execution
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Stores and partial continuations as first-class objects in a language and its environment
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
A simple and unifying approach to subjective objects
Theory and Practice of Object Systems - Special issue on subjectivity in object-oriented systems
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
On optimistic methods for concurrency control
ACM Transactions on Database Systems (TODS)
Purely Functional Data Structures
Purely Functional Data Structures
Packrat parsing:: simple, powerful, lazy, linear time, functional pearl
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
NAMING AND SYNCHRONIZATION IN A DECENTRALIZED COMPUTER SYSTEM
NAMING AND SYNCHRONIZATION IN A DECENTRALIZED COMPUTER SYSTEM
Parsing expression grammars: a recognition-based syntactic foundation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Classbox/J: controlling the scope of change in Java
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Designing croquet's TeaTime: a real-time, temporal environment for active object cooperation
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamic state restoration using versioning exceptions
Higher-Order and Symbolic Computation
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
OMeta: an object-oriented language for pattern matching
Proceedings of the 2007 symposium on Dynamic languages
Encapsulating and exploiting change with changeboxes
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
EXDAMS: extendable debugging and monitoring system
AFIPS '69 (Spring) Proceedings of the May 14-16, 1969, spring joint computer conference
Experimenting with programming languages
Experimenting with programming languages
Concurrent programming with revisions and isolation types
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Enhancing javascript with transactions
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
CoExist: overcoming aversion to change
Proceedings of the 8th symposium on Dynamic languages
Interruptible context-dependent executions: a fresh look at programming context-aware applications
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
What else and where else: two worthwhile questions for an information interface
Proceedings of the 7th Nordic Conference on Human-Computer Interaction: Making Sense Through Design
Hi-index | 0.00 |
The state of an imperative program--e.g., the values stored in global and local variables, arrays, and objects' instance variables--changes as its statements are executed. These changes, or side effects, are visible globally: when one part of the program modifies an object, every other part that holds a reference to the same object (either directly or indirectly) is also affected. This paper introduces worlds, a language construct that reifies the notion of program state and enables programmers to control the scope of side effects. We investigate this idea by extending both JavaScript and Squeak Smalltalk with support for worlds, provide examples of some of the interesting idioms this construct makes possible, and formalize the semantics of property/field lookup in the presence of worlds. We also describe an efficient implementation strategy (used in our Squeak-based prototype), and illustrate the practical benefits of worlds with two case studies.