Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Abstract continuations: a mathematical semantics for handling full jumps
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On dynamically updating a computer program: from concept to prototype
Journal of Systems and Software - Special issue on software maintenance
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
Quasi-static scoping: sharing variable bindings across multiple lexical scopes
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Metalevel building blocks for modular systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
A library of high level control operators
ACM SIGPLAN Lisp Pointers
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A generalization of exceptions and control in ML-like languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
A Web navigator with applets in Caml
Proceedings of the fifth international World Wide Web conference on Computer networks and ISDN systems
A lambda-calculus for dynamic binding
Theoretical Computer Science - Special issue: theoretical aspects of coordination languages
Trust and partial typing in open systems of mobile agents
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Distributed systems (2nd Ed.)
Implicit parameters: dynamic scoping with static types
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)
SEDA: an architecture for well-conditioned, scalable internet services
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
Theoretical Computer Science
Type-based hot swapping of running modules (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A Syntactic Theory of Dynamic Binding
Higher-Order and Symbolic Computation
Partial Continuations as the Difference of Continuations - A Duumvirate of Control Operators
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
On Implementations and Semantics of a Concurrent Programming Language
CONCUR '97 Proceedings of the 8th International Conference on Concurrency Theory
Sharing in Typed Module Assembly Language
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Safe and Flexible Dynamic Linking of Native Code
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Safe Dynamic Binding in the Join Calculus
TCS '02 Proceedings of the IFIP 17th World Computer Congress - TC1 Stream / 2nd IFIP International Conference on Theoretical Computer Science: Foundations of Information Technology in the Era of Networking and Mobile Computing
FoSSaCS '98 Proceedings of the First International Conference on Foundations of Software Science and Computation Structure
Secure Composition of Untrusted Code: Wrappers and Causality Types
CSFW '00 Proceedings of the 13th IEEE workshop on Computer Security Foundations
How to design a system in which modules can be changed on the fly
ICSE '76 Proceedings of the 2nd international conference on Software engineering
Compilation of extended recursion in call-by-value functional languages
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Dymos: a dynamic modification system
Dymos: a dynamic modification system
Dynamic software updating
Dynamic rebinding for marshalling and update, with destruct-time ?
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
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
Mutatis mutandis: safe and predictable dynamic software updating
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Type-safe distributed programming for OCaml
Proceedings of the 2006 workshop on ML
Providing dynamic update in an operating system
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
Reducing downtime due to system maintenance and upgrades
LISA '05 Proceedings of the 19th conference on Large Installation System Administration Conference - Volume 19
OPUS: online patches and updates for security
SSYM'05 Proceedings of the 14th conference on USENIX Security Symposium - Volume 14
DITools: application-level support for dynamic extension and flexible composition
ATEC '00 Proceedings of the annual conference on USENIX Annual Technical Conference
Flash: an efficient and portable web server
ATEC '99 Proceedings of the annual conference on USENIX Annual Technical Conference
Acute: High-level programming language design for distributed computation
Journal of Functional Programming
Modular software upgrades for distributed systems
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Compilation of extended recursion in call-by-value functional languages
Higher-Order and Symbolic Computation
ReCaml: execution state as the cornerstone of reconfigurations
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example, when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically, it is provided only by ad hoc mechanisms that lack clean semantics. In this paper, we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to the simply typed call-by-value λ calculus. To do so, we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex-time and destruct-time strategies. The latter forms the basis for a λmarsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically typed. We sketch an extension of λmarsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a λupdate calculus with simple primitives to provide type-safe updating of running code. We show how the ideas of this simple calculus extend to more real-world, module-level dynamic updating in the style of Erlang. We thereby establish primitives and a common semantic foundation for a variety of real-world dynamic rebinding requirements.