次: , 上: Design Advice


3.1 他の実装との互換性

ときには例外もあるが、GNU用のユーティリティプログラムやライブラリは、 バークレーUnixの上位互換であるべきで、ansi Cがその振る舞いを規定 しているなら、ansi Cの上位互換に、posixがその振る舞いを規定 していれば、posixの上位互換であるべきだ。

もしこれらの標準が矛盾していたら、それぞれに対し互換モードを提供する と便利だ。

ansi Cやposixはたくさんの拡張を禁じている。拡張をどんな風に 行っても構わない、そうして、それを使わないための、`--ansi'とか `--posix'とか`--compatible'オプションを含めなさい。 しかしながら、その拡張が実際のプログラムやスクリプトをおかしくする、 十分な可能性があるなら、それは本当のところ上位互換ではない。そのインタ ーフェースを再設計してみなさい。

多くのGNUプログラムは、環境変数POSIXLY_CORRECTが定義されている と(例え、それは空の値と定義されていても)、posixと抵触する拡張を 行わない。適切であれば、あなたのプログラムをこの変数を認識するように してください。

ある機能が(プログラムやコマンド・ファイルではなく)ユーザだけに使われ、 かつ、それがUnixでは貧弱なものなら、それをまるで違った、もっと良いもの に完全に置き換えてしまってよい。(例えば、viはEmacsと置き換えら れている。) しかし互換機能も提供するのが良い。(フリーなviクローン があるので、我々はそれを提供する。)

バークレーUnixにはない、便利な機能の追加は歓迎である。