Wednesday, October 29th, 2008
Siebel Center, Room 4405
Speaker: Dr. David Gay, Intel Research Labs Berkeley
C remains a very widely used systems programming language, with many advantages: widely known, supported by many tools, good access to low-level hardware, etc. But C also makes it unnecessarily hard to produce safe and reliable programs, a particularly significant problem for systems and multi-threaded code. Modern languages address many of these issues, but porting existing code to a new language is often impractical for large systems. Static analyses of existing C code can find some problems, but guaranteeing safety is hampered by extensive use of unsafe features.
In the Ivy project, we have designed small extensions to C that address the classic problems of type and memory safety (Deputy and HeapSafe), and the increasingly-important problem of data-sharing in threaded programs (SharC). All of these extensions require small, tractable changes to existing code, and have been validated on substantial code bases - a bootable Linux kernel for Deputy and HeapSafe, and several Linux-based threaded applications for SharC.
In this talk, I will give a brief overview of Deputy (type safety) and HeapSafe (deallocation safety), and concentrate on SharC (short for "Sharing Checker") that allows a user to write lightweight annotations to declare how they believe objects are being shared between threads in their program. SharC then uses a combination of static and dynamic analyses to check that the program conforms to this specification.
David Gay obtained his PhD, on region-based memory management, from UC Berkeley in 2001. David was one of the designers and principal implementer of the nesC language, the C dialect used to implement the TinyOS sensor network operating system and its applications. David subsequently worked on various parts of the TinyOS operating system. David is now working on the Ivy project, which aims to help programmers write correct and high-performance parallel C code.