On Mon, Oct 7, 2019 at 5:42 PM Lassi Kortela <xxxxxx@lassi.io> wrote:

Wow, thanks! I've used 112 as a FFI learning exercise.

Well, of course withdrawn SRFIs don't disappear.  Chicken's condition system is based on the withdrawn SRFI 12, for example.
 
Yeah, it's not meant to be executed. Just to identify the program.
Assume a third-party program knows how to use the interface of Gambit's
"gsc" command for example. Then it can find an executable like
"gsc-gambit" or whatever the name is on some system, and be confident
that since the version info says (command "gsc") it can use that command
with the "gsc" interface. Likewise, "csi" can be installed as "csi",
"csi4", "csi5", "chicken-csi" or something else; all of them would have
(command "csi").

While that's able and ingenious special pleading, I'm not sure it makes any sense.  Externally, you already know what the command is because you executed it with the -V argument; what you need is "scheme-id" to figure out what Scheme it is.  Internally, you don't care how to run yourself in 99% of cases.

At some point when implementing <https://github.com/lispunion/lila/>, I
realized it's best to just gather a big list of all known command names
ever, and try running all of them with version flags to find out who
they say they are.

There's going to be a lot of ad hoc things.  For example, I have a script "iron" on my system for executing IronScheme (whose command is "IronScheme.Console") with certain important switches; it passes all its arguments to the executable.  But it could have arguments of its own, which would mean that knowing how to talk to IronScheme just isn't enough.

Those can be done, but it's only half the battle. Userland ABI values
are not as standardized as CPU architectures or OS names. Would GNU
tuples have something we could go on? And GNU and BSD do not always like
each other's identifiers so there may have to be translation :-| Fun times.

Inevitably so.  The results may not always be what you want them to be.
 
As a separate issue, `uname -a` contains the machine name (uname -n)
which is mildly sensitive/personal/organizational information compared
to the other stuff. I deliberately left the username and computer name
out of the spec, though I'm not sure that's the right call.

Good point.  Never mind uname, then.



John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
XQuery Blueberry DOM
Entity parser dot-com
Abstract schemata / XPointer errata
Infoset Unicode BOM                                 --Richard Tobin