# README,v 1.4 2000/07/28 23:13:51 levine Exp

Copyright (c) 2000  Center for Distributed Object Computing,
Washington University, St. Louis, Missouri, USA.

This is POSIX ACE (PACE).  It is based on ACE, the Adaptive
Communications Environment, developed by Doug Schmidt and the
Distributed Object Computing Group at Washington University and the
University of California, Irvine.  Please see the ACE copyright
notice, available at
http://www.cs.wustl.edu/~schmidt/ACE_wrappers/COPYING.

PACE is intended for lightweight and/or verified systems.  It offers
these benefits:

* A strict POSIX.1-like, low-level interface.  Its interface is "POSIX
  compatible"; by that we mean as close to POSIX.1 as it can be, given
  that PACE is not an operating system.  And, to avoid name conflicts
  with OS APIs, all low-level PACE function names have the pace_
  prefix.

* The low-level interface is partitioned into multiple files, one
  per POSIX.1 section.

* The low-level interface is written in C, so that it can be used in
  both C and C++ programs.

* PACE (on most platforms) does not require the use of multiple
  inheritance, static objects, exception handling, or other C++
  language constructs that impair code size and/or run-time performance.


PACE also insulates applications from the personalities of operating
systems.  For example:

* SunOS 5.7's intro (3) man page states that _POSIX_PTHREAD_SEMANTICS
  and _REENTRANT flags are automatically turned on by defining
  _POSIX_C_SOURCE flag with a value greater than or equal to 199506L.
  However, that doesn't appear to happen, so PACE does it.

* On LynxOS 3.1.0 and Compaq Tru64, several POSIX functions prototypes
  are missing const qualifiers.  PACE provides the proper function
  prototypes (and its implementation casts as necessary for
  compatibility).

* LynxOS 3.1.0 has a non-POSIX signal () interface; the handler function
  prototype is not void (*) (int).  PACE adapts its interface to the
  POSIX standard interface.

