A overview of modular smalltalk
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A syntactic approach to type soundness
Information and Computation
Using a prototype-based language for user interface: the Newton project's experience
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
More dynamic object reclassification: Fickle∥
ACM Transactions on Programming Languages and Systems (TOPLAS)
Maximum RPM
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
An Abstract Model of Java Dynamic Linking and Loading
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
A Fragment Calculus Towards a Model of Separate Compilation, Linking and Binary Compatibility
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Lazy modular upgrades in persistent object stores
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Polymorphic bytecode: compositional compilation for Java-like languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mutatis mutandis: safe and predictable dynamic software updating
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Common Lisp: The Language
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
The java module system: core design and semantic definition
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Dynamic Software Updates for Accelerating Scientific Discovery
ICCS '09 Proceedings of the 9th International Conference on Computational Science: Part I
Dynamic Classes: Modular Asynchronous Evolution of Distributed Concurrent Objects
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Aspect-based dynamic software updating: a model and its empirical evaluation
Proceedings of the tenth international conference on Aspect-oriented software development
Run-time phenomena in dynamic software updating: causes and effects
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Themes in information-rich functional programming for internet-scale data sources
DDFP '13 Proceedings of the 2013 workshop on Data driven functional programming
Separation logic for object-oriented programming
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In this paper we attack two significant issues that arise from constant component evolution: we propose language-level extensions that permit multiple, co-existing versions of classes and the ability to dynamically upgrade from one version of a class to another, whilst still maintaining type safety guarantees and requiring only lightweight extensions to the runtime infrastructure. We show how our extensions, whilst intuitive, provide a great deal of power by giving a number of examples. Given the subtlety of the problem, we formalize a core fragment of our language and prove a number of important safety properties.