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
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
Planned in future
- Support for x86-64 architecture (in 8th milestone)
- more code optimizations
- Support for non-standard memory managers
- compatibility routines for Bohem's GC and Apache APR