Single UNIX Specification

Source: Wikipedia, the free encyclopedia.

The Single UNIX Specification (SUS) is a standard for

. 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 X/Open Curses specification.[3]

Some parts of the SUS are optional.

History

1980s: Motivation

The SUS emerged from multiple 1980s efforts to standardize

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.[4][5]

In 1985, AT&T published System V Interface Definition (SVID), a specification of UNIX System V programming interfaces.[6]

1988: POSIX

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

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[7]
  • XPG2: X/Open Portability Guide Issue 2: 1987[7]
  • XPG3: X/Open Portability Guide Issue 3: 1989[8]
  • XPG4: X/Open Portability Guide Issue 4: 1992[7]

XPG4 Base included the following documents:

  • System Interface Definitions, Issue 4,
  • System Interfaces and Headers, Issue 4,
  • Commands and Utilities, Issue 4,

1990s: Spec 1170

In the early 1990s, a separate effort known as the Common API Specification or Spec 1170 was initiated by several major vendors,[9] 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.[10] In October 1993, a planned transfer of UNIX trademark from Novell to X/Open was announced;[11] it was finalized in 2nd quarter of 1994.[12] Spec 1170 would eventually become the Single Unix Specification.[9]

1994: Single UNIX Specification

In 1994, the X/Open Company released the Single UNIX Specification.[9] The SUS was made up of documents that were part of the X/Open Common Applications Environment (CAE):[9]

  • System Interface Definitions, Issue 4, Version 2[13]
  • System Interfaces and Headers, Issue 4, Version 2[14]
  • Commands and Utilities, Issue 4, Version 2[15]
  • Networking Services, Issue 4[16]

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;[9][17] its copyright date is given as 1996.[18] X/Open Curses, Issue 4 was published in 1995.[19]

In October 1994, X/Open indicated they were going to refer to Spec 1170 as '"Single-Unix" specification'.[20]

The SUS was at the core of the UNIX 95 brand.[21]

This version had 1168 programming interfaces.[22]

This version of SUS was drawn from the following sources:[9]

  • XPG4 Base by X/Open
  • System V Interface Definition, (SVID) Edition 3, Level 1 calls by AT&T
  • Application Environment Specification (AES) by 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

In 1996, X/Open merged with Open Software Foundation (OSF) to form The Open Group.[23][24]

In 1997, the Open Group released the Single UNIX Specification, Version 2.[25][26]

This specification consisted of:[27]

  • System Interface Definitions, Issue 5,[28]
  • System Interfaces and Headers, Issue 5,[29]
  • Commands and Utilities, Issue 5,[30]
  • Networking Services, Issue 5,[31]
  • X/Open Curses, Issue 4, Version 2,[32]

and was at the core of the UNIX 98 brand.[33]

This version had 1434 programming interfaces.[22]

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

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.[34]

This SUS consisted of:[35]

  • 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.[36]

The Base Specifications are technically identical to POSIX.1-2001, which is IEEE Std 1003.1-2001.[35]

This version had 1742 programming interfaces.[22]

An authorized guide is available for the version.[37]

2004 Edition

In 2004, a new edition of the POSIX.1-2001 standard was released, incorporating two technical corrigenda.[38][39] It is called IEEE Std 1003.1, 2004 Edition.[39] Some informally call it POSIX.1-2004,[40][41][42] but this is not an official identification.

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

In December 2008, the Austin Group published a new major revision of SUS and POSIX.[43][44][45] This is the Single UNIX Specification, Version 4 (SUSv4).[46]

This SUS consists of:[47]

  • 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.[47]

This version had 1833 interfaces, of which 1191 were in the System Interfaces section.[48]

2013 Edition

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.[49]

2016 Edition

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

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.[50]

The Base Specifications are technically identical to POSIX.1-2017, which is IEEE Std 1003.1-2017.[51]

Specification

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

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.[52]

Marks for compliant systems

There are five official marks for conforming systems:[53][54]

  • UNIX 93[55]
  • UNIX 95 - the mark for systems conforming to version 1 of the SUS[56]
  • UNIX 98 - the mark for systems conforming to version 2 of the SUS[57]
  • UNIX 03 - the mark for systems conforming to version 3 of the SUS[58]
  • UNIX V7 - the mark for systems conforming to version 4 of the SUS (including Corrigenda)[59][60]

Compliance

Product Vendor Architecture UNIX V7[59] UNIX 03[58] UNIX 98[57] UNIX 95[56] UNIX 93[55]
AIX
IBM Corporation
POWER processors Yes Yes No No No
HP-UX Hewlett Packard Enterprise IA-64, PA-RISC No Yes No No No
macOS Apple
ARM64
No Yes No No No
OpenServer
Xinuos IA-32 No No No No Yes
UnixWare Xinuos IA-32 No No No Yes No
z/OS
IBM Corporation
z/Architecture No No No Yes No

