[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Achieving portability, how?

There seem to be several ways to achieve portability:

(1) Require every implementation to provide a pure-COMMON-LISP package
that has no extensions. If a program runs in this it will run anywhere.

(2) Require one master host to provide a pure-COMMON-LISP package.
Everyone wishing to test portability must FTP the program to that host
and test portability there.

(3) Provide tools for examining the text (source) of a program and reporting
any non-portable syntax. These tools could be used anywhere.

(4) Provide hardcopy documentation as to what may be an extension in any
given implementation, but leave it to users to manually search their files
for such non-portable usage.

The recent concensus seems to be a combination of (1) and (4). Provide
a pure-COMMON-LISP package, but it may contain extra keyword arguments
beyond the spec, so users still have to manually search the manual for
this documentation and then manually search their programs for usage of
the extra stuff.

I think (4) in any signifincant amount is unacceptable. Either require
the pure-COMMON-LISP package to be identically the CLtL with no extensions
whatsoever, or use (3) instead of (4) to check for the exceptions;
or use (3) from the start with no deliberate exceptions. Of course there
will be some non-portable code that looks portable, nothing is perfect,
but an automated means that is as close to perfect portability-testing as
the state of the art permits should be our goal, instead of some half-baked
idea that is known from the start to be flawed in many ways.

(Opinion of REM%IMSSS@SU-AI)