Jump to content

Single UNIX Specification

From Niidae Wiki
Revision as of 22:33, 18 May 2025 by imported>Guy Harris (macOS: Update access date, as it's now being used as a reference for Sequoia.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description Template:Redirect2 Template:Use mdy dates The Single UNIX Specification (SUS) is a standard for computer operating systems,<ref>Template:Cite web</ref><ref>Template:Cite web</ref> compliance with which is required to qualify for using the "UNIX" trademark. The standard specifies programming interfaces for the C language, a command-line shell, and user commands. The core specifications of the SUS known as Base Specifications are developed and maintained by the Austin Group, which is a joint working group of IEEE, ISO/IEC JTC 1/SC 22/WG 15 and The Open Group. If an operating system is submitted to The Open Group for certification and passes conformance tests, then it is deemed to be compliant with a UNIX standard such as UNIX 98 or UNIX 03.

Very few BSD and Linux-based operating systems are submitted for compliance with the Single UNIX Specification, although system developers generally aim for compliance with POSIX standards, which form the core of the Single UNIX Specification.

The latest SUS consists of two parts: the base specifications technically identical to POSIX, and the X/Open Curses specification.<ref>Template:Cite web</ref>

Some parts of the SUS are optional.

History

[edit]

1980s: Motivation

[edit]

The SUS emerged from multiple 1980s efforts to standardize operating system interfaces for software designed for variants of the Unix operating system. The need for standardization arose because enterprises using computers wanted to be able to develop programs that could be used on the computer systems of different manufacturers without reimplementing the programs. Unix was selected as the basis for a standard system interface partly because it was manufacturer-neutral.

In 1984, the UNIX user group called /usr/group published the results of their standardization effort for programming interfaces in their 1984 /usr/group standard, which became basis for what would become the POSIX.1-1988 standard.<ref>Template:Cite web</ref><ref>Template:Cite book</ref>

In 1985, AT&T published System V Interface Definition (SVID), a specification of UNIX System V programming interfaces.<ref>Template:Cite book</ref>

1988: POSIX

[edit]

In 1988, standardization efforts resulted in IEEE 1003 (also registered as ISO/IEC 9945), or POSIX.1-1988, which loosely stands for Portable Operating System Interface.

1980s and 1990s: X/Open Portability Guide

[edit]

The X/Open Portability Guide (XPG) was a precursor to the SUS, published by the X/Open Company, a consortium of companies established in 1984. The guides were published in the following years.

  • XPG1: X/Open Portability Guide Issue 1: 1985<ref name=raymond2003>Template:Cite book</ref>
  • XPG2: X/Open Portability Guide Issue 2: 1987<ref name=raymond2003/>
  • XPG3: X/Open Portability Guide Issue 3: 1989<ref>Template:Cite book</ref>
  • XPG4: X/Open Portability Guide Issue 4: 1992<ref name=raymond2003/>

XPG4 Base included the following documents:

1990s: Spec 1170

[edit]

In the early 1990s, a separate effort known as the Common API Specification or Spec 1170 was initiated by several major vendors,<ref name=unixorgsus>Template:Cite web</ref> who formed the COSE alliance in the wake of the Unix wars. In 1993, Spec 1170 was assigned by COSE to X/Open for fasttrack.<ref name=unixorghist>Template:Cite web</ref> In October 1993, a planned transfer of UNIX trademark from Novell to X/Open was announced;<ref>Template:Cite newsgroup</ref> it was finalized in 2nd quarter of 1994.<ref>Template:Cite web</ref> Spec 1170 would eventually become the Single Unix Specification.<ref name=unixorgsus/>

1994: Single UNIX Specification

[edit]

In 1994, the X/Open Company released the Single UNIX Specification.<ref name=unixorgsus/> The SUS was made up of documents that were part of the X/Open Common Applications Environment (CAE):<ref name=unixorgsus/>

This was a repackaging of the X/Open Portability Guide (XPG), Issue 4, Version 2.

Sources differ on whether X/Open Curses, Issue 4, Version 2 was part of this SUS;<ref name=unixorgsus/><ref>Template:Cite web</ref> its copyright date is given as 1996.<ref>Template:Cite book</ref> X/Open Curses, Issue 4 was published in 1995.<ref>Template:Cite book</ref>

In October 1994, X/Open indicated they were going to refer to Spec 1170 as '"Single-Unix" specification'.<ref>Template:Cite magazine</ref>

The SUS was at the core of the UNIX 95 brand.<ref>Template:Cite web</ref>

This version had 1168 programming interfaces.<ref name=v3howmanyapis/>

This version of SUS was drawn from the following sources:<ref name=unixorgsus/>

  • XPG4 Base by X/Open
  • System V Interface Definition, (SVID) Edition 3, Level 1 calls by AT&T
  • Application Environment Specification (AES) by the Open Software Foundation (OSF)
  • Interfaces found in common use and not yet covered by a formal specification, drawn from a survey of major applications.

1997: Single UNIX Specification, version 2

[edit]

In 1996, X/Open merged with Open Software Foundation (OSF) to form The Open Group.<ref>Template:Cite journal</ref><ref>Template:Cite magazine</ref>

In 1997, the Open Group released the Single UNIX Specification, Version 2.<ref>Template:Cite web</ref><ref>Template:Cite press release</ref>

This specification consisted of:<ref>Template:Cite web</ref>

and was at the core of the UNIX 98 brand.<ref>Template:Cite web</ref>

This version had 1434 programming interfaces.<ref name=v3howmanyapis/>

2001: Single UNIX Specification, version 3, POSIX.1-2001

[edit]

Beginning in 1998, a joint working group of IEEE, ISO JTC 1 SC22 and The Open Group known as the Austin Group began to develop the combined standard that would be known as the core of Single UNIX Specification, Version 3 and as POSIX.1-2001. It was released on January 30, 2002.<ref>Template:Cite press release</ref>

This SUS consisted of:<ref name=unixorgv3>Template:Cite web</ref>

  • Base Specifications, Issue 6
    • Base Definitions, Issue 6
    • System Interfaces, Issue 6
    • Shell and Utilities, Issue 6
    • Rationale (Informative)
  • X/Open Curses, Issue 4, Version 2

and is at the core of the UNIX 03 brand.<ref>Template:Cite web</ref>

The Base Specifications are technically identical to POSIX.1-2001, which is IEEE Std 1003.1-2001.<ref name=unixorgv3/>

This version had 1742 programming interfaces.<ref name=v3howmanyapis>Template:Cite web</ref>

An authorized guide is available for the version.<ref>Template:Cite book</ref>

2004 Edition

[edit]

In 2004, a new edition of the POSIX.1-2001 standard was released, incorporating two technical corrigenda.<ref>Template:Cite web</ref><ref name=posix2004>Template:Cite web</ref> It is called IEEE Std 1003.1, 2004 Edition.<ref name=posix2004/> Some informally call it POSIX.1-2004,<ref>Template:Cite web</ref><ref>Template:Cite book</ref><ref>Template:Cite conference</ref> but this is not an official identification.

2008: Single UNIX Specification, version 4, POSIX.1-2008

[edit]

In December 2008, the Austin Group published a new major revision of SUS and POSIX.<ref>Template:Cite web</ref><ref>Template:Cite web</ref><ref>Template:Cite web</ref> This is the Single UNIX Specification, Version 4 (SUSv4).<ref>Template:Cite web</ref>

This SUS consists of:<ref name=unixorgv4>Template:Cite web</ref>

  • Base Specifications, Issue 7
    • Base Definitions, Issue 7
    • System Interfaces, Issue 7
    • Shell and Utilities, Issue 7
    • Rationale, Issue 7, (Informative)
  • X/Open Curses, Issue 7

The Base Specifications are technically identical to POSIX.1-2008, which is IEEE Std 1003.1-2008.<ref name=unixorgv4/>

This version had 1833 interfaces, of which 1191 were in the System Interfaces section.<ref>Template:Cite web</ref>

2013 Edition

[edit]

Technical Corrigendum 1 mostly targeted internationalization, and also introduced a role-based access model. A trademark UNIX V7 (not to be confused with V7 UNIX, the version of Research Unix from 1979) was created to mark compliance with SUS Version 4.<ref>Template:Cite web</ref>

2016 Edition

[edit]

Technical Corrigendum 2 was published in September 2016, leading into IEEE Std 1003.1-2008, 2016 Edition and Single UNIX Specification, Version 4, 2016 Edition.

2018 Edition, POSIX.1-2017

[edit]

In January 2018, an "administrative rollup" edition was released. It incorporates Single UNIX Specification version 4 TC1 and TC2, and is technically identical to the 2016 edition.<ref>Template:Cite web</ref>

The Base Specifications are technically identical to POSIX.1-2017, which is IEEE Std 1003.1-2017.<ref>Template:Cite web</ref>

Specification

[edit]

SUSv3 totals some 3700 pages, which are divided into four main parts:

  • Base Definitions (XBD) - a list of definitions and conventions used in the specifications and a list of C header files which must be provided by compliant systems. 84 header files in total are provided.
  • Shell and Utilities (XCU) - a list of utilities and a description of the shell, sh. 160 utilities in total are specified.
  • System Interfaces (XSH) - contains the specification of various functions which are implemented as system calls or library functions. 1123 system interfaces in total are specified.
  • Rationale (XRAT) - the explanation behind the standard.

The standard user command line and scripting interface is the POSIX shell, an extension of the Bourne Shell based on an early version of the Korn Shell. Other user-level programs, services and utilities include awk, echo, ed, vi, and hundreds of others. Required program-level services include basic I/O (file, terminal, and network) services. A test suite accompanies the standard. It is called PCTS or the POSIX Certification Test Suite.

Additionally, SUS includes CURSES (XCURSES) specification, which specifies 372 functions and 3 header files. All in all, SUSv3 specifies 1742 interfaces.

Note that a system need not include source code derived in any way from AT&T Unix to meet the specification. For instance, IBM OS/390, now z/OS, qualifies as UNIX despite having no code in common.<ref>Template:Cite web</ref>

Marks for compliant systems

[edit]

There are five official marks for conforming systems:<ref>Template:Cite web</ref><ref>Template:Cite web</ref>

  • UNIX 93<ref name="UNIX_93">Template:Cite web</ref>
  • UNIX 95 - the mark for systems conforming to version 1 of the SUS<ref name="UNIX_95">Template:Cite web</ref>
  • UNIX 98 - the mark for systems conforming to version 2 of the SUS<ref name="UNIX_98">Template:Cite web</ref>
  • UNIX 03 - the mark for systems conforming to version 3 of the SUS<ref name="UNIX_03">Template:Cite web</ref>
  • UNIX V7 - the mark for systems conforming to version 4 of the SUS (including Corrigenda)<ref name="UNIX_V7">Template:Cite web</ref><ref>Template:Cite web</ref>

Compliance

[edit]
Product Vendor Architecture UNIX V7<ref name="UNIX_V7"/> UNIX 03<ref name="UNIX_03"/> UNIX 98<ref name="UNIX_98"/> UNIX 95<ref name="UNIX_95"/> UNIX 93<ref name="UNIX_93"/>
AIX IBM Corporation POWER processors Template:Yes Template:Yes Template:No Template:No Template:No
HP-UX Hewlett Packard Enterprise IA-64, PA-RISC Template:No Template:Yes Template:No Template:No Template:No
macOS Apple x86-64, ARM64 Template:No Template:Yes Template:No Template:No Template:No
OpenServer Xinuos IA-32 Template:No Template:No Template:No Template:No Template:Yes
UnixWare Xinuos IA-32 Template:No Template:No Template:No Template:Yes Template:No
z/OS IBM Corporation z/Architecture Template:No Template:No Template:No Template:Yes Template:No

Currently registered UNIX systems

[edit]

AIX

[edit]

AIX version 7, at either 7.1 TL5 (or later) or 7.2 TL2 (or later) are registered as UNIX 03 compliant.<ref>Template:Cite web</ref> AIX version 7, at 7.2 TL5 (or later) are registered as UNIX V7 compliant.<ref>Template:Cite web</ref> Older versions were previously certified to the UNIX 95 and UNIX 98 marks.<ref name="2003-register">Template:Cite web</ref>

HP-UX

[edit]

HP-UX 11i V3 Release B.11.31 is registered as UNIX 03 compliant. Previous releases were registered as UNIX 95.<ref>Template:Cite web</ref>

macOS

[edit]

Apple macOS (formerly known as Mac OS X and OS X) is registered as UNIX 03 compliant.<ref>Template:Cite web</ref> The first version registered was Mac OS X 10.5 Leopard, certified on October 26, 2007 (on x86 systems).<ref>Template:Cite web</ref><ref>Template:Cite web</ref> All versions of macOS from Mac OS X Leopard to macOS 10.15 Catalina, except for OS X Lion,<ref>Template:Cite web</ref> have been registered on Intel-based systems, and all versions from macOS 11 Big Sur, the successor to macOS Catalina, up to macOS 15 Sequoia have been registered on both x86-64 and ARM64 systems.<ref>Template:Cite web</ref>

Xinuos

[edit]

UnixWare 7.1.3 and later is registered as UNIX 95 compliant. OpenServer 5 and 6 are registered as UNIX 93 compliant.

z/OS

[edit]

IBM z/OS 1.2 and higher is registered as UNIX 95 compliant. z/OS 1.9, released on September 28, 2007, and subsequent releases "better align" with UNIX 03.<ref>Template:Cite book</ref>

Previously registered UNIX systems

[edit]

EulerOS

[edit]

EulerOS 2.0 for the x86-64 architecture was registered as UNIX 03 compliant.<ref>Template:Cite press release</ref><ref name="euler-cert">Template:Cite web</ref> The UNIX 03 conformance statement shows that the standard C compiler is from the GNU Compiler Collection (Template:Mono), and that the system is a Linux distribution of the Red Hat Enterprise Linux family.<ref name="EulerOS_conformance_commands">Template:Cite web</ref> The UNIX 03 certification expired in September 2022 and has not been renewed.<ref name="euler-cert" />

FTX

[edit]

Stratus Technologies DNCP Series servers running FTX Release 3 were registered as UNIX 93 compliant.<ref>Template:Cite web</ref>

Inspur K-UX

[edit]

Inspur K-UX 2.0 and 3.0 for the x86-64 architecture were certified as UNIX 03 compliant.<ref>Template:Cite web</ref><ref name="inspur_conformance_statement">Template:Cite web</ref> The UNIX 03 conformance statement for Inspur K-UX 2.0 and 3.0 shows that the standard C compiler is from the GNU Compiler Collection (Template:Mono), and that the system is a Linux distribution of the Red Hat family.<ref name="inspur_conformance_commands">Template:Cite web</ref>

IRIX

[edit]

SGI IRIX 6.5 was registered as UNIX 95 compliant.<ref>Template:Cite web</ref>

OS/390

[edit]

IBM OS/390 was registered as UNIX 95 compliant beginning with the V2R4 release.<ref>Template:Cite web</ref>

Reliant UNIX

[edit]

The last Reliant UNIX versions were registered as UNIX 95 compliant (XPG4 hard branding).

Solaris

[edit]

Solaris 11.4 was previously registered as UNIX v7 compliant in 2018.<ref>Template:Cite web</ref> Solaris 11 and Solaris 10 were registered as UNIX 03 compliant on 32-bit and 64-bit x86 (X86-64) and SPARC systems. Solaris 8 and 9 were registered as UNIX 98 compliant on 32-bit x86 and SPARC systems; 64-bit x86 systems were not supported. Solaris 2.4 and 2.6, on both x86 and SPARC, were certified to the UNIX 93 and UNIX 95 marks respectively.<ref name="2003-register" />

Solaris 2.5.1 was also registered as UNIX 95 compliant on the PReP PowerPC platform in 1996, but the product was withdrawn before more than a few dozen copies had been sold.<ref>Template:Cite web</ref>

Tru64 UNIX

[edit]

Tru64 UNIX V5.1A and later were registered as UNIX 98 compliant.<ref>Template:Cite web</ref>

Other

[edit]

Other operating systems previously registered as UNIX 95 or UNIX 93 compliant:

Non-registered Unix-like systems

[edit]

Developers and vendors of Unix-like operating systems such as Linux, FreeBSD, and MINIX typically do not certify their distributions and do not install full POSIX utilities by default.

For Linux, pax command is usually not installed; furthermore, pax command packages available for Linux often lack pax file format support required by POSIX.<ref>Template:Cite web</ref> Sometimes, SUS compliance can be improved by installing additional packages, but very few Linux systems can be configured to be completely conformant. The Linux Standard Base was formed in 2001 as an attempt to standardize the internal structures of Linux-based systems for increased compatibility. It is based on the POSIX specifications, the Single UNIX Specification, and other open standards, and also extends them in several areas; but there are some conflicts between the LSB and the POSIX standards.<ref>Template:Cite ISO standard</ref><ref>Template:Cite web</ref> Few Linux distributions actually go through certification as LSB compliant.<ref>Template:Cite web</ref>

Darwin, the open source subset of macOS, has behavior that can be set to comply with UNIX 03.<ref>Template:Cite web</ref><ref>Template:Cite web</ref> Darwin uses a 4.4BSD-derived pax command,<ref>Template:Cite web</ref> which lacks multibyte support for filenames.Template:Cn

FreeBSD previously had a "C99 and POSIX Conformance Project" which aimed for compliance with a subset of the Single UNIX Specification, and documentation where there were differences.<ref>Template:Cite web</ref> FreeBSD pax command, derived from 4.4BSD, does not fully support pax file format.<ref>Template:Man</ref> pax and ustar in-archive format use the same with slightly different defaults (5120 block size vs 10240 block size);<ref>Template:Cite web</ref> however, FreeBSD's pax lacks the extended PAX headers used for extended character set support. FreeBSD man pages sometimes indicate deviations from POSIX and thus SUS in their STANDARDS sections.<ref>Template:Man</ref>

OpenBSD man pages sometimes indicate deviations from POSIX and thus SUS in their STANDARDS sections.<ref>Template:Man</ref><ref>Template:Man</ref>

MINIX pax command does not support pax file format<ref>Template:Cite web</ref> and thereby fails POSIX.1-2001.

[edit]
POSIX.1-2024 online version

See also

[edit]

References

[edit]

Template:Reflist

[edit]

Template:Open Group standards Template:IEEE standards