Currently registered UNIX systems

AIX

AIX version 7, at either 7.1 TL5 (or later) or 7.2 TL2 (or later) are registered as UNIX 03 compliant.[61] AIX version 7, at 7.2 TL5 (or later) are registered as UNIX V7 compliant.[62] Older versions were previously certified to the UNIX 95 and UNIX 98 marks.[63]

HP-UX

HP-UX 11i V3 Release B.11.31 is registered as UNIX 03 compliant. Previous releases were registered as UNIX 95.[64]

macOS

Apple macOS (formerly known as Mac OS X and OS X) is registered as UNIX 03 compliant.[65] The first version registered was Mac OS X 10.5 Leopard, certified on October 26, 2007 (on x86 systems).[66][67] All newer versions of macOS, up to macOS 14 Sonoma, have been registered, with macOS 11, 12, 13, and 14 registered on both x86-64 and ARM64 systems.[68]

Xinuos

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

z/OS

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.[69]

Previously registered UNIX systems

EulerOS

EulerOS 2.0 for the x86-64 architecture was registered as UNIX 03 compliant.[70][71] The UNIX 03 conformance statement shows that the standard C compiler is from the GNU Compiler Collection (gcc), and that the system is a Linux distribution of the Red Hat Enterprise Linux family.[72] The UNIX 03 certification expired in September 2022 and has not been renewed.[71]

FTX

Stratus Technologies DNCP Series servers running FTX Release 3 were registered as UNIX 93 compliant.[73]

Inspur K-UX

Inspur K-UX 2.0 and 3.0 for the x86-64 architecture were certified as UNIX 03 compliant.[74][75] 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 (gcc), and that the system is a Linux distribution of the Red Hat family.[76]

IRIX

SGI IRIX 6.5 was registered as UNIX 95 compliant.[77]

OS/390

IBM OS/390 was registered as UNIX 95 compliant beginning with the V2R4 release.[78]

Reliant UNIX

The last

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

Solaris

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.[63]

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.[80]

Tru64 UNIX

Tru64 UNIX V5.1A and later were registered as UNIX 98 compliant.[81]

Other

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

  • NCR
    UNIX SVR4
  • NEC UX/4800

Non-registered Unix-like systems

Developers and vendors of

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.[82] 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.[83][84] Few Linux distributions actually go through certification as LSB compliant.[85]

Darwin, the open source subset of macOS, has behavior that can be set to comply with UNIX 03.[86][87] Darwin uses a 4.4BSD-derived pax command,[88] which lacks multibyte support for filenames.[citation needed]

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.[89] FreeBSD pax command, derived from 4.4BSD, does not fully support pax file format.[90] pax and ustar in-archive format use the same with slightly different defaults (5120 block size vs 10240 block size);[91] 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.[92]

OpenBSD man pages sometimes indicate deviations from POSIX and thus SUS in their STANDARDS sections.[93][94]

MINIX pax command does not support pax file format[95] and thereby fails POSIX.1-2001.

See also

