The Common-Lisp-Posix project has two purposes:
The programming language will be Common-Lisp.
The target OSes will be all SuSv3/POSIX compliant OSes.
One reference implementation may use the UFFI package.
The Preface of the The Open Group Base Specifications, Issue 6 lists the following principle that guided the development of that standard:
The basic goal was to promote portability of application programs across UNIX system environments by developing a clear, consistent, and unambiguous standard for the interface specification of a portable operating system based on the UNIX system documentation. This standard codifies the common, existing definition of the UNIX system.
We keep this principle verbatim for this Common-Lisp API.
This standard defines an interface, not an implementation. No distinction is made between library functions and system calls; both are referred to as functions. No details of the implementation of any function are given (although historical practice is sometimes indicated in the RATIONALE section). Symbolic names are given for constants (such as signals and error numbers) rather than numbers.
We keep this principle verbatim for this Common-Lisp API.
This standard has been written so that a program written and translated for execution on one conforming implementation may also be translated for execution on another conforming implementation. This standard does not guarantee that executable (object or binary) code will execute under a different conforming implementation than that for which it was translated, even if the underlying hardware is identical.
We keep this principle verbatim for this Common-Lisp API.
The system interfaces and header definitions are written in terms of the standard C language as specified in the ISO C standard.
Of course, this principle is replaced by:
The system interfaces and header definitions are written in terms of the standard Common-Lisp language as specified in the ANSI Common Lisp standard.
There was no intention to specify all aspects of an operating system. System administration facilities and functions are excluded from this standard, and functions usable only by the superuser have not been included. Still, an implementation of the standard interface may also implement features not in this standard. This standard is also not concerned with hardware constraints or system maintenance.
We keep this principle verbatim for this Common-Lisp API.
In keeping with the historical design principles of the UNIX system, the mandatory core facilities of this standard have been kept as minimal as possible. Additional capabilities have been added as optional extensions.
We keep this principle verbatim for this Common-Lisp API.
The developers of this standard endeavored to make all specified functions implementable across a wide range of existing and potential systems, including:No direct references to this goal appear in this standard, but some results of it are mentioned in the Rationale (Informative) volume.
- All of the current major systems that are ultimately derived from the original UNIX system code (Version 7 or later)
- Compatible systems that are not derived from the original UNIX system code
- Emulations hosted on entirely different operating systems
- Networked systems
- Distributed systems
- Systems running on a broad range of hardware
We keep this principle verbatim for this Common-Lisp API.
There is no known POSIX API for Common-Lisp, no Historical Implementations.
However, beyond lispifying the C POSIX API, we endeavour to specify minimal change with respect to the C POSIX API: given some simple rules, a programmer knowing the C POSIX API should be able to program easily with the Common-Lisp POSIX API.
There is no known Common-Lisp application using a POSIX API, safe perhaps for a few applications using API such as the LINUX package in CLISP or the UNIX package in SBCL...