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

Re: [scheme-reports-wg2] Closing SRFI-112 and voting on it for R7RS-large

On Sun, Sep 15, 2013 at 10:55 PM, John Cowan <cowan@xxxxxxxxxxxxxxxx> wrote:
> Faré scripsit:
>> For instance, implementing ASDF (for Common Lisp), what I really
>> needed is some kind of ABI-identifier so I may segregate compiled
>> files. The provided information does not allow to infer that: ABI may
>> change because you're linking to a different libc, using a different
>> C++ compiler, using a different compiler implementation strategy,
>> etc. These are not captured by any of the above elements.
>> Also, some standardization is often useful in the specific values to
>> be returned, e.g. "Linux" vs "linux", or "i386" vs "x86" vs "i686"  ...
dpk> In practice they should be fairly standard, based on
dpk> what the uname function (or equivalent) returns.

You'd be surprised how non-standard even THAT is.
Even from Linux to Linux you go from i386 to i686 depending on
some obscure options that mostly don't affect the ABI.
From one OS to the other, anything goes for the same architecture.
Returning the results of uname is not very useful.

In any case, in my years of tending to build issues
for the Common Lisp community, I have found that
all these introspection items from SRFI-112 are purely cosmetic,
and that the only programmatically useful abstraction was
an ABI identifier — and THAT was extremely useful
when handling any kind of implementation-specific cache
in multi-implementation code. And it cannot be computed
by composing the SRFI-112 functions alone.

cowan> The idea is to find such things in the list returned by (features).
cowan> That's what you use, either with cond or with cond-expand, to
cowan> conditionalize your code on specific ABIs, operating systems, etc.

Sounds good, except for the part where a list is used. Lists are so 1970s.
Even worse when you cannot expect them not to be side-effected.

>> Finally, I was expecting the equivalent of getenv to be provided,
>> maybe setenv too, on operating systems that have it (i.e. everyone
>> that matters today), returning trivial #f on other systems.

cowan> That'll be in the Posix library, I'm sure.

Fair enough.

cowan> But on the other hand, _still_ I persist in wondering whether folly must
cowan> always be our destiny, so I do what I can.  Throwing one stranded fish
cowan> back into the water may make no difference, but it makes a difference
cowan> to the fish.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Whatever you do will be insignificant, but it is very important that you do it.
                — Gandhi