References

  1. ^ "Questions & Answers". unix.org.
  2. ^ "The UNIX Standard". The Open Group. August 27, 2018.
  3. ^ "Single UNIX Specification, Version 4, 2018 Edition". The Open Group.
  4. ^ Kelty, Christopher M. "Conceiving Open Systems" (PDF). kelty.org.
  5. ^ Standards Conformance Guide (PDF). SunSoft. November 1995.
  6. .
  7. ^ a b c Raymond, Eric S. (September 19, 2003). "Standards and the Unix Wars". The Art of UNIX Programming.
  8. OCLC 53867239
    .
  9. ^ a b c d e f "The Single UNIX Specification". unix.org.
  10. ^ "The UNIX System -- History and Timeline -- UNIX History". unix.org.
  11. ^ Fennessy, Quentin (October 12, 1993). "The name "UNIX" is now the property of X/Open". Newsgroupcomp.std.unix.
  12. ^ "Frequently Asked Questions". unix.org.
  13. ^ X/Open CAE Specification System Interface Definitions, Issue 4, Version 2 (PDF). 1994. {{cite book}}: |website= ignored (help)
  14. ^ X/Open CAE Specification System Interfaces and Headers, Issue 4, Version 2 (PDF). 1994. {{cite book}}: |website= ignored (help)
  15. ^ X/Open CAE Specification Commands and Utilities, Issue 4, Version 2 (PDF). 1994. {{cite book}}: |website= ignored (help)
  16. ^ X/Open CAE Specification Networking Services, Issue 4 (PDF). 1994. {{cite book}}: |website= ignored (help)
  17. ^ "Single UNIX® Specification, Version 1 Document Set (UNIX 95)". opengroup.org. Retrieved May 25, 2021.
  18. ISBN 1-85912-171-3. {{cite book}}: |website= ignored (help
    )
  19. .
  20. ^ Bozman, Jean S. (October 24, 1994). "X/Open test suites advance". Computerworld. Vol. 28, no. 43. p. 49.
  21. ^ "Open Brand - UNIX 95". The Open Group.
  22. ^ a b c "How many APIS are there?". unix.org.
  23. ^ McCrea, Phil (April 1996). "Formation of 'The Open Group'". AUGGN: The Journal of AUUG Inc. 17 (2): 17–18.
  24. ^ Gaudin, Sharon (May 27, 1996). "WebCrusader may blaze wider trail for DCE users". Computerworld. Vol. 30, no. 22. p. 64.
  25. ^ "The Single UNIX Specification, Version 2". www.opengroup.org.
  26. ^ "The Open Group Announces Enhanced Single UNIX Specification" (Press release). The Open Group. March 12, 1997. Retrieved July 26, 2009.
  27. ^ "What's New in the Single UNIX Specification, Version 2". unix.org.
  28. ^ System Interface Definitions Issue 5 (PDF). {{cite book}}: |website= ignored (help)
  29. ^ System Interfaces and Headers Issue 5 (PDF). {{cite book}}: |website= ignored (help)
  30. ^ Commands and Utilities Issue 5 (PDF). {{cite book}}: |website= ignored (help)
  31. ISBN 1-85912-165-9. {{cite book}}: |website= ignored (help
    )
  32. ISBN 1-85912-171-3. {{cite book}}: |website= ignored (help
    )
  33. ^ "Open Brand - UNIX 98". The Open Group.
  34. ^ "The Open Group announces completion of the joint revision to POSIX and the Single UNIX Specification" (Press release). The Open Group. January 30, 2002. Retrieved July 26, 2009.
  35. ^ a b "The Single UNIX Specification Version 3 - Overview". unix.org.
  36. ^ "Open Brand - UNIX 03". The Open Group.
  37. ^ The Single UNIX Specification: The Authorized Guide to Version 3, 2nd Edition (PDF). {{cite book}}: |website= ignored (help)
  38. ^ "The Open Group Base Specifications Issue 6". The Open Group.
  39. ^ a b "IEEE Std 1003.1, 2004 Edition". Retrieved July 26, 2009.
  40. ^ "POSIX.1(5)". Oracle Solaris 11.2 Information Library.
  41. ^ "1.3.4 Feature Test Macros". The GNU C Library manual. {{cite book}}: |website= ignored (help)
  42. .
  43. ^ "The Open Group Base Specifications Issue 7, 2018 edition". www.opengroup.org.
  44. ^ "Base Specifications, Issue 7". The Open Group. Retrieved July 26, 2009.
  45. ^ "The Austin Common Standards Revision Group". The Open Group. Retrieved July 26, 2009.
  46. ^ "Single UNIX Specification Version 4". The Open Group.
  47. ^ a b "The Single UNIX Specification Version 4 - Introduction". unix.org.
  48. ^ "Version 4 Interface Counts". unix.org.
  49. ^ "UNIX V7 Certification". unix.org.
  50. ^ "Base Specifications, Issue 7, 2018 Edition". The Open Group. Retrieved July 6, 2018.
  51. ^ "IEEE SA - IEEE/Open Group 1003.1-2017". standards.ieee.org.
  52. ^ Matzan, Jem (July 30, 2004). "Can GNU ever be Unix?". linux.com.
  53. ^ "UNIX(R) Certified Products - The Open Group official register of UNIX Certified Products". The Open Group.
  54. ^ "The Open Brand - The full register of certified products". The Open Group.
  55. ^ a b "The Open Brand Register, UNIX 93". The Open Group.
  56. ^ a b "The Open Brand Register, UNIX 95". The Open Group.
  57. ^ a b "The Open Brand Register, UNIX 98". The Open Group.
  58. ^ a b "The Open Brand Register, UNIX 03". The Open Group.
  59. ^ a b "The Open Brand Register, UNIX V7". The Open Group.
  60. ^ "The UNIX System -- UNIX V7 Certification". unix.org.
  61. ^ The Open Group. "UNIX 03, AIX".
  62. ^ The Open Group. "UNIX V7, AIX".
  63. ^ a b "The Open Brand - Register of Certified Products". Open Group. July 23, 2003. Archived from the original on August 2, 2003. Retrieved January 23, 2022.
  64. ^ "UNIX 2003 Standard Profile conformance". Hewlett-Packard. Archived from the original on July 27, 2014. Retrieved July 22, 2014.
  65. ^ "OS X for UNIX Users" (PDF). July 2011.
  66. ^ "Mac OS X Leopard - Technology - UNIX". Leopard Technology Overview. Apple Inc. Archived from the original on August 23, 2007. Retrieved June 11, 2007. Leopard is now an Open Brand UNIX 03 Registered Product, conforming to the SUSv3 and POSIX 1003.1 specifications for the C API, Shell Utilities, and Threads.
  67. ^ The Open Group. "Mac OS X Version 10.5 Leopard on Intel-based Macintosh computers certification". Retrieved June 12, 2007.
  68. ^ "Open Brand". www.opengroup.org. Retrieved November 15, 2022.
  69. ^ "Preview: IBM z/OS V1.9 advanced infrastructure solutions for your business needs" (PDF). IBM. February 6, 2007. pp. 4, 15. Retrieved July 23, 2022.
  70. ^ "Huawei KunLun EulerOS 2.0 Operating System Passes UNIX Certification" (Press release). Huawei. September 9, 2016. Retrieved October 29, 2016.
  71. ^ a b The Open Group. "UNIX 03, EulerOS".
  72. ^ Peng Shen. "Huawei Conformance Statement: Commands and Utilities V4". The Open Group. Retrieved October 29, 2016.
  73. ^ The Open Group. "The Open Brand - Register of Certified Products - UNIX 93". Archived from the original on October 5, 2016.
  74. ^ "The Open Brand Register of Certified Products". The Open Group. May 29, 2014. Retrieved May 29, 2014.
  75. ^ Xie Ruohong. "Inspur Conformance Statement". The Open Group. Retrieved December 8, 2015.
  76. ^ Xie Ruohong. "Inspur Conformance Statement: Commands and Utilities V4". The Open Group. Retrieved December 8, 2015.
  77. ^ "Silicon Graphics Inc - UNIX 95". Open Group. Archived from the original on August 2, 2003.
  78. ^ "Register of Open Branded Products (OS/390)". Open Group. June 19, 2003. Archived from the original on June 29, 2003.
  79. ^ "UNIX V7 - The Open Brand Register, Oracle Corporation". The Open Group. Archived from the original on January 14, 2020. Retrieved January 16, 2021.
  80. ^ "Solaris 2.5.1". Archived from the original on September 12, 2005.
  81. ^ "Compaq Computer Corporation - UNIX 95". Open Group. Archived from the original on June 29, 2003.
  82. ^ "Bug #1329914 "No UNIX compatible pax implementation" : Bugs : RPM". Ubuntu bug tracker.
  83. ^ ISO/IEC TR 24715:2006 - Information technology -- Programming languages, their environments and system software interfaces -- Technical Report on the Conflicts between the ISO/IEC 9945 (POSIX) and the Linux Standard Base (ISO/IEC 23360). Retrieved October 15, 2011.
  84. ^ Josey, Andrew (August 29, 2005). "Conflicts between ISO/IEC 9945 (POSIX) and the Linux Standard Base". personal.opengroup.org (Unapproved Draft).
  85. ^ "Certified Products Product Directory". The Linux Foundation. Archived from the original on December 20, 2012. Retrieved December 9, 2015.
  86. ^ "Mac OS X Manual Page for compat(5) - Mac OS X 10.3". developer.apple.com. October 23, 2005. Archived from the original on March 10, 2009. Retrieved May 24, 2018.
  87. ^ "compat(5) Manual Page - macOS 10.9". developer.apple.com. June 30, 2010. Retrieved May 24, 2018.
  88. ^ "Mac OS X Manual Page for pax(1) - Mac OS X 10.3". developer.apple.com. October 23, 2005. Archived from the original on March 10, 2009. Retrieved November 25, 2023.
  89. ^ "FreeBSD C99 and POSIX conformance project". FreeBSD Project. Archived from the original on December 23, 2013.
  90. ^ pax(1) – FreeBSD General Commands Manual
  91. ^ "pax - portable archive interchange". The Open Group.
  92. ^ awk(1) – FreeBSD General Commands Manual
  93. ^ sh(1) – OpenBSD General Commands Manual
  94. ^ awk(1) – OpenBSD General Commands Manual
  95. ^ "pax(1)". man.minix3.org.

External links