Colloquium
David Gay
Intel Research Berkeley
Thursday, August 28, 2008
3147 MEB
Lecture 11:00 a.m.
Host: John Regehr
Title: Ivy: Fixing C for a Multicore Future
Abstract
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.