Garbage collection in an uncooperative environment
Software—Practice & Experience
Copying and Swapping: Influences on the Design of Reusable Software Components
IEEE Transactions on Software Engineering
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
The measured cost of conservative garbage collection
Software—Practice & Experience
Better static memory management: improving region-based analysis of higher-order languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Region-based memory management
Information and Computation
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-preserving garbage collectors
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An efficient, incremental, automatic garbage collector
Communications of the ACM
Typed memory management via static capabilities
ACM Transactions on Programming Languages and Systems (TOPLAS)
Alias burying: unique variables without destructive reads
Software—Practice & Experience - Special issue on aliasing in object-oriented systems
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Pointer analysis: haven't we solved this problem yet?
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
On regions and linear types (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Combining region inference and garbage collection
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Reconsidering custom memory allocation
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An Extension of System F with Subtyping
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
A Toolkit for User-Level File Systems
Proceedings of the General Track: 2002 USENIX Annual Technical Conference
A direct approach to control-flow sensitive region-based memory management
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Checking and inferring local non-aliasing
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Ownership types for safe region-based memory management in real-time Java
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Adding operating system structure to language-based protection
Adding operating system structure to language-based protection
Safe programming at the c level of abstraction
Safe programming at the c level of abstraction
Experience with safe manual memory-management in cyclone
Proceedings of the 4th international symposium on Memory management
Quantifying the performance of garbage collection vs. explicit memory management
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Quantified types in an imperative language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automated detection of persistent kernel control-flow attacks
Proceedings of the 14th ACM conference on Computer and communications security
Archipelago: trading address space for reliability and security
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Implicit ownership types for memory management
Science of Computer Programming
Fractional Ownerships for Safe Memory Deallocation
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
Race-free and memory-safe multithreading: design and implementation in cyclone
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
A programming model for deterministic task parallelism
Proceedings of the 2011 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
Type-based safe resource deallocation for shared-memory concurrency
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Programming with permissions in Mezzo
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
QuaFL: a typed DSL for quantum programming
Proceedings of the 1st annual workshop on Functional programming concepts in domain-specific languages
Static safety guarantees for a low-level multithreaded language with regions
Science of Computer Programming
Hi-index | 0.00 |
The goal of the Cyclone project is to investigate how to make a low-level C-like language safe. Our most difficult challenge has been providing programmers with control over memory management while retaining safety. This paper describes our experience trying to integrate and use effectively two previously-proposed, safe memory-management mechanisms: statically-scoped regions and tracked pointers. We found that these typing mechanisms can be combined to build alternative memory-management abstractions, such as reference counted objects and arenas with dynamic lifetimes, and thus provide a flexible basis. Our experience -- porting C programs and device drivers, and building new applications for resource-constrained systems -- confirms that experts can use these features to improve memory footprint and sometimes to improve throughput when used instead of, or in combination with, conservative garbage collection.