制約事項・将来の改善事項
Fail-Safe C の既知のバグおよび改善点は、Trac システム で管理しています。
- シグナル関係の制約
- シグナルを利用した場合、IA-32 アーキテクチャの制約上ポインタ操作にごくわずかな race condition が存在します。
- 現状のライブラリは再入不可の標準入出力関数等に対する再入チェックをしていません。
性能
実験したいくつかのベンチマークプログラムの項目について、平均的な処理時間は、 通常のC言語コンパイラにより処理した安全でないプログラムと比べて およそ3〜5倍程度となっています。この値は、プログラムの処理内容の傾向、 プログラムの書き方の傾向、実マシンコード生成に用いたコンパイラのバージョン、 また使用したCPUによっても大きく異なっていますので、参考程度にお考え下さい。 また、ネットワーク処理などの入出力処理が過大となるサーバプログラムにおいては、 もう少し値が改善する可能性もあります。
ベンチマークテストの結果の最良値としては +6% (1.06倍)という項目がありますが、 一般的なプログラムにおいては現実的ではないと考えています。最悪値はおよそ6〜7倍です。
将来的には、この値を2倍程度まで改善したいと考えており、 静的解析やコード最適化などの改善を図っていきたいと考えています。
開発ロードマップ
第6 milestone (リリース 1.0), 2008年4月11日
- IA32/Linux 向け実装
- 500 以上の標準関数
- BSD および SVR.4 に含まれた多くの関数を POSIX 使用に基づいて実装
- BIND9, OpenSSL, OpenSSH, thttpd が動作
- 標準関数 wrapper 作成のための支援ツールの実装
- ヒープ上のオブジェクトに対する静的/動的型解析の導入
第7 milestone (リリース 1.5), 2009年6月16日
- クロスコンパイラのサポート
- ARM/Linux, MIPSel/Linux サポート
- ライセンス条項の変更
中間マイルストーン (リリース 1.6)
- 実装の「リファクタリング」
release 2 candidate
- x86-64 サポート (第8マイルストーン)
- コードの最適化の強化
- 非標準のメモリ管理ルーチンに対するサポートの一部 (mmap)
計画中
- 非標準のメモリ管理ルーチンに対するサポート
- Bohem GC 互換ライブラリ、Apache APR 互換ライブラリの提供