Fail-Safe C: Current status and Roadmap

Limitations and Future Improvements

Known bugs and feature-wishes for the Fail-Safe C is managed using Trac issue tracking system.

  • Known limitation on signal handling:
    • There are a small chance of possible race condition on pointer manipulations inside signal handlers, which are difficult to solve on the IA-32 architecture.
    • Current library inhibits reentry checking of the non-reentrant standard library functions.

For updated status of the bugs found in the implementation, refer the Fail-Safe C tracker page.


Some benchmark results show that the execution time are around 3 to 5 times of the original, natively-compiled programs, in avarage. However, the number heavily depends on the type of programs, the way it is written, back-end compiler versions, underlying processors, and other environmental parameters. The smallest performance overhead for tested benchmark items is only +6%, but this is not likely to be achieved in real programs. In the worst case, it becomes about 6 to 7 times.

We want that number to be “around two times” in future, and are planning to implement various static analysis.


6th milestone (release 1.0), April 2008

  • Implementation for IA32/Linux
  • >500 library functions
    • most of BSD or SVR.4 functions in POSIX specification.
    • supports BIND9, OpenSSL, OpenSSH, and thttpd
  • code generation helpers for wrapper function implementations
  • static/dynamic type analysis for heap-allocated objects
  • source tree refactoring
    • “make install” support

7th milestone (release 1.5), June 2009

  • cross compiler support
  • ARM/Linux, MIPSel/Linux support
  • Licencing term modified

intermediate milestone (release 1.6)

  • implementation refactoring

release 2 candidate

  • Support for x86-64 architecture (in 8th milestone)
  • more code optimizations
  • Support for mmap

Planned in future

  • Support for non-standard memory managers
    • compatibility routines for Bohem’s GC and Apache APR