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.
Performance
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.
Roadmap
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