Note that R6RS doesn't have cond-expand but there are other ways
(usually implementation-dependent) to get similar benefits (e.g. naming
libraries ".chezscheme.sls" instead of ".sls", etc.).
cond-expand isn't in the standard, but there's a very portable
implementation in chez-srfi.
The ".chezscheme.sls" trick also works but is not very convenient since
the non-portable parts have to be split at a library granularity.
cond-expand can be much finer-grained.
The mapping between library names and library representations (on the
file system, for example), is also not standardized.
True.
This tells us that there will always be the need of some external glue
code and that for truly portable libraries, cond-expand should be moved
out of the libraries and put into the meta information of the package
providing the library(s).
The chez-srfi cond-expand gives reasonable results in practice, but R7RS
portability is still significantly easier.
Storing portability info in package metadata is also reasonable, but
that is even more coarse-grained than the library level thing :)
Who tried to declare Racket as the standard Scheme implementation?
No-one declared anything; it just ended up as its own island with the
biggest community, and is now debating how many remnants of Scheme to keep.
The words "portable" and "standard" don't have universally agreed upon
meanings; e.g. some people are adamant that de facto standards are much
more important than de jure standards; other people strongly think the
opposite.
The Smalltalk community has long had an interest in portable systems
that reproduce exact behavior
R6RS also goes into this direction of portability. But it doesn't pay
the price of not being that fast, given that one of the fastest Scheme
implements R6RS.
Good point.
As a practical matter, most of the existing Scheme implementations are
not geared up to achieve that kind of exact portability. It takes a lot
of work, and the value is debated. SRFIs and R7RS in general do not
strive for exact portability; a more informal design process would be
even more forgiving about exactness.
In my experience the Scheme community is exceptionally good at getting
details right, so we still tend to spend careful time on the parts where
a uniform result really matters.