2000
DOI: 10.1145/363911.363923
|View full text |Cite
|
Sign up to set email alerts
|

Typed memory management via static capabilities

Abstract: Region-based memory management is an alternative to standard tracing garbage collection that makes operations such as memory deallocation explicit but verifiably safe. In this article, we present a new compiler intermediate language, called the Capability Language (CL), that supports region-based memory management and enjoys a provably safe type system. Unlike previous regionbased type systems, region lifetimes need not be lexically scoped, and yet the language may be checked for safety without complex analyse… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
53
0

Year Published

2003
2003
2012
2012

Publication Types

Select...
5
3
2

Relationship

2
8

Authors

Journals

citations
Cited by 98 publications
(53 citation statements)
references
References 53 publications
0
53
0
Order By: Relevance
“…Our unique pointers are closely related to typing mechanisms suggested by other researchers, including linear types [30], ownership types [8], alias types [27], and capability types [31]. The critical idea with all of these proposals is to make it easy to track locally the state of an object by forbidding uncontrolled aliasing.…”
Section: Introductionmentioning
confidence: 99%
“…Our unique pointers are closely related to typing mechanisms suggested by other researchers, including linear types [30], ownership types [8], alias types [27], and capability types [31]. The critical idea with all of these proposals is to make it easy to track locally the state of an object by forbidding uncontrolled aliasing.…”
Section: Introductionmentioning
confidence: 99%
“…The computational effects we track are the privileged operations that a function may invoke, which determine the roles that are allowed to invoke the function. Roles are also similar to capabilities [29], which are a dual to effects. However, roles are disjunctive rather than conjunctive: it is sufficient for an execution to hold any of a function's roles, while capability systems require all capabilities to be held to ensure proper execution.…”
Section: Related Workmentioning
confidence: 99%
“…In Proteus, updates occur at the granularity of individual definitions (whether types, variables or functions) as in λ update (rather than modules as in λ mod update ). Replacement definitions may have different types in comparision with their originals, and a novel type system based on capabilities (Walker et al 2000) is used to ensure type safety. The fact that possible update points are made explicit in the program text is a key to balancing the flexibility and safety of the system.…”
Section: Dynamic Updatementioning
confidence: 99%