Network Server: AIX and Application Binary Compatibility (6/96)

This article will provide a brief introduction to Network Server hardware running IBM's AIX 4.1.4 operating system, and will discuss hardware and software considerations relating to application binary compatibility.
Most of the thousands of AIX 4.1 applications running today on IBM's RS/6000 platform should run on the Network Server AIX 4.1.4 without any modification. Exceptions include those applications with specific hardware dependencies, and applications which do not yet run on AIX 4.1 due to incompatibilities between IBM's implementation of AIX 4.1 and previous releases of AIX.

IBM's AIX 4.1 represents a state of the art UNIX operating system adhering to accepted industry standards including IEEE POSIX, FIPS 151-2, and XPG4. AIX 4.1 is also designed to meet the emerging common application interface as defined by Specification 1170. AIX features supported include:

* JFS (Journaled File System) with mirroring and striping.
* UNIX networking including NFS, TCP/IP.
* Common Desktop Environment (industry standard UNIX GUI).
* System Management Interface Tool and Visual System Manager.


Network Server with AIX 4.1.4
=============================

Apple will provide the AIX 4.1.4 operating system running on high-performance hardware custom-designed to be a greater server platform. AIX 4.1.4 provides a high-performance base operating system on which to run higher-level services such as file, print, and database. Additional Apple value-added features required by our customers will also be provided. To meet these needs, the Network Server integrates a number of complex technologies, from several different sources.

* PowerPC RISC processor technology from IBM, Motorola, and Apple.
* IBM's AIX 4.1.4 including UNIX networking and AIX Windows (X and Motif)
* Berkeley-style sockets and TLI-compliant AppleTalk protocol stack, with
router functionality and support for multiple Ethernet interfaces.
* Third-party solutions such as RAID and file/print services.


Considerations for Binary Compatibility
=======================================

Binary compatibility means that a compiled program (the executable) can be taken from one platform to another without having to either recompile it, or make source code changes.

Most applications will be binary compatible with AIX 4.1.4 running on the Network Server because in most cases, differences in hardware that may affect binary compatibility are masked by the operating system environment, and are not visible to the applications layer. In order to ensure application binary compatibility, Apple has been working with different ISVs.

Application Binary Interface (ABI)
----------------------------------
The IBM AIX 4.1 ABI defines all the elements developers need to create applications that will install, execute, and run unmodified on AIX 4.1. This includes such key definitions as loading and linking, conventions, object formats, the execution environment, networking infrastructure, and installation and packaging information. The core of this definition will consist of the IBM AIX 4.1 interfaces. Apple will add some additional interfaces to it's value added subsystems (that is AppleTalk) and will by necessity have to delete interfaces that support IBM-specific hardware.

For UNIX users, the AIX 4.1 ABI will provide platform binary compatibility based upon leading edge hardware technology and software specifications. The AIX 4.1 ABI specification enables binary applications to run across AIX systems from different vendors, and to provide a standards-driven, open environment for tomorrows users today. Applications developed to the AIX 4.1 ABI should run unmodified on Network Server AIX 4.1.4.

Application Programing Interface (API)
--------------------------------------
The API defines the set of system calls, library functions, header files, commands and utilities that an application developer is allowed to use to develop a compliant application. ISVs are mainly concerned with programming to the API. Underlying the Network Server AIX 4.1.4 API are key industry standards including:

* X/Open XPG4
* X/Open XNFS
* X/Open XTI
* X Window System (X11R5)
* OSF AES (Open Software Foundation Application Environment Specification)
* IEEE POSIX


Available AIX Applications
==========================

There are about 3,000 AIX 4.1 applications listed in IBM's "AIX Power Solutions" catalogue, which can be ordered from IBM, Document No. GC67-0210-04. AIX applications listings are also available on the World-Wide Web, the top level URL is:

http://www.mfi.com/softwareguide/AIX-Solutions/

IBM has stated that more that 10,000 applications have been developed for AIX since it was introduced in 1990. AIX was first ported to the PowerPC by IBM in 1993 in a release of AIX 3.2.5. Most AIX 3.2.5 applications will run on AIX 4.1 and will also be binary compatible with the Network Server. IBM has an AIX V4 Certification Program to help developers certify that their AIX 3.2 solutions run on AIX 4.1.

Apple is in the process of testing the AIX binary compatibility of the Network Server platform and will provide more specific information as it becomes available.


Applications that are not Binary Compatible with Network Server AIX 4.1.4
=========================================================================

The ability to take a compiled program (the executable) from one platform to another and run it without having to make any source code changes is affected by many things. Certain applications may need some modification if they are affected by any of the following:

The processor and the expansion bus
-----------------------------------
The Network Server platform uses the PowerPC 604 microprocessor, which does not implement all of the instructions in the original POWER chipset or the POWER2 architecture. If an application uses hard-coded assembly or compiler options which result in instructions which are not implemented on the PowerPC 604, then the binary may not run on the Network Server platform. The operating system attempts to mitigate this problem by emulating many of the unimplemented instructions.

The Network Server platform's principal hardware incompatibility as compared with the existing base of AIX applications is its exclusive use of the PCI expansion bus. Almost all of the current AIX platforms from other vendors use IBM's MicroChannel Architecture (MCA) expansion bus or provided both MCA and PCI buses. If an application depends on a specific MCA expansion card such as a multi-port serial card or Centronics printer, then a functionally equivalent PCI card (and supporting AIX driver software) may not be available. Apple believes the PCI expansion bus is becoming widely adopted and is working with third-parties to promote the availability of PCI cards and drivers for the Network Server platform.

The system API, including device drivers interfaces and kernel extensions
-------------------------------------------------------------------------
For example, Apple has adopted the Open Firmware model to support PCI card self-configuration on Network Server and future desktop platforms. Device driver writers will need to develop Open Firmware-based configuration methods to correctly invoke their drivers on the Network Server platform. Apple is creating on addendum to the AIX Device Driver's Guide which describes these relevant Open Firmware issues.

The libraries, commands and other system utilities
--------------------------------------------------
In AIX 4.1, the Korn shell, /bin/ksh, is linked to /bin/sh, which is traditionally the Bourne shell. If an application uses a Bourne shell script which is incompatible with the Korn Shell, the procedures would not perform correctly on AIX 4.1. Most Bourne shell scripts are compatible with the Korn shell, however.

In addition, IBM reports in the "AIX Version 4.1 Porting Guide" that some applications will run on AIX 3.2.5, but not AIX 4.1; some of the problematic system services are listed below:

* XPG4 changed command output formats
* Unsupported loadable AIX kernel extensions
* Certain high-function terminal APIs
* IBM X input device programming interfaces instead of the X11R5 standard
input interfaces
* Communications I/O LAN device driver programming interface
* SCSI device configuration methods (IHVs)
* nlist () interface
* DCE threads

The resulting incompatibilities for the list above are not unique to Apple's AIX implementation but are due to incompatibilities between IBM implementation of AIX 3.2.5 and 4.1.

There are other factors affecting the availability of binary compatible applications for the Network Server AIX product. These include:

* Availability of ABI test suites
* Third-party (ISV) application testing and certification
* Performance tuning considerations
* Third-party marketing efforts (sales training, technical support)
* Support for third-party applications

Macintosh Applications
----------------------
Macintosh applications are not supported as the Macintosh Application Environment (MAE) is not supported on AIX.


Article Change History:
24 Jun 1996 - Corrected wording.



Published Date: Feb 18, 2012