On dynamically updating a computer program: from concept to prototype
Journal of Systems and Software - Special issue on software maintenance
Inheritance as implicit coercion
Information and Computation
Set based program analysis
A type system for expressive security policies
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typed memory management via static capabilities
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type-based hot swapping of running modules (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
A Technique for Dynamic Updating of Java Software
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Dynamic software updating
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
An API for Runtime Code Patching
International Journal of High Performance Computing Applications
Dynamic C++ classes: a lightweight mechanism to update code in a running program
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Understanding source code evolution using abstract syntax tree matching
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
Develop once deploy anywhere achieving adaptivity with a runtime linker/loader framework
ARM '05 Proceedings of the 4th workshop on Reflective and adaptive middleware systems
Improving dynamic update for operating systems
Proceedings of the twentieth ACM symposium on Operating systems principles
Practical dynamic software updating for C
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Live updating operating systems using virtualization
Proceedings of the 2nd international conference on Virtual execution environments
A flexible model for dynamic linking in Java and C#
Theoretical Computer Science
Providing dynamic update in an operating system
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
POLUS: A POwerful Live Updating System
ICSE '07 Proceedings of the 29th international conference on Software Engineering
OPUS: online patches and updates for security
SSYM'05 Proceedings of the 14th conference on USENIX Security Symposium - Volume 14
Mutatis Mutandis: Safe and predictable dynamic software updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Calculus of Components with Dynamic Type-Checking
Electronic Notes in Theoretical Computer Science (ENTCS)
Designing Run-Time Fault-Tolerance Using Dynamic Updates
SEAMS '07 Proceedings of the 2007 International Workshop on Software Engineering for Adaptive and Self-Managing Systems
Oz/K: a kernel language for component-based open programming
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
A calculus of open modules: call-by-need strategy and confluence
Mathematical Structures in Computer Science
HotDep'07 Proceedings of the 3rd workshop on on Hot Topics in System Dependability
Local reasoning about a copying garbage collector
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamic rebinding for marshalling and update, via redex-time and destruct-time reduction
Journal of Functional Programming
UpgradeJ: Incremental Typechecking for Class Upgrades
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
A Parametric Calculus for Mobile Open Code
Electronic Notes in Theoretical Computer Science (ENTCS)
From Java to UpgradeJ: an empirical study
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Delegation: a language facility for dynamic software adaptation
ACM SIGSOFT Software Engineering Notes
Sharing classes between families
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Migrating protocols in multi-threaded message-passing systems
Proceedings of the 2nd International Workshop on Hot Topics in Software Upgrades
A framework for type safe exchange of mobile code
TGC'06 Proceedings of the 2nd international conference on Trustworthy global computing
A method of safety analysis for runtime code update
ASIAN'06 Proceedings of the 11th Asian computing science conference on Advances in computer science: secure software and related issues
Semistructured merge: rethinking merge in revision control systems
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
A dynamic class construct for asynchronous concurrent objects
FMOODS'05 Proceedings of the 7th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
On correctness of dynamic protocol update
FMOODS'05 Proceedings of the 7th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Type-safe optimisation of plugin architectures
SAS'05 Proceedings of the 12th international conference on Static Analysis
Banshee: a scalable constraint-based analysis toolkit
SAS'05 Proceedings of the 12th international conference on Static Analysis
Modular software upgrades for distributed systems
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Evolution on-the-fly with paradigm
COORDINATION'06 Proceedings of the 8th international conference on Coordination Models and Languages
Type-Safe runtime class upgrades in creol
FMOODS'06 Proceedings of the 8th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Distributed application tamper detection via continuous software updates
Proceedings of the 28th Annual Computer Security Applications Conference
Hi-index | 0.00 |
Dynamic software updates can be used to fix bugs or add features to a running program without downtime. Essential for some applications and convenient for others, low-level dynamic updating has been used for many years. Perhaps surprisingly, there is little high-level understanding or language support to help programmers write dynamic updates effectively.To bridge this gap, we present Proteus, a core calculus for dynamic software updating in C-like languages that is flexible, safe, and predictable. Proteus supports dynamic updates to functions (even active ones), to named types and to data, allowing on-line evolution to match source-code evolution as we have observed it in practice. We ensure updates are type-safe by checking for a property we call "con-freeness" for updated types t at the point of update. This means that non-updated code will not use t concretely beyond that point (concrete usages are via explicit coercions) and thus t's representation can safely change. We show how con-freeness can be enforced dynamically for a particular program state. We additionally define a novel and efficient static updateability analysis to establish con-freeness statically, and can thus automatically infer program points at which all future (well-formed) updates will be type-safe. We have implemented our analysis for C and tested it on several well-known programs.