AIX Application Binary Compatibility
and the Apple Network Server

The Apple Network Server represents a new family of purpose-built, high-performance servers. The new systems are designed around an innovative, standards-based server architecture optimized for high performance and scalability while providing balance and flexibility. These advanced server capabilities reflect direct customer input, providing a full-featured server at low cost.

Most of the thousands of AIX® 4.1 applications running today on IBM's RS/6000 platforms should run on AIX for the Network Server 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.

This document will provide a brief introduction to Network Server hardware and the AIX 4.1 operating system and will discuss hardware and software considerations relating to application binary compatibility.



Apple Network Server with AIX 4.1

AIX - Industry Standard UNIX®

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 Spec 1170. AIX features supported include: Apple has hosted the AIX 4.1 operating system on high-performance hardware designed to be a great server platform. AIX 4.1 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 are also provided.

To meet these needs, the Network Server integrates a number of complex technologies from several sources.

Network Server Hardware

The following hardware features are important from the point of view of the software and may affect applications compatibility and performance.
  • 604 PowerPC CPU, 132Mhz or 150 Mhz
  • up to 1 MB level-two cache
  • two PCI expansion buses (6 slots)
  • integrated, on-board I/O
  • two fast and wide SCSI-2 controllers: 20 MBytes/sec/channel (internal devices only)
  • one SCSI-1 interface: 5 MBytes/sec (external devices only)
  • AAUI Ethernet interface (10 MBits/sec)
  • 2 DIN-8 serial ports
  • 8-bit (256 colors) SVGA video adapter
  • SWIM III floppy controller
  • Apple Desktop Bus interface
  • 80 character front-panel LCD for diagnostics
  • 32K NVRAM
  • three-position keyswitch
  • native boot using the Open Firmware model and device tree

  • Binary Compatibility Overview

    Binary compatibility means that a compiled program (the executable) can be taken from one platform to another platform without having to either recompile it or make source code changes. Most applications will be binary compatible with AIX 4.1 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 application layer In order to ensure application binary compatibility, Apple continues to work with many 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 consists of the AIX 4.1 application programming interfaces (API). Apple has added some additional interfaces to its value added subsystems (e.g., AppleTalk) and has by necessity deleted interfaces that support IBM-specific hardware.

    For UNIX users, the AIX 4.1 ABI provides 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 tomorrow's users today. Applications developed to the AIX 4.1 ABI should run unmodified on AIX for the Network Server.

    Application Programming 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 AIX API are key industry standards including:

    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. Apple is in the continous process of testing the AIX binary compatibility of the the Network Server platform and will provide more specific information on selected applications as it becomes available.


    Incompatible Applications

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

    The 604 processor

    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 hand-coded assembly or compiler options which result in instructions which are not implemented on the 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 PCI expansion bus

    The Network Server platform's principal hardware incompatibility with the existing base of AIX applications is its exclusive use of the PCI expansion bus. Many of the current AIX platforms from other vendors use IBM's MicroChannel Architecture (MCA) expansion bus or provide 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 established as a significant standard, and is working with third parties to promote the availability of PCI cards and drivers for the Network Server platform.

    The system API, including interfaces for drivers and kernel extensions

    Apple has adopted Open FirmWare to support PCI card self-configuration on the Network Server and future platforms. Device driver writers will need to develop Open FirmWare-based configuration methods to correctly invoke their drivers on the Network Server platform. The relevant Open Firmware issues are described in the Developer's Reference Guide for Apple Network Server, a document available from Apple.

    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 will 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. The resulting incompatibilities from the list above are not unique to Apple's AIX implementation, but rather are due to changes introduced by IBM's transition from AIX 3.2.5 to 4.1.

    There are other factors affecting the availability of binary-compatible applications for the Network Server.

    Macintosh Applications

    Mac OS-based applications are not supported on the Network Server, as the Macintosh Application Environment (MAE) is not supported on AIX.


    Conclusion

    Many AIX applications running on IBM's RS/6000 platform are binary compatible withe Network Server AIX 4.1 and will run without the need for recompilation or modification. However, some applications that run on AIX 4.1 on IBM's RS/6000 product will not automatically run on the Network Server running AIX 4.1. These applications are dependent upon certain hardware features which differ between the IBM AIX RS/6000 implementation and the Network Server. In such cases, these applications will need to be changed or recompiled before they can run on the Network Server. In particular, applications with specific device driver dependencies may not run on the Network Server because of the difference between the PCI bus architecture and the IBM AIX reference platform MCA bus architecture.

    It is expected that more applications will become available as emerging standards such as the AIX Multi-Vendor Program help to maintain and ensure compatibility between AIX implementations.

    A copy of the AIX Version 4.1 Porting Guide and other developer-oriented material is available on the World-Wide Web. The URL is http://www.developer.ibm.com. This material can also be obtained directly from your local IBM representative or branch office.










    Site Map - Search Tips - Index

    The Apple Store | Hot News | About Apple | Products | Support
    Design & Publishing | Education | Developer | Where to Buy | Home

    Contact Us
    Copyright 1999 Apple Computer, Inc. All rights reserved.


    © Apple Computer, Inc. 1996.
    ® AIX and PowerPC are registered trademarks of International Business Machines Corp., used under license therefrom.
    ® UNIX is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company, Limited.