Fail-Safe C: a memory-safe compiler for the C language
About Fail-Safe C
Fail-Safe C is a memory-safe implementation of the full ANSI C language. More precisely, it detects and disallows all unsafe operations, yet conforming to the full ANSI C standard (including casts and unions) and even supporting many "dirty tricks" common in many existing programs which do not strictly conform to the standard. This work also proposes several techniques---both compile-time and runtime---to reduce the overhead of runtime checks. By using the Fail-Safe C compiler, programmers can easily make their programs safe without performing heavy rewriting or porting of their code.
On 11 April 2008 we have published "Release 1" version to the public.
News: version 1.6.0 released (02 Nov 2009, revision 2065)
Development of the part of the runtime system for the Fail-Safe C System is partially supported by the "New-generation Information Security R&D Program" from the Ministry of Economy, Trade and Industry (METI).
Part of the library development is done jointly with Lepidum, Co. Ltd.
Portability and cross-building support is implemented in the research project "Security technology for embedded systems", under the Programs of Special Coordination Funds for Promoting Science and Technology from Japan.
In University of Tokyo, this work was partially supported by research fellowships of the Japan Society for the Promotion of Science (JSPS) for Young Scientists. Some of the very early stage of this work was also partially supported by Research for the Future Program "Intelligence Information and Advanced Information Processing", Japan Society for the Promotion of Science (JSPS).
Some derived research projects of Fail-Safe C are undertaken by the following groups:
- A C-to-Java source converter using Fail-Safe C techniques --- in Kobayashi Laboratory, Tohoku University
- VitC: A C implementation which prevents information leakage --- in Yonezawa Laboratory, University of Tokyo