Safe programming at the c level of abstraction

作者: Greg Morrisett , Daniel Joseph Grossman

DOI:

关键词:

摘要: Memory safety and type are invaluable features for building robust software. However, most safe programming languages at a high level of memory management. This control is one reason C remains the de facto standard writing systems software or extending legacy already written in C. The Cyclone language aims to bring C-style without sacrificing programmer necessary low-level A combination advanced compile-time techniques, run-time checks, modern helps achieve this goal. This dissertation focuses on techniques. system with quantified types effects prevents incorrect casts, dangling-pointer dereferences, data races. An intraprocedural flow analysis dereferencing NULL pointers uninitialized memory, extensions it can prevent proofs demonstrate that these techniques sound: violations they address become impossible. A less formal evaluation establishes two other design goals equal importance. First, expressive. Although rejects some programs, permits many idioms regarding generic code, manual management, lock-based synchronization, NULL-pointer checking, initialization. Second, represents unified approach. small collection addresses range problems, indicating problems more alike than originally seem.

参考文章(193)
Cormac Flanagan, Martín Abadi, Types for Safe Locking european symposium on programming. pp. 91- 108 ,(1999) , 10.1007/3-540-49099-X_7
Geoffrey Smith, Dennis Volpano, Towards an ML-Style Polymorphic Type System for C european symposium on programming. pp. 341- 355 ,(1996) , 10.1007/3-540-61055-3_47
Mark Garland Hayden, The Ensemble System Cornell University. ,(1998)
Cormac Flanagan, K. Rustan M. Leino, Houdini, an Annotation Assistant for ESC/Java formal methods. pp. 500- 517 ,(2001) , 10.1007/3-540-45251-6_29
Paul H. J. Kelly, Richard W. M. Jones, Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs Proceedings of the 3rd International Workshop on Automatic Debugging; 1997 (AADEBUG-97). pp. 13- 26 ,(1997)
David Walker, Greg Morrisett, Alias Types for Recursive Data Structures Lecture Notes in Computer Science. pp. 177- 206 ,(2000) , 10.1007/3-540-45332-6_7
Greg Morrisett, Trevor Jim, James Cheney, Mike Hicks, Yanling Wang, Dan Grossman, Formal Type Soundness for Cyclone''s Region System Cornell University. ,(2001)
Frank Yellin, Tim Lindholm, The Java Virtual Machine Specification ,(1996)
Robert Harper, Peter Lee, Frank Pfenning, The Fox Project: Advanced Language Technology for Extensible Systems Defense Technical Information Center. ,(1998) , 10.21236/ADA341557
Suan Hsi Yong, Susan Horwitz, Reducing the Overhead of Dynamic Analysis Electronic Notes in Theoretical Computer Science. ,vol. 70, pp. 158- 178 ,(2002) , 10.1016/S1571-0661(04)80583-8