I've been thinking about the GC issue since it first came up. Even
though systems differ tremendously in what GC means to them, it might
make sense to provide a portable GC construct for use in portable code.
This would say that IF the implementation ever needs to do a time
consuming GC operation, this is the time to do it; if that doesn't make
sense in a given implementation, this would be a no-op. This would be
used in portable code that runs benchmarks, for example, to start the
system in as fresh a state as possible. It might also be used when a
program wants to initiate some short real-time operation that should not
be interrupted for GC once it has started. It's not useful for
everyone, but is useful in many systems and does not harm the rest.
I am somewhat more doubtful about the usefulness of BYE in any sort of
portable code. One could argue that it would give users a standard way
of getting out of Lisp on any system where that makes sense, and that it
always is best to have recognizable signs on the emergency exits.
-- Scott