|
ABSTRACT
The goal of the Cyclone project is to investigate type safety for low-level languages such as C. Our most difficult challenge has been providing programmers control over memory management while retaining type safety. This paper reports on our experience trying to integrate and effectively use two previously proposed, type-safe memory management mechanisms: statically-scoped regions and unique 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 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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Peter Achten and Rinus Plasmeijer. The ins and outs of Clean I/O. Journal of Functional Programming, 5(1):81--110, 1995.
|
 |
2
|
Alexander Aiken , Manuel Fähndrich , Raph Levien, Better static memory management: improving region-based analysis of higher-order languages, Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation, p.174-185, June 18-21, 1995, La Jolla, California, United States
|
 |
3
|
Alex Aiken , Jeffrey S. Foster , John Kodumal , Tachio Terauchi, Checking and inferring local non-aliasing, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
 |
4
|
|
| |
5
|
Gregory Bellella, editor. The Real-Time Specification for Java. Addison-Wesley, 2000.
|
| |
6
|
|
 |
7
|
Chandrasekhar Boyapati , Alexandru Salcianu , William Beebee, Jr. , Martin Rinard, Ownership types for safe region-based memory management in real-time Java, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
| |
8
|
|
| |
9
|
Dave Clarke and Tobias Wrigstad. External uniqueness is unique enough. In European Conference on Object-Oriented Programming (ECOOP), pages 176--200, July 2003.
|
| |
10
|
Cyclone, version 0.8. Available at http://www.eecs.harvard.edu/~greg/cyclone/.
|
 |
11
|
|
 |
12
|
|
| |
13
|
Matthew Fluet and Daniel Wang. Implementation and performance evaluation of a safe runtime system in Cyclone. In Informal Proceedings of the SPACE 2004 Workshop, January 2004.
|
 |
14
|
|
 |
15
|
Dan Grossman , Greg Morrisett , Trevor Jim , Michael Hicks , Yanling Wang , James Cheney, Region-based memory management in cyclone, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
 |
16
|
|
| |
17
|
|
| |
18
|
|
 |
19
|
|
 |
20
|
|
| |
21
|
Matthew Hertz and Emery Berger. Automatic vs. explicit memory management: Settling the performance debate. Technical Report CS TR-04-17, University of Massachussetts Department of Computer Science, 2004.
|
| |
22
|
Michael Hicks, Adithya Nagajaran, and Robbert van Renesse. MediaNet: User-defined adaptive scheduling for streaming data. In Proc. IEEE Conference on Open Architectures and Network Programming (OPENARCH), pages 87--96, April 2003.
|
| |
23
|
Trevor Jim , J. Greg Morrisett , Dan Grossman , Michael W. Hicks , James Cheney , Yanling Wang, Cyclone: A Safe Dialect of C, Proceedings of the General Track: 2002 USENIX Annual Technical Conference, p.275-288, June 10-15, 2002
|
| |
24
|
Doug Lea. A memory allocator. http://gee.cs.oswego.edu/dl/html/malloc.html.
|
| |
25
|
|
| |
26
|
Mike Muuss. The story of TTCP. http://ftp.arl.mil/~mike/ttcp.html.
|
| |
27
|
Niels Provos. libevent --- an event notification library. http://www.monkey.org/provos/libevent/.
|
| |
28
|
|
| |
29
|
Tachio Terauchi and Alex Aiken. Memory management with use-counted regions. Technical Report UCB//CSD-04-1314, University of California, Berkeley, March 2004.
|
| |
30
|
Mads Tofte, Lars Birkedal, Martin Elsman, Niels Hallenberg, Tommy Højfel Olesen, and Peter Sestoft. Programming with regions in the ML Kit (for version 4. Technical report, IT University of Copenhagen, September 2001.
|
| |
31
|
|
| |
32
|
Philip Wadler. Linear types can change the world! In Programming Concepts and Methods, April 1990. IFIP TC 2 Working Conference.
|
 |
33
|
|
| |
34
|
|
 |
35
|
|
 |
36
|
|
| |
37
|
Hongwei Xi and Frank Pfenning. Dependent types in practical programming. pages 214--227, January 1999.
|
| |
38
|
|
|