Specifications-Wanted

Specifications-Wanted

This is a collection of notes on Interface Specifications - both real and non-existent - which could benefit from some sort of community Standards.

Non-existent specifications need writing. Existing specifiations need adoption - either by the world at large, or by some perceived authority.

Foreign Function Interface

Most implementations offer one, and everybody seems to agree that a common one would be a good thing. UFFI already does something like this, but follows the lowest common denominator.

  • proposals needed

Socket Interface

Most implementations offer one, and everybody seems to agree that a common one would be a good thing. CLOCC has a portablity layer for several implementations. But it should be noted that parts of CLOCC are GPL'd - not all developers will be happy with that.

  • proposals needed

Lightweight Extensions

A number of macroes with common purpose, but differring names / interfaces exist in relatively common usage (eg. WITH-UNIQUE-NAMES / WITH-GENSYMS). They and other portable features might benefit from community canonization and a common package. CLOCC has somethings along these lines. These things need to be transformed from code to proposals. CLiki has others in more mature form, linked below. These would benefit from being written into a cohesive whole.

Defsystem

A number of implementations exist: for example MK:DEFSYSTEM, ASDF. Are they specified anywhere?

OS Interfaces

POSIX, Windows, Mac OS-X. (Or does POSIX suffice for Mac nowadays?) A common subset of functionality found on all major platforms might be good as well.

Shell-like extensions

Running other programs, opening and listening to pipes. Most implementations provide things like this, as evidenced by this portability layer by CLOCC.

  • proposals needed

Pathname extensions

Of course, these might more naturally be part of an OS interface. CLOCC has some portablity code. Kent Pitman commented on Genera pathnames on the comp.lang.lisp.

  • proposals needed

User Definable Streams

Multiprocessing

Many implementations offer support, but with divergent interfaces. Once again, there is something related in CLOCC. Also, ACL-COMPAT offers something in this direction.