Single UNIX Specification
Single UNIX Specification(SUS、唯一のUNIX仕様)は、"UNIX"を名乗ることができるコンピュータのオペレーティングシステム (OS) の標準規格全体を総称したものである。SUSは、IEEEと The Open Group の標準化作業の結果に基づくもので、Austin Group が開発および保守を行っている。
1980年代中頃、様々なUNIX系OSのインタフェースを標準化するプロジェクトが開始され、これらがSUSの元となった。標準化の必要性は様々なベンダーのシステムを使っている企業の要望によるもので、ベンダーの異なるシステムでのソフトウェア移植のコストをなるべく減らしたいということから始まった。その標準化のベースとしてUNIXが選択された。というのもUNIXはベンダーに依存していない中立なOSと考えられたからである。
この標準化作業の結果できたのが1988年の IEEE 1003(ISO/IEC 9945としても登録された)またはPOSIX (Portable Operating System Interface for uniX) である。
1990年代初期、それとは別にUNIX戦争の結果として、いくつかの主要ベンダーがCOSEアライアンスを結成し、Common API Specification または Spec 1170 と呼ばれる仕様を策定した。この仕様は無料で入手可能であったため、IEEEがアクセス料を徴収したPOSIXよりも一般化した。
1997年、the Open Group が Single UNIX Specification Version 2 (SUSv2) をリリース。この仕様は以下の部分から構成されている。
Base Definitions, Issue 5
System Interfaces and Headers, Issue 5
Commands and Utilities, Issue 5
Networking Services, Issue 5
X/Open Curses, Issue 4, Version 2
そして、これが UNIX 98 ブランドの中核となった。
1998年、Austin Group と呼ばれる共同ワーキンググループがこれらの仕様の統合を開始し、その成果が Single UNIX Specification Verision 3 (SUSv3) となり、POSIX:2001(正式には IEEE Std 1003.1-2001)としても採用された。これは2002年1月30日にリリースとなった。この仕様は以下の部分から構成されている。
Base Definitions, Issue 6
System Interfaces and Headers, Issue 6
Commands and Utilities, Issue 6
そして、これが UNIX 03 ブランドの中核となった。
2004年、POSIX:2001 の改訂版がリリースされ、2つの技術的訂正がなされている。これを POSIX:2004(正式には IEEE Std 1003.1-2004)と呼ぶ。
2008年12月、Austin Group は新たな大幅修正版 POSIX:2008(正式名称は IEEE Std 1003.1-2008)を公表した。これが Single UNIX Specification, Version 4 (SUSv4) の中核となっている。この仕様は以下の部分から構成されている。
Base Definitions, Issue 7
System Interfaces and Headers, Issue 7
Commands and Utilities, Issue 7
SUSv3 は全部で3700ページに及び、テーマ別に以下の4つに分けられている。
Base Definitions (XBD) - 仕様記述に使われる定義と約束事のリストと、準拠するシステムが必ず提供しなければならないC言語のヘッダーファイルのリスト。全部で84のヘッダファイルが提供されている。
Shell and Utilities (XCU) - ユーティリティ(コマンド)のリストとシェル sh の詳細。全部で160のユーティリティが示されている。
System Interfaces (XSH) - 提供しなければならないシステムコールとCライブラリの詳細。全部で1123のシステムインタフェースが示されている。
Rationale (XRAT) - この標準についての解説
この標準でのユーザのコマンドラインインターフェイスとスクリプトインターフェイスはPOSIXシェルであり、KornShell の初期バージョンをベースにした拡張版 Bourne Shell である。他のユーザレベルのプログラムやサービス、ユーティリティとしては、awk、echo、ed、viなどが含まれる。プログラムレベルで要求されているサービスとしては、I/O(、端末、ネットワーク)サービスなどがある。標準にはテストプログラム集が付随していて、PCTS (Posix Certification Test Suite) と呼ばれている。
さらに、SUSには CURSES (XCURSES) の仕様も含まれている。372の関数と3つのヘッダファイルが定義されている。これを含めると、SUSv3は全部で1742のインタフェースを定義している。
注意しなければならないのは、この仕様を満たすためにAT&TのUNIXのソースコードを使う必要はないという点である。実際、IBMのOS/390(現在はz/OS)はコードは完全に独自だが "UNIX"と名乗ることを認定されている。
準拠システムを示すふたつのマークが存在する。
UNIX 98 - SUS Version 2 に準拠したシステムを示すマーク
UNIX 03 - SUS Version 3 に準拠したシステムを示すマーク
これらより古い準拠システム示すマークとして UNIX 93 や UNIX 95 がある。
AIX - AIX 5L V5.2 にいくつか更新を加えたものと AIX 5L V5.3 と AIX 6.1 は UNIX 03 準拠として登録されている。AIX 5L V5.2 は UNIX 98 準拠として登録されている。
HP-UX - HP-UX 11i V3 Release B.11.31 は UNIX 03 準拠として登録されている。それ以前のリリースは UNIX 95 として登録されていた。
macOS - UNIXを標榜しつつも長らくSUSを取得していなかったが、Mac OS X v10.5 Leopard以降が Open Brand UNIX 03 に登録されている。
macOS Server - Leopard同様、Mac OS X Server v10.5 で Open Brand UNIX 03 に登録された。
UnixWare 7.1.3 は UNIX 95 準拠として登録されている。
OpenServer 5 は UNIX 93 準拠として登録されている。
z/OS - IBM z/OSは1.9以前は UNIX 95 準拠として登録されていた。2007年9月28日にリリースされた z/OS 1.9 は UNIX 03 にさらに近くなると発表した(完全準拠かどうかは不明)。
EulerOS- Huaweiが開発しているx86-64 用のOSであるEulerOS 2.0はUNIX 03準拠として登録されている。標準CコンパイラとしてGNU Compiler Collection (gcc)を用いているRed Hat系のLinuxディストリビューションであることが登録書類に示されている。
Solaris - 富士通とOracleそれぞれによって登録がなされており、Solaris 10は2017年頃までは両社、以降2020年1月頃まではOracleによって UNIX 03 準拠として登録されていた。Solaris 11は2020年1月頃まではOracleによって UNIX V7 準拠として登録されていた。Solaris 8 (2013年4月頃までは両社によって、以降2014年6月頃まではOracleによって)および 9 (2013年9月28日頃までは両社によって、以降まではOracleによって)は UNIX 98 準拠として登録されていた。
Tru64 UNIX - Tru64 UNIX V5.1A およびその後のリリースは UNIX 98 準拠として登録されていた。
IRIX - SGI IRIX 6.5 は UNIX 95 準拠として登録されていた。
Unix系のLinuxやFreeBSDなどのシステムベンダーは、仕様変更が頻繁に行われるため、その度に認証を受ける必要が生じ、コストに見合わないため認証を受けないのが一般的である。
現在、無料で入手可能な BSD系システムは SUS 準拠として登録されていない。
FreeBSD は "C99 and POSIX Conformance Project" により SUS の大部分に準拠する計画がある。
DarwinはFreeBSDベースのオープンソースのオペレーティングシステムである。これはmacOSのサブセットのオープンソース版とも言える。DarwinはSUSv3準拠である。
かつてドイツの Unifix Linux 2.0 という古いディストリビューション/バージョンが POSIX.1 に準拠していた。2007年12月の時点では、SUSに準拠・登録されたLinuxディストリビューションは存在していない。
リーナス・トーバルズは、Linuxが可能な限り POSIX互換となるよう設計した。当初、この大部分は推測によるもので、彼はLinuxが始まってからしばらくしてPOSIX標準の印刷されたものを購入した。彼は、他のシステムのmanページを見て、システムコールの動作を決めていたとも述べている。
Linuxシステムには、共通な拡張、共通なデファクトスタンダードがあり、それらは Linux Standard Base から提供されている。これは、POSIX 仕様や Single UNIX Specification その他のオープン標準に基づき、それらを一部拡張しているものである。デファクトスタンダードとして多くのLinuxディストリビューションがこれを採用している。