We present the load-calculus, used to model dynamic loading, and prove it sound. The calculus extends the polymorphic λ-calculus with a load primitive that dynamically loads terms that are closed, with respect to values. The calculus is meant to approximate the process of dynamic loading in TAL/Load [4], an version of Typed Assembly Language [7] extending with dynamic linking. To model the key aspects of TAL, the calculus contains references and facilities for named types. Loadable programs may refer to named types defined by the running program, and may export new types to code loaded later. Our approach follows the framework initially outlined by Glew et. al [3]. This calculus has been implemented in the TALx86 [6] version of Typed Assembly Language, and is used to implement a full-featured dynamic linking library, DLpop [4]. 1
|
811
|
Proof-Carrying Code
– Necula
- 1997
|
|
498
|
Wait-Free Synchronization
– Herlihy
- 1991
|
|
483
|
From System F to typed assembly language
– Morrisett, Walker, et al.
- 1998
|
|
256
|
Enforcing high-level protocols in low-level software
– Deline, Fähndrich
- 2001
|
|
241
|
Region-Based Memory Management
– Tofte, Talpin
- 1997
|
|
238
|
Garbage collection in an uncooperative environment
– Boehm, Weiser
- 1988
|
|
168
|
Typed memory management in a calculus of capabilities
– Crary, Walker, et al.
- 1999
|
|
133
|
Alias types
– Smith, Walker, et al.
- 2000
|
|
132
|
Region-based memory management in cyclone
– Grossman, Morrisett, et al.
- 2002
|
|
131
|
ARetargetable C Compiler: Design and Implementation
– Fraser, Hanson
- 1995
|
|
129
|
Program fragments, linking, and modularization
– CARDELLI
- 1997
|
|
123
|
Stack-based typed assembly language
– Morrisett, Crary, et al.
- 2000
|
|
118
|
TALx86: A realistic typed assembly language
– Morrisett, Crary, et al.
- 1999
|
|
117
|
A parameterized type system for race-free Java programs
– Boyapati, Rinard
- 2001
|
|
112
|
Dynamic software updating
– Hicks, Moore, et al.
- 2001
|
|
108
|
Morrisett. Alias types for recursive data structures
– Walker, Gregory
- 2000
|
|
100
|
Adoption and focus: Practical linear types for imperative programming
– Fähndrich, DeLine
- 2002
|
|
97
|
types can change the world
– Linear
- 1990
|
|
95
|
A toolkit for user-level file systems
– Mazieres
- 2001
|
|
86
|
Better static memory management: Improving region-based analysis of higher-order languages
– Aiken, Fähndrich, et al.
- 1995
|
|
76
|
Language support for regions
– Gay, Aiken
- 2001
|
|
72
|
Alias burying: Unique variables without destructive reads
– Boyland
|
|
68
|
Concurrent Programming in Erlang
– Armstrong, Virding, et al.
- 1996
|
|
60
|
Ownership types for safe regionbased memory management in real-time Java
– Boyapati, Sălcianu, et al.
|
|
59
|
Type-safe linking and modular assembly language
– Glew, Morrisett
- 1999
|
|
52
|
Runtime support for type-safe dynamic java classes
– Malabarba, Pandey, et al.
- 2000
|
|
52
|
Type-safe multithreading in cyclone
– Grossman
- 2003
|
|
49
|
Linear LISP—Look Ma, No Garbage
– Lively
- 1992
|
|
46
|
Copying and swapping: influences on the design of reusable software components
– Harms, Weide
- 1991
|
|
46
|
Type-preserving garbage collectors
– Wang, Appel
|
|
44
|
Reconsidering custom memory allocation
– Berger, Zorn, et al.
- 2002
|
|
44
|
A Practical Flow-Sensitive and Context-Sensitive C and C++ Memory Leak Detector
– Heine, Lam
- 2003
|
|
42
|
The ins and outs of Clean I/O
– Achten, Plasmeijer
- 1995
|
|
41
|
Dynamic C++ classes, a lightweight mechanism to update code in a running program
– Hjálmt´ysson, Gray
- 1998
|
|
40
|
Guava: A dialect of Javawithout data races
– Bacon, Strom, et al.
- 2001
|
|
37
|
On dynamically updating a computer program: From concept to prototype
– Frieder, Segal
- 1991
|
|
37
|
A formal framework for on-line software version change
– Gupta, Jalote, et al.
- 1996
|
|
34
|
Safe and flexible dynamic linking of native code
– Hicks, Weirich, et al.
- 2000
|
|
34
|
On-The-Fly Program Modification: Systems for Dynamic Updating
– Segal
- 1993
|
|
32
|
Combining region inference and garbage collection
– Hallenberg, Elsman, et al.
- 2002
|
|
28
|
On regions and linear types, in
– Walker, Watkins
|
|
27
|
DYMOS: A Dynamic Modification System
– Lee
- 1983
|
|
27
|
A direct approach to control-flow sensitive region-based memory management
– Henglein, Makholm, et al.
|
|
26
|
Checking and inferring local non-aliasing
– Aiken, Foster, et al.
- 2003
|
|
26
|
Safe kernel programming in the oke
– Bos, Samwel
- 2002
|
|
23
|
Upgrading transport protocols using untrusted mobile code
– Patel, Whitaker, et al.
- 2003
|
|
20
|
Dynamic ML without dynamic types
– Gilmore, Kirli, et al.
- 1997
|
|
17
|
External uniqueness
– Clarke, Wrigstad
- 2003
|
|
16
|
Sharing in Typed Module Assembly Language
– Duggan
- 2000
|
|
16
|
DITools: Application-level Support for Dynamic Extension and Flexible Composition
– Serra, Navarro, et al.
- 2000